32template <
typename SampleType>
39template <
typename SampleType>
45template <
typename SampleType>
55template <
typename SampleType>
72template <
typename SampleType>
76 std::fill (
s->begin(),
s->end(),
static_cast<SampleType
> (0));
79template <
typename SampleType>
83 for (
auto& element : *
s)
88template <
typename SampleType>
91 auto yH = (inputValue - (
R2 +
g) *
s1[(size_t) channel] -
s2[(size_t) channel]) *
h;
93 auto yB =
g * yH +
s1[(size_t) channel];
94 s1[(size_t) channel] =
g * yH + yB;
96 auto yL =
g * yB +
s2[(size_t) channel];
97 s2[(size_t) channel] =
g * yB + yL;
100 return yL -
R2 * yB + yH;
102 auto yH2 = ((
filterType == Type::lowpass ? yL : yH) - (
R2 +
g) *
s3[(size_t) channel] -
s4[(size_t) channel]) *
h;
104 auto yB2 =
g * yH2 +
s3[(size_t) channel];
105 s3[(size_t) channel] =
g * yH2 + yB2;
107 auto yL2 =
g * yB2 +
s4[(size_t) channel];
108 s4[(size_t) channel] =
g * yB2 + yL2;
110 return filterType == Type::lowpass ? yL2 : yH2;
113template <
typename SampleType>
116 auto yH = (inputValue - (
R2 +
g) *
s1[(size_t) channel] -
s2[(size_t) channel]) *
h;
118 auto yB =
g * yH +
s1[(size_t) channel];
119 s1[(size_t) channel] =
g * yH + yB;
121 auto yL =
g * yB +
s2[(size_t) channel];
122 s2[(size_t) channel] =
g * yB + yL;
124 auto yH2 = (yL - (
R2 +
g) *
s3[(size_t) channel] -
s4[(size_t) channel]) *
h;
126 auto yB2 =
g * yH2 +
s3[(size_t) channel];
127 s3[(size_t) channel] =
g * yH2 + yB2;
129 auto yL2 =
g * yB2 +
s4[(size_t) channel];
130 s4[(size_t) channel] =
g * yB2 + yL2;
133 outputHigh = yL -
R2 * yB + yH - yL2;
136template <
typename SampleType>
140 R2 = (SampleType) std::sqrt (2.0);
141 h = (SampleType) (1.0 / (1.0 +
R2 *
g +
g *
g));
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_LinkwitzRileyFilter.h:51
void prepare(const ProcessSpec &spec)
Definition juce_LinkwitzRileyFilter.cpp:56
void setType(Type newType)
Definition juce_LinkwitzRileyFilter.cpp:40
std::vector< SampleType > s2
Definition juce_LinkwitzRileyFilter.h:135
void update()
Definition juce_LinkwitzRileyFilter.cpp:137
void reset()
Definition juce_LinkwitzRileyFilter.cpp:73
SampleType h
Definition juce_LinkwitzRileyFilter.h:134
SampleType R2
Definition juce_LinkwitzRileyFilter.h:134
LinkwitzRileyFilter()
Definition juce_LinkwitzRileyFilter.cpp:33
SampleType processSample(int channel, SampleType inputValue)
Definition juce_LinkwitzRileyFilter.cpp:89
std::vector< SampleType > s3
Definition juce_LinkwitzRileyFilter.h:135
std::vector< SampleType > s1
Definition juce_LinkwitzRileyFilter.h:135
SampleType cutoffFrequency
Definition juce_LinkwitzRileyFilter.h:138
Type filterType
Definition juce_LinkwitzRileyFilter.h:139
std::vector< SampleType > s4
Definition juce_LinkwitzRileyFilter.h:135
void setCutoffFrequency(SampleType newCutoffFrequencyHz)
Definition juce_LinkwitzRileyFilter.cpp:46
SampleType g
Definition juce_LinkwitzRileyFilter.h:134
void snapToZero() noexcept
Definition juce_LinkwitzRileyFilter.cpp:80
double sampleRate
Definition juce_LinkwitzRileyFilter.h:137
LinkwitzRileyFilterType Type
Definition juce_LinkwitzRileyFilter.h:54
unsigned s
Definition inflate.c:1555
void snapToZero(SIMDRegister< Type > &) noexcept
Definition juce_SIMDRegister_Impl.h:167
Definition juce_AudioBlock.h:29
Definition carla_juce.cpp:31
bool isPositiveAndBelow(Type1 valueToTest, Type2 upperLimit) noexcept
Definition juce_MathsFunctions.h:279
static constexpr FloatType pi
Definition juce_MathsFunctions.h:382
Definition juce_ProcessContext.h:38
uint32 numChannels
Definition juce_ProcessContext.h:46
double sampleRate
Definition juce_ProcessContext.h:40