DSP Library
Signalsmith AudioThis is a set of C++11 header-only classes/templates to support certain DSP tasks (mostly audio).
It's still growing, but currently includes:
- Delay tools (circular buffers, single/multi-channel delay-lines)
- Interpolators (Lagrange, polyphase, Kaiser-sinc)
- Envelope tools (e.g. box-filter, peak-hold)
- FFT and spectral processing (including multi-channel STFT)
How to use
Clone using Git:
Include the appropriate header file, and start using classes:
API docs
Check out the API documentation (Doxygen) for detailed information.
Testing
Tests (and scripts to plot graphs etc.) are in a separate repository, to keep the main repo neater:
Goals
Where reasonable, the tests should measure actual output quality (not just basic correctness and smoke-tests).
For example, here's the aliasing/accuracy performance of a delay line with windowed-sinc interpolation:
The automated tests check this performance for various input bandwidths, using a table like this:
Running the tests
To run the tests:
To run just the tests in tests/delay/
(or similar):
There are a few other targets (e.g. for plotting graphs) - check the Makefile
if you're curious.
License
The main library is MIT licensed (see LICENSE.txt
in the main repo), but the tests, docs and support scripts are licensed differently (just for developing/testing the library).
We're pretty flexible though - if you need something else, get in touch.