Krotos Modules 3
Loading...
Searching...
No Matches
KwidgetProcessor_AudioOut.cpp
Go to the documentation of this file.
1namespace krotos
2{
4 {
5 using P = Parameters;
6
7 addParameterAttachments({{P::Volume, [this](float x) { setGain(x); }, 2}, {P::Mute, nullptr, -1}});
8 }
9
10 void KwidgetProcessor_AudioOut::setGain(float gain) { m_gain = Decibels::decibelsToGain(gain); }
11
12 void KwidgetProcessor_AudioOut::prepare(double /*sampleRate*/, int /*samplesPerBlock*/) {}
13
14 void KwidgetProcessor_AudioOut::process(AudioBuffer<float>& buffer)
15 {
16 auto numSamples = buffer.getNumSamples();
17 auto numChannels = buffer.getNumChannels();
18 auto bufferPtr = buffer.getArrayOfWritePointers();
19
20 nextBlock(numSamples);
21 auto muteGain = getAttachment(Parameters::Mute)->data();
22
23 for (int i = 0; i < numSamples; i++)
24 {
25 nextSample();
26
27 auto gain = m_gain * (1.0f - muteGain[i]);
28 for (int j = 0; j < numChannels; j++)
29 bufferPtr[j][i] *= gain;
30 }
31 }
32} // namespace krotos
Definition Kwidget.h:8
Kwidget_AudioOut::Parameters Parameters
Definition KwidgetProcessor_AudioOut.h:6
float m_gain
Definition KwidgetProcessor_AudioOut.h:15
KwidgetProcessor_AudioOut(Kwidget &owner)
Definition KwidgetProcessor_AudioOut.cpp:3
void process(AudioBuffer< float > &buffer) override
Definition KwidgetProcessor_AudioOut.cpp:14
void setGain(float gain)
Definition KwidgetProcessor_AudioOut.cpp:10
void prepare(double sampleRate, int samplesPerBlock) override
Definition KwidgetProcessor_AudioOut.cpp:12
An interface for an audio processor designed for modular use.
Definition KwidgetProcessor.h:8
std::shared_ptr< KAttachment > getAttachment(const String &paramID)
Definition KwidgetProcessor.cpp:26
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 Mute
Definition Kwidget_AudioOut.h:18