chowdsp_utils
chowdsp_utils copied to clipboard
Filter differences between juce Butterworth filters
Hi, thanks for making this library, I was just wondering what the difference were between the filters you have defined here and those that are implemented in juce like the Butterworth filter.
Thanks! Dave.
Sure, so there's a few differences:
JUCE contains some "general" filter types
- FIR filter
- IIR filter (with coefficient makers for basic filter types)
- State Variable Filters
- Linkwitz-Riley Filter (4th-order)
chowdsp_filters has these types of filters as well, but with a few differences:
- FIR filter: our implementation uses SIMD (on Windows/Linux) and Accelerate (on Mac) to get better performance. To get a rough idea of the performance difference, you can take a look at the relevant benchmarks.
- IIR Filter
chowdsp::IIRFilterhas a filter order that is fixed at compile-time- Coefficient makers for basic filter types are accessible through sub-classes
- I believe our coefficient makers use some slightly different equations than the JUCE implementation
- State Variable Filters: our implementation uses a slightly different derivation as well, and has a "multi-mode" mode.
- Linkwitz-Riley Filter: our implementation covers more filter orders
This library also has some higher-order filter types:
chowdsp::NthOrderFilter: a higher-order filter based on State Variable Filterschowdsp::ButterworthFilter: a traditional Nth-order Butterworth Filterchowdsp::ChebyshevIIFilter: a traditional Nth-order type-II Chebyshev Filterchowdsp::EllipticFilter: a traditional Nth-order Elliptic Filter
And then there's a few other odds and ends, which are probably not needed as often, but can be kind of fun:
chowdsp::ARPFilter: a linear emulation of the ARP 1047 multi-mode filterchowdsp::WernerFilter: an implementation of the filter from this DAFx paper, but with a different derivation than the one in the paper.chowdsp::FractionalOrderFilter: an approximate fraction-order filter based on this DAFx paperchowdsp::ModFilterWrapper: wraps achowdsp::IIRFilteras a state variable filter to allow for fast modulation