Krotos Modules 3
Loading...
Searching...
No Matches
KwidgetProcessor_ConvolutionReverb.cpp
Go to the documentation of this file.
1namespace krotos
2{
4 {
5 using P = Parameters;
6
7 addParameterAttachments({{P::Mix, [this](float x) { setMix(x); }, 16},
8 {P::Predelay, [this](float x) { setPredelayMs(x); }, 16},
9 {P::WetGain, [this](float x) { setWetGainDb(x); }, 16},
10 {Parameters::Bypass, [this](float x) { setBypass(x); }, 0}});
11
12 m_impulsePath = *getOwner().getCustomParameter(P::ImpulsePath);
13 m_impulsePath.valueChanged = [this](const var& x) { setImpulse(x.toString()); };
14 setImpulse(m_impulsePath.getValue().toString());
15 }
16
18
20
22
27
28 void KwidgetProcessor_ConvolutionReverb::prepare(double sampleRate, int samplesPerBlock)
29 {
30 m_reverb.prepareToPlay(sampleRate, samplesPerBlock);
31 }
32
33 void KwidgetProcessor_ConvolutionReverb::setBypass(float isBypassed) { m_bypass = static_cast<bool>(isBypassed); }
34
35 void KwidgetProcessor_ConvolutionReverb::process(AudioBuffer<float>& buffer)
36 {
37 auto numSamples = buffer.getNumSamples();
38 auto numChannels = buffer.getNumChannels();
39 auto bufferPtr = buffer.getArrayOfWritePointers();
40
41 if (numChannels < 2)
42 return;
43
44 nextBlock(numSamples);
45
46 if (m_bypass)
47 {
48 for (int i = 0; i < numSamples; i++)
49 nextSample();
50
51 return;
52 }
53
54 m_reverb.prepareNextBlock(bufferPtr, numSamples, numChannels);
55
56 for (int i = 0; i < numSamples; i++)
57 {
58 nextSample();
59
60 for (int j = 0; j < numChannels; j++)
61 bufferPtr[j][i] = m_reverb.getNextSample(i, j);
62 }
63 }
64} // namespace krotos
static String convertFilePathString(const String &)
Definition AssetManager.cpp:583
void prepareToPlay(double sampleRate, int samplesPerBlock)
Definition ConvolutionReverb.cpp:117
void prepareNextBlock(const float *const *buffer, int numSamples, int numChannels)
Definition ConvolutionReverb.cpp:11
void setPredelayMs(float predelayMs)
Definition ConvolutionReverb.cpp:104
void setOutputGainDb(float outputGainValueIndB)
Definition ConvolutionReverb.cpp:102
float getNextSample(int sampleIdx, int channelIdx)
Definition ConvolutionReverb.cpp:58
void setImpulseResponseFilePath(const String &impulseResponseFilePath)
Definition ConvolutionReverb.cpp:183
void setMix(float mixValue)
Definition ConvolutionReverb.cpp:100
std::function< void(const var &)> valueChanged
Definition CustomParameter.h:60
const var & getValue() const
Definition CustomParameter.cpp:39
Definition Kwidget.h:8
CustomParameter * getCustomParameter(const String &parameterID)
Definition Kwidget.cpp:188
KwidgetProcessor_ConvolutionReverb(Kwidget &owner)
Definition KwidgetProcessor_ConvolutionReverb.cpp:3
void setWetGainDb(float gain)
Definition KwidgetProcessor_ConvolutionReverb.cpp:21
ConvolutionReverb m_reverb
Definition KwidgetProcessor_ConvolutionReverb.h:20
void process(AudioBuffer< float > &buffer) override
Definition KwidgetProcessor_ConvolutionReverb.cpp:35
void prepare(double sampleRate, int samplesPerBlock) override
Definition KwidgetProcessor_ConvolutionReverb.cpp:28
void setBypass(float isByPassed)
Definition KwidgetProcessor_ConvolutionReverb.cpp:33
bool m_bypass
Definition KwidgetProcessor_ConvolutionReverb.h:25
void setPredelayMs(float delay)
Definition KwidgetProcessor_ConvolutionReverb.cpp:19
void setImpulse(const String &impulse)
Definition KwidgetProcessor_ConvolutionReverb.cpp:23
CustomParameter m_impulsePath
Definition KwidgetProcessor_ConvolutionReverb.h:24
Kwidget_ConvolutionReverb::Parameters Parameters
Definition KwidgetProcessor_ConvolutionReverb.h:6
void setMix(float mix)
Definition KwidgetProcessor_ConvolutionReverb.cpp:17
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
Kwidget & getOwner() const
Definition KwidgetProcessor.h:164
void nextSample()
Definition KwidgetProcessor.cpp:59
Definition AirAbsorptionFilter.cpp:2
static const String Bypass
Definition Kwidget_ConvolutionReverb.h:27