Easy-to-use DSP filter code, written in C++, with low, high, and band-pass variants. Implements a windowed sync FIR using the overlap-and-add method.
FIRFilter* filter = &FIRFilter::getSingleton();
//Low Pass:
filter->initializeAsLowPass(44100.0f, //sample rate
256, //frame length
4000.0f, //cutoff frequency
1000.0f); //transition bandwidth
//High Pass:
filter->initializeAsHighPass(44100.0, //sample rate
256, //frame length
1000.0f, //cutoff frequency
1000.0f); //transition bandwidth
//Band Pass:
filter->initializeAsBandPass(44100.0, //sample rate
256, //frame length
500.0f, //low cutoff frequency
200.0f, //low transition bandwidth
4000.0f, //high cutoff frequency
200.0f); //high transition bandwidth
//Demo/Test:
float frequency = 4500.0f;
float duration = 0.010f;
filter->test(frequency, duration);
//filter->test() calls:
applyFilter(const float inputFrameSamples[],
float outputFrameSamples[])
//...which can be in-place w.r.t. input and output.