NonIntegerSRC
NonIntegerSRC copied to clipboard
Faster Non-Integer Sample Rate Conversion
Non-Integer Sample Rate Conversion
This repository contains a comparison of sample-rate conversion (SRC) algorithms, with an emphasis on performance for non-integer SRC factors. Currently two oversampling algorithms are implemented:
- libsamplerate (Sinc interpolation, using
SRC_SINC_FASTESTmode) - Holters-Parker Resampler (using 4th-order Butterworth filters)
- Lanczos Resampler (borrowed from the Surge Synthesizer project)
Results:
On my Linux machine, the HP resampler is faster than libsamplerate by the following amounts:

Building
$ cmake -Bbuild
$ cmake --build build --config Release
Then to run the testing tool, run
./build/src_test.
Credits
- libsamplerate
- The Holters-Parker Resampler is based on the filters derived in their 2018 DAFx paper
- matplotlibcpp
- The HP-Resampler, and Lanczos Resampler use a ton of code borrowed from the Surge Synthesizer project (in particular, the
SSEComplexandLanczosResamplerclasses written by Paul Walker)
License
The code in this repository is licensed under the GPLv3. Enjoy!