Krotos Modules 3
Loading...
Searching...
No Matches
KwidgetProcessor_Filter.cpp
Go to the documentation of this file.
1namespace krotos
2{
4 {
5 addParameterAttachments({{Parameters::Mode, [this](float x) { setMode(x); }, 0},
6 {Parameters::Cutoff, [this](float x) { setCutoff(x); }, 64},
7 {Parameters::Resonance, [this](float x) { setResonance(x); }, 64},
8 {Parameters::Drive, [this](float x) { setDrive(x); }, 2},
9 {Parameters::Mix, [this](float x) { setMix(x); }, 2},
10 {Parameters::Bypass, [this](float x) { setBypass(x); }, 0}});
11 }
12
14 {
15 m_filter.setMode(static_cast<Filter::Mode>(static_cast<int>(mode)));
16 }
17
18 void KwidgetProcessor_Filter::setCutoff(float cutoffInHz) { m_filter.setCutoff(cutoffInHz); }
19
20 void KwidgetProcessor_Filter::setResonance(float resonance) { m_filter.setResonance(resonance); }
21
23
24 void KwidgetProcessor_Filter::setMix(float mix) { m_mix = mix; }
25
26 void KwidgetProcessor_Filter::setBypass(float isBypassed) { m_bypass = static_cast<bool>(isBypassed); }
27
28 void KwidgetProcessor_Filter::prepare(double sampleRate, int samplesPerBlock)
29 {
30 m_filter.prepareToPlay(sampleRate, samplesPerBlock);
31 }
32
33 void KwidgetProcessor_Filter::process(AudioBuffer<float>& buffer)
34 {
35 auto numSamples = buffer.getNumSamples();
36 auto numChannels = buffer.getNumChannels();
37 auto bufferPtr = buffer.getArrayOfWritePointers();
38
39 nextBlock(numSamples);
40
41 if (m_bypass)
42 {
43 for (int i = 0; i < numSamples; i++)
44 nextSample();
45
46 return;
47 }
48
49 for (int i = 0; i < numSamples; i++)
50 {
51 nextSample();
52
53 for (int j = 0; j < numChannels; j++)
54 {
55 auto& x = bufferPtr[j][i];
56 x = m_mix.dry() * x + m_mix.wet() * m_filter.processSample(x, j);
57 }
58 }
59 }
60} // namespace krotos
float wet() const
Definition DryWet.h:26
float dry() const
Definition DryWet.h:25
void setResonance(float newResonance) noexcept
Definition Filter.h:149
void setDrive(float newDrive) noexcept
Definition Filter.h:162
void setMode(Mode newMode) noexcept
Definition Filter.h:87
Mode
Definition Filter.h:20
void prepareToPlay(double sampleRate, int)
Definition Filter.h:46
void setCutoff(float newCutoff) noexcept
Definition Filter.h:136
float processSample(float inputValue, int channelToUse) noexcept
Definition Filter.h:60
Definition Kwidget.h:8
void setBypass(float isBypassed)
Definition KwidgetProcessor_Filter.cpp:26
void setResonance(float resonance)
Definition KwidgetProcessor_Filter.cpp:20
void setMix(float mix)
Definition KwidgetProcessor_Filter.cpp:24
void process(AudioBuffer< float > &buffer) override
Definition KwidgetProcessor_Filter.cpp:33
void prepare(double sampleRate, int samplesPerBlock) override
Definition KwidgetProcessor_Filter.cpp:28
void setMode(float mode)
Definition KwidgetProcessor_Filter.cpp:13
void setCutoff(float cutoffInHz)
Definition KwidgetProcessor_Filter.cpp:18
DryWet m_mix
Definition KwidgetProcessor_Filter.h:22
bool m_bypass
Definition KwidgetProcessor_Filter.h:23
Filter m_filter
Definition KwidgetProcessor_Filter.h:21
void setDrive(float drive)
Definition KwidgetProcessor_Filter.cpp:22
KwidgetProcessor_Filter(Kwidget &owner)
Definition KwidgetProcessor_Filter.cpp:3
An interface for an audio processor designed for modular use.
Definition KwidgetProcessor.h:8
void nextBlock(int numSamples)
Definition KwidgetProcessor.cpp:50
void addParameterAttachments(std::vector< AttachmentInfo >)
Definition KwidgetProcessor.cpp:65
void nextSample()
Definition KwidgetProcessor.cpp:59
Definition AirAbsorptionFilter.cpp:2
static const String Mix
Definition Kwidget_Filter.h:23
static const String Drive
Definition Kwidget_Filter.h:22
static const String Resonance
Definition Kwidget_Filter.h:21
static const String Bypass
Definition Kwidget_Filter.h:24
static const String Cutoff
Definition Kwidget_Filter.h:20
static const String Mode
Definition Kwidget_Filter.h:19