32template <
typename SampleType>
45template <
typename SampleType>
53 case Mode::LPF12:
A = {{ SampleType (0), SampleType (0), SampleType (1), SampleType (0), SampleType (0) }};
comp = SampleType (0.5);
break;
54 case Mode::HPF12:
A = {{ SampleType (1), SampleType (-2), SampleType (1), SampleType (0), SampleType (0) }};
comp = SampleType (0);
break;
55 case Mode::BPF12:
A = {{ SampleType (0), SampleType (0), SampleType (-1), SampleType (1), SampleType (0) }};
comp = SampleType (0.5);
break;
56 case Mode::LPF24:
A = {{ SampleType (0), SampleType (0), SampleType (0), SampleType (0), SampleType (1) }};
comp = SampleType (0.5);
break;
57 case Mode::HPF24:
A = {{ SampleType (1), SampleType (-4), SampleType (6), SampleType (-4), SampleType (1) }};
comp = SampleType (0);
break;
58 case Mode::BPF24:
A = {{ SampleType (0), SampleType (0), SampleType (1), SampleType (-2), SampleType (1) }};
comp = SampleType (0.5);
break;
62 static constexpr auto outputGain = SampleType (1.2);
72template <
typename SampleType>
81template <
typename SampleType>
85 s.fill (SampleType (0));
92template <
typename SampleType>
95 jassert (newCutoff > SampleType (0));
101template <
typename SampleType>
104 jassert (newResonance >= SampleType (0) && newResonance <= SampleType (1));
110template <
typename SampleType>
113 jassert (newDrive >= SampleType (1));
116 gain = std::pow (
drive, SampleType (-2.642)) * SampleType (0.6103) + SampleType (0.3903);
117 drive2 =
drive * SampleType (0.04) + SampleType (0.96);
118 gain2 = std::pow (
drive2, SampleType (-2.642)) * SampleType (0.6103) + SampleType (0.3903);
122template <
typename SampleType>
125 auto&
s =
state[channelToUse];
128 const auto g = a1 * SampleType (-1) + SampleType (1);
129 const auto b0 =
g * SampleType (0.76923076923);
130 const auto b1 =
g * SampleType (0.23076923076);
135 const auto b = b1 *
s[0] + a1 *
s[1] + b0 *
a;
136 const auto c = b1 *
s[1] + a1 *
s[2] + b0 *
b;
137 const auto d = b1 *
s[2] + a1 *
s[3] + b0 *
c;
138 const auto e = b1 *
s[3] + a1 *
s[4] + b0 *
d;
146 return a *
A[0] +
b *
A[1] +
c *
A[2] +
d *
A[3] +
e *
A[4];
150template <
typename SampleType>
158template <
typename SampleType>
161 jassert (newValue > SampleType (0));
162 cutoffFreqScaler = SampleType (-2.0 * juce::MathConstants<double>::pi) / newValue;
164 static constexpr SampleType smootherRampTimeSec = SampleType (0.05);
#define noexcept
Definition DistrhoDefines.h:72
uint8_t a
Definition Spc_Cpu.h:141
Definition juce_LadderFilter.h:48
SampleType processSample(SampleType inputValue, size_t channelToUse) noexcept
Definition juce_LadderFilter.cpp:123
SampleType drive2
Definition juce_LadderFilter.h:131
SampleType drive
Definition juce_LadderFilter.h:131
SampleType gain
Definition juce_LadderFilter.h:131
LadderFilter()
Definition juce_LadderFilter.cpp:33
LookupTableTransform< SampleType > saturationLUT
Definition juce_LadderFilter.h:140
void setCutoffFrequencyHz(SampleType newCutoff) noexcept
Definition juce_LadderFilter.cpp:93
void prepare(const ProcessSpec &spec)
Definition juce_LadderFilter.cpp:73
void setSampleRate(SampleType newValue) noexcept
Definition juce_LadderFilter.cpp:159
void updateSmoothers() noexcept
Definition juce_LadderFilter.cpp:151
SmoothedValue< SampleType > cutoffTransformSmoother
Definition juce_LadderFilter.h:137
void setDrive(SampleType newDrive) noexcept
Definition juce_LadderFilter.cpp:111
Mode mode
Definition juce_LadderFilter.h:148
SampleType gain2
Definition juce_LadderFilter.h:131
void updateResonance() noexcept
Definition juce_LadderFilter.h:128
std::vector< std::array< SampleType, numStates > > state
Definition juce_LadderFilter.h:134
SampleType resonance
Definition juce_LadderFilter.h:144
SmoothedValue< SampleType > scaledResonanceSmoother
Definition juce_LadderFilter.h:137
void setMode(Mode newMode) noexcept
Definition juce_LadderFilter.cpp:46
SampleType cutoffFreqScaler
Definition juce_LadderFilter.h:146
void setNumChannels(size_t newValue)
Definition juce_LadderFilter.h:126
void reset() noexcept
Definition juce_LadderFilter.cpp:82
SampleType cutoffTransformValue
Definition juce_LadderFilter.h:138
void updateCutoffFreq() noexcept
Definition juce_LadderFilter.h:127
SampleType scaledResonanceValue
Definition juce_LadderFilter.h:138
LadderFilterMode Mode
Definition juce_LadderFilter.h:51
SampleType comp
Definition juce_LadderFilter.h:131
SampleType cutoffFreqHz
Definition juce_LadderFilter.h:143
std::array< SampleType, numStates > A
Definition juce_LadderFilter.h:135
void setResonance(SampleType newResonance) noexcept
Definition juce_LadderFilter.cpp:102
* e
Definition inflate.c:1404
unsigned d
Definition inflate.c:940
int g
Definition inflate.c:1573
unsigned s
Definition inflate.c:1555
virtual ASIOError setSampleRate(ASIOSampleRate sampleRate)=0
Definition juce_AudioBlock.h:29
Definition carla_juce.cpp:31
static const SPFLOAT outputGain
Definition revsc.c:50
Definition juce_ProcessContext.h:38
uint32 numChannels
Definition juce_ProcessContext.h:46
double sampleRate
Definition juce_ProcessContext.h:40
return c
Definition crypt.c:175