Releases: berndporr/iir1
Merged Biquad classes
There have been three different classes representing Biquads. I merged them into one. This should not break any program as the 3 classes were essentially identical.
Stage, Biquad and BiquadBase ---> Biquad.
Custom Python coefficients
I have removed the Elliptic / Legendre calculations and instead added an easy import from Python for these more obscure filters. Given that they are rarely used and the design was incomplete I leave it to the much better python design commands. There is demo code which shows how to generate the coefficients and copy/paste them over to C++.
IIRNotch added
The RBJ filters have now also the filter known as "IIRNotch" which is a pure digital notch with a Q factor which can be used to get maximum rejection and narrow bandwidth. iirdemo shows an example.
Documentation improvements / Exceptions
All functions which are relevant to the user are now properly documented and doxygen generates the appropriate documentation for it: in HTML and as a PDF via LaTeX.
Exceptions are now thrown if any frequency provided via setup() is above the Nyquist frequency.
Simplified setup()
The setup command no longer requires the filter order:
const int order = 4;
// 1st up: Butterworth lowpass
Iir::Butterworth::LowPass<order> f;
const float samplingrate = 1000; // Hz
const float cutoff_frequency = 100; // Hz
f.setup (samplingrate, cutoff_frequency);
this makes it much safer in that the filter order is now only specified once in a template argument and then remembered by the setup
command.
RBJ bugfix
Removed assert statements which cause wrong asserts if compiled as s debug version.
Bug fix release
Fixed a bug which prevented it from compiling under the most recent gcc versions.
minor RBJ improvements / simplifications
RBJ is now always using DirectFormI internally as recommended by the original author.
Added also a reset function to the RBJ so that also there the delay line can be set to zero.
CMake, RBJ filters, unit tests and doc
Now unit tests are included which check that after an impulse input the filters relax to zero and won't generate NaN.
The RBJ filters now also have a "filter" command included which previously had to be added manually. With that addition the RBJs behave as all the other filter types and are no longer different in any way. Generally, a "setup" command does the trick. RBJ filters are widely used for audio processing. They are all 2nd order. Check them out.
The build system is now CMake so that for all different platforms just one build system is needed.
A couple of comments have been added to the header files to make it easier for doxygen to create meaningful documentation.
Both static and dynamic libraries are generated. For Linux/Mac the dynamic ones are recommended (.so) and for Windows the static one (.lib).
bug fix release
This library is based on DSPfilters by Vinnie Falco and there has been a bug report in the RBJ filters which I've worked into this library. Also there were a couple of functions which are not used but actually had bugs. I've removed these.