A filter class designed to perform multi-band separation using the TPT (Topology-Preserving Transform) structure. More...
#include <juce_LinkwitzRileyFilter.h>
Public Types | |
using | Type = LinkwitzRileyFilterType |
Public Member Functions | |
LinkwitzRileyFilter () | |
Constructor. More... | |
SampleType | getCutoffFrequency () const noexcept |
Returns the cutoff frequency of the filter. More... | |
Type | getType () const noexcept |
Returns the type of the filter. More... | |
void | prepare (const ProcessSpec &spec) |
Initialises the filter. More... | |
template<typename ProcessContext > | |
void | process (const ProcessContext &context) noexcept |
Processes the input and output samples supplied in the processing context. More... | |
SampleType | processSample (int channel, SampleType inputValue) |
Performs the filter operation on a single sample at a time. More... | |
void | processSample (int channel, SampleType inputValue, SampleType &outputLow, SampleType &outputHigh) |
Performs the filter operation on a single sample at a time, and returns both the low-pass and the high-pass outputs of the TPT structure. More... | |
void | reset () |
Resets the internal state variables of the filter. More... | |
void | setCutoffFrequency (SampleType newCutoffFrequencyHz) |
Sets the cutoff frequency of the filter in Hz. More... | |
void | setType (Type newType) |
Sets the filter type. More... | |
void | snapToZero () noexcept |
Ensure that the state variables are rounded to zero if the state variables are denormals. More... | |
Private Member Functions | |
void | update () |
Private Attributes | |
SampleType | cutoffFrequency = 2000.0 |
Type | filterType = Type::lowpass |
SampleType | g |
SampleType | h |
SampleType | R2 |
std::vector< SampleType > | s1 |
std::vector< SampleType > | s2 |
std::vector< SampleType > | s3 |
std::vector< SampleType > | s4 |
double | sampleRate = 44100.0 |
A filter class designed to perform multi-band separation using the TPT (Topology-Preserving Transform) structure.
Linkwitz-Riley filters are widely used in audio crossovers that have two outputs, a low-pass and a high-pass, such that their sum is equivalent to an all-pass filter with a flat magnitude frequency response. The Linkwitz-Riley filters available in this class are designed to have a -24 dB/octave slope (LR 4th order).
@tags{DSP}
using juce::dsp::LinkwitzRileyFilter< SampleType >::Type = LinkwitzRileyFilterType |
juce::dsp::LinkwitzRileyFilter< SampleType >::LinkwitzRileyFilter | ( | ) |
Constructor.
|
inlinenoexcept |
Returns the cutoff frequency of the filter.
References juce::dsp::LinkwitzRileyFilter< SampleType >::cutoffFrequency.
|
inlinenoexcept |
Returns the type of the filter.
References juce::dsp::LinkwitzRileyFilter< SampleType >::filterType.
void juce::dsp::LinkwitzRileyFilter< SampleType >::prepare | ( | const ProcessSpec & | spec | ) |
Initialises the filter.
|
inlinenoexcept |
Processes the input and output samples supplied in the processing context.
References jassert, juce::dsp::LinkwitzRileyFilter< SampleType >::processSample(), juce::dsp::LinkwitzRileyFilter< SampleType >::s1, and juce::dsp::LinkwitzRileyFilter< SampleType >::snapToZero().
SampleType juce::dsp::LinkwitzRileyFilter< SampleType >::processSample | ( | int | channel, |
SampleType | inputValue | ||
) |
Performs the filter operation on a single sample at a time.
Referenced by juce::dsp::LinkwitzRileyFilter< SampleType >::process().
void juce::dsp::LinkwitzRileyFilter< SampleType >::processSample | ( | int | channel, |
SampleType | inputValue, | ||
SampleType & | outputLow, | ||
SampleType & | outputHigh | ||
) |
Performs the filter operation on a single sample at a time, and returns both the low-pass and the high-pass outputs of the TPT structure.
void juce::dsp::LinkwitzRileyFilter< SampleType >::reset | ( | ) |
Resets the internal state variables of the filter.
void juce::dsp::LinkwitzRileyFilter< SampleType >::setCutoffFrequency | ( | SampleType | newCutoffFrequencyHz | ) |
Sets the cutoff frequency of the filter in Hz.
void juce::dsp::LinkwitzRileyFilter< SampleType >::setType | ( | Type | newType | ) |
Sets the filter type.
|
noexcept |
Ensure that the state variables are rounded to zero if the state variables are denormals.
This is only needed if you are doing sample by sample processing.
Referenced by juce::dsp::LinkwitzRileyFilter< SampleType >::process().
|
private |
|
private |
|
private |
Referenced by juce::dsp::LinkwitzRileyFilter< SampleType >::getType().
|
private |
|
private |
|
private |
|
private |
Referenced by juce::dsp::LinkwitzRileyFilter< SampleType >::process().
|
private |
|
private |
|
private |
|
private |