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_FASTEST
mode) - 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
SSEComplex
andLanczosResampler
classes written by Paul Walker)
License
The code in this repository is licensed under the GPLv3. Enjoy!