This class provides a set of functions which generates FIR::Coefficients and IIR::Coefficients, of highorder lowpass filters. More...
Classes  
struct  IIRPolyphaseAllpassStructure 
The structure returned by the function designIIRLowpassHalfBandPolyphaseAllpassMethod. More...  
Public Types  
using  FIRCoefficientsPtr = typename FIR::Coefficients< FloatType >::Ptr 
using  IIRCoefficients = typename IIR::Coefficients< FloatType > 
using  WindowingMethod = typename WindowingFunction< FloatType >::WindowingMethod 
Static Public Member Functions  
static FIRCoefficientsPtr  designFIRLowpassWindowMethod (FloatType frequency, double sampleRate, size_t order, WindowingMethod type, FloatType beta=static_cast< FloatType >(2)) 
This method generates a FIR::Coefficients for a lowpass filter, using the windowing design method, applied to a sinc impulse response. More...  
static FIRCoefficientsPtr  designFIRLowpassKaiserMethod (FloatType frequency, double sampleRate, FloatType normalizedTransitionWidth, FloatType attenuationdB) 
This a variant of the function designFIRLowpassWindowMethod, which allows the user to specify a transition width and an attenuation in dB, to get a lowpass filter using the Kaiser windowing function, with calculated values of the filter order and of the beta parameter, to satisfy the constraints. More...  
static FIRCoefficientsPtr  designFIRLowpassTransitionMethod (FloatType frequency, double sampleRate, size_t order, FloatType normalizedTransitionWidth, FloatType spline) 
This method is also a variant of the function designFIRLowpassWindowMethod, using a rectangular window as a basis, and a spline transition between the pass band and the stop band, to reduce the Gibbs phenomenon. More...  
static FIRCoefficientsPtr  designFIRLowpassLeastSquaresMethod (FloatType frequency, double sampleRate, size_t order, FloatType normalizedTransitionWidth, FloatType stopBandWeight) 
This method generates a FIR::Coefficients for a lowpass filter, by minimizing the average error between the generated filter and an ideal one using the least squares error criterion and matrices operations. More...  
static FIRCoefficientsPtr  designFIRLowpassHalfBandEquirippleMethod (FloatType normalizedTransitionWidth, FloatType attenuationdB) 
This method generates a FIR::Coefficients for a lowpass filter, with a cutoff frequency at half band, using an algorithm described in the article "Design of HalfBand FIR Filters for Signal Compression" from Pavel Zahradnik, to get an equiripple like high order FIR filter, without the need of an iterative method and convergence failure risks. More...  
static Array< IIRCoefficients >  designIIRLowpassHighOrderButterworthMethod (FloatType frequency, double sampleRate, FloatType normalizedTransitionWidth, FloatType passbandAttenuationdB, FloatType stopbandAttenuationdB) 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the pass band and in the stop band. More...  
static Array< IIRCoefficients >  designIIRLowpassHighOrderChebyshev1Method (FloatType frequency, double sampleRate, FloatType normalizedTransitionWidth, FloatType passbandAttenuationdB, FloatType stopbandAttenuationdB) 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the stop band only. More...  
static Array< IIRCoefficients >  designIIRLowpassHighOrderChebyshev2Method (FloatType frequency, double sampleRate, FloatType normalizedTransitionWidth, FloatType passbandAttenuationdB, FloatType stopbandAttenuationdB) 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the pass band only. More...  
static Array< IIRCoefficients >  designIIRLowpassHighOrderEllipticMethod (FloatType frequency, double sampleRate, FloatType normalizedTransitionWidth, FloatType passbandAttenuationdB, FloatType stopbandAttenuationdB) 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIR::Filters, providing a minimum phase lowpass filter with ripples in both the pass band and in the stop band. More...  
static IIRPolyphaseAllpassStructure  designIIRLowpassHalfBandPolyphaseAllpassMethod (FloatType normalizedTransitionWidth, FloatType stopbandAttenuationdB) 
This method generates arrays of IIR::Coefficients for a lowpass filter, with a cutoff frequency at half band, using an algorithm described in the article "Digital Signal Processing Schemes for efficient interpolation and decimation" from Pavel Valenzuela and Constantinides. More...  
Detailed Description
template<typename FloatType>
struct dsp::FilterDesign< FloatType >
This class provides a set of functions which generates FIR::Coefficients and IIR::Coefficients, of highorder lowpass filters.
They can be used for processing directly audio as an equalizer, in resampling algorithms etc.
see FIRFilter::Coefficients, FIRFilter, WindowingFunction, IIRFilter::Coefficients, IIRFilter
Member Typedef Documentation
◆ FIRCoefficientsPtr
using dsp::FilterDesign< FloatType >::FIRCoefficientsPtr = typename FIR::Coefficients<FloatType>::Ptr 
◆ IIRCoefficients
using dsp::FilterDesign< FloatType >::IIRCoefficients = typename IIR::Coefficients<FloatType> 
◆ WindowingMethod
using dsp::FilterDesign< FloatType >::WindowingMethod = typename WindowingFunction<FloatType>::WindowingMethod 
Member Function Documentation
◆ designFIRLowpassWindowMethod()

static 
This method generates a FIR::Coefficients for a lowpass filter, using the windowing design method, applied to a sinc impulse response.
It is one of the simplest method used to generate a high order lowpass filter, which has the downside of needing more coefficients than more complex method to perform a given attenuation in the stop band.
It generates linear phase filters coefficients.
Note : the flatTop WindowingMethod generates an impulse response with a maximum amplitude higher than one, and might be normalized if necessary depending on the applications.
 Parameters

frequency the cutoff frequency of the lowpass filter sampleRate the sample rate being used in the filter design order the order of the filter type the type, must be a WindowingFunction::WindowingType beta an optional additional parameter useful for the Kaiser windowing function
◆ designFIRLowpassKaiserMethod()

static 
This a variant of the function designFIRLowpassWindowMethod, which allows the user to specify a transition width and an attenuation in dB, to get a lowpass filter using the Kaiser windowing function, with calculated values of the filter order and of the beta parameter, to satisfy the constraints.
It generates linear phase filters coefficients.
 Parameters

frequency the cutoff frequency of the lowpass filter sampleRate the sample rate being used in the filter design normalizedTransitionWidth the normalized size between 0 and 0.5 of the transition between the pass band and the stop band attenuationdB the attenuation in dB expected in the stop band
◆ designFIRLowpassTransitionMethod()

static 
This method is also a variant of the function designFIRLowpassWindowMethod, using a rectangular window as a basis, and a spline transition between the pass band and the stop band, to reduce the Gibbs phenomenon.
It generates linear phase filters coefficients.
 Parameters

frequency the cutoff frequency of the lowpass filter sampleRate the sample rate being used in the filter design order the order of the filter normalizedTransitionWidth the normalized size between 0 and 0.5 of the transition between the pass band and the stop band spline between 1.0 and 4.0, indicates how much the transition is curved, with 1.0 meaning a straight line
◆ designFIRLowpassLeastSquaresMethod()

static 
This method generates a FIR::Coefficients for a lowpass filter, by minimizing the average error between the generated filter and an ideal one using the least squares error criterion and matrices operations.
It generates linear phase filters coefficients.
 Parameters

frequency the cutoff frequency of the lowpass filter sampleRate the sample rate being used in the filter design order the order of the filter normalizedTransitionWidth the normalized size between 0 and 0.5 of the transition between the pass band and the stop band stopBandWeight between 1.0 and 100.0, indicates how much we want attenuation in the stop band, against some oscillation in the pass band
◆ designFIRLowpassHalfBandEquirippleMethod()

static 
This method generates a FIR::Coefficients for a lowpass filter, with a cutoff frequency at half band, using an algorithm described in the article "Design of HalfBand FIR Filters for Signal Compression" from Pavel Zahradnik, to get an equiripple like high order FIR filter, without the need of an iterative method and convergence failure risks.
It generates linear phase filters coefficients.
 Parameters

normalizedTransitionWidth the normalized size between 0 and 0.5 of the transition between the pass band and the stop band attenuationdB the attenuation in dB expected in the stop band
◆ designIIRLowpassHighOrderButterworthMethod()

static 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the pass band and in the stop band.
The algorithms are based on "Lecture Notes on Elliptic Filter Design" by Sophocles J. Orfanidis.
 Parameters

frequency the cutoff frequency of the lowpass filter sampleRate the sample rate being used in the filter design normalizedTransitionWidth the normalized size between 0 and 0.5 of the transition between the pass band and the stop band passbandAttenuationdB the lowest attenuation in dB expected in the pass band stopbandAttenuationdB the attenuation in dB expected in the stop band
◆ designIIRLowpassHighOrderChebyshev1Method()

static 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the stop band only.
The algorithms are based on "Lecture Notes on Elliptic Filter Design" by Sophocles J. Orfanidis.
 Parameters

frequency the cutoff frequency of the lowpass filter sampleRate the sample rate being used in the filter design normalizedTransitionWidth the normalized size between 0 and 0.5 of the transition between the pass band and the stop band passbandAttenuationdB the lowest attenuation in dB expected in the pass band stopbandAttenuationdB the attenuation in dB expected in the stop band
◆ designIIRLowpassHighOrderChebyshev2Method()

static 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIRFilters, providing a minimum phase lowpass filter without any ripple in the pass band only.
The algorithms are based on "Lecture Notes on Elliptic Filter Design" by Sophocles J. Orfanidis.
 Parameters

frequency the cutoff frequency of the lowpass filter sampleRate the sample rate being used in the filter design normalizedTransitionWidth the normalized size between 0 and 0.5 of the transition between the pass band and the stop band passbandAttenuationdB the lowest attenuation in dB expected in the pass band stopbandAttenuationdB the attenuation in dB expected in the stop band
◆ designIIRLowpassHighOrderEllipticMethod()

static 
This method returns an array of IIR::Coefficients, made to be used in cascaded IIR::Filters, providing a minimum phase lowpass filter with ripples in both the pass band and in the stop band.
The algorithms are based on "Lecture Notes on Elliptic Filter Design" by Sophocles J. Orfanidis.
 Parameters

frequency the cutoff frequency of the lowpass filter sampleRate the sample rate being used in the filter design normalizedTransitionWidth the normalized size between 0 and 0.5 of the transition between the pass band and the stop band passbandAttenuationdB the lowest attenuation in dB expected in the pass band stopbandAttenuationdB the attenuation in dB expected in the stop band
◆ designIIRLowpassHalfBandPolyphaseAllpassMethod()

static 
This method generates arrays of IIR::Coefficients for a lowpass filter, with a cutoff frequency at half band, using an algorithm described in the article "Digital Signal Processing Schemes for efficient interpolation and decimation" from Pavel Valenzuela and Constantinides.
The result is a IIRPolyphaseAllpassStructure object.
The two members of this structure directPath and delayedPath are arrays of IIR::Coefficients, made of polyphase second order allpass filters and an additional delay in the second array, that can be used in cascaded filters processed in two parallel paths, which must be summed at the end to get the high order efficient lowpass filtering.
The gain of the resulting passband is 6 dB, so don't forget to compensate it if you want to use that method for something else than two times oversampling.
 Parameters

normalizedTransitionWidth the normalized size between 0 and 0.5 of the transition between the pass band and the stop band stopbandAttenuationdB the attenuation in dB expected in the stop band
The documentation for this struct was generated from the following file:
Generated on Fri Jan 12 2018 09:51:25 for JUCE by 1.8.13