dofuuz/soxr
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
This is a patched version of libsoxr, focused on bug fixes and build improvements. https://github.com/dofuuz/soxr Summary of Changes: * Fix builds (CMake >= 4.0, AArch64, ppc64le, WebAssembly) * Enable optimization on AArch64 (over 2x speed-up) * Fix the periodic 0s bug in dithering * Make int16 output deterministic for reproducibility Detailed Patch Notes: https://dofuuz.github.io/dsp/2026/05/22/libsoxr-patch-notes.html Original Project: https://sourceforge.net/projects/soxr/ ---- SoX Resampler Library Copyright (c) 2007-18 robs@users.sourceforge.net The SoX Resampler library `libsoxr' performs one-dimensional sample-rate conversion -- it may be used, for example, to resample PCM-encoded audio. For higher-dimensional resampling, such as for visual-image processing, you should look elsewhere. It aims to give fast¹ and very high quality² results for any constant (rational or irrational) resampling ratio. Phase-response, preserved bandwidth, aliasing, and rejection level parameters are all configurable; alternatively, simple `preset' configurations may be selected. A variable-rate resampling mode of operation is also included. The resampler is currently available either as part of `libsox' (the audio file-format and effect library), or stand-alone as `libsoxr' (this package). The interfaces to libsox and libsoxr are slightly different, with that of libsoxr designed specifically for resampling. An application requiring support for other effects, or for reading-from or writing-to audio files or devices, should use libsox (or other libraries such as libsndfile or libavformat). Libsoxr provides a simple API that allows interfacing using the most commonly-used sample formats and buffering schemes: sample-formats may be either floating-point or integer, and multiple channels either interleaved or split in separate buffers. The API is documented in the header file `soxr.h', together with sample code found in the 'examples' directory. For compatibility with the popular `libsamplerate' library, the header file `soxr-lsr.h' is provided and may be used as an alternative API.³ Note however, that libsoxr does not provide a full emulation of libsamplerate and that using this approach, only a sub-set of libsoxr's features are available. The design was inspired by Laurent De Soras' paper `The Quest For The Perfect Resampler', http://ldesoras.free.fr/doc/articles/resampler-en.pdf; in essence, it combines Julius O. Smith's `Bandlimited Interpolation' technique (https://ccrma.stanford.edu/~jos/resample/resample.pdf) with FFT- based over-sampling. Note that for real-time resampling, libsoxr may have a higher latency than non-FFT based resamplers. For example, when using the `High Quality' configuration to resample between 44100Hz and 48000Hz, the latency is around 1000 output samples, i.e. roughly 20ms (though passband and FFT- size configuration parameters may be used to reduce this figure). For build and installation instructions, see the file `INSTALL'; for copyright and licensing information, see the file `LICENCE'. For support and new versions, see https://soxr.sourceforge.net ________ ¹ For example, multi-channel resampling can utilise multiple CPU-cores. ² Bit-perfect within practical occupied-bandwidth limits. ³ For details of that API, see http://www.mega-nerd.com/SRC/api.html.