Krotos Modules 3
Loading...
Searching...
No Matches
KwidgetProcessor_Pan.cpp
Go to the documentation of this file.
1namespace krotos
2{
4 : KwidgetProcessor(owner), m_range(owner.getParameter(Parameters::Pan)->getNormalisableRange())
5 {
6 addParameterAttachments({{Parameters::Pan, [this](float x) { setPan(x); }, 16}});
7 }
8
9 void KwidgetProcessor_Pan::prepare(double /*sampleRate*/, int /*samplesPerBlock*/) {}
10
11 void KwidgetProcessor_Pan::process(AudioBuffer<float>& buffer)
12 {
13 auto numSamples = buffer.getNumSamples();
14 auto numChannels = buffer.getNumChannels();
15 auto bufferPtr = buffer.getArrayOfWritePointers();
16
17 if (numChannels < 2)
18 return; // you can't pan mono audio
19
20 nextBlock(numSamples);
21
22 for (int i = 0; i < numSamples; i++)
23 {
24 nextSample();
25
26 bufferPtr[0][i] *= m_linearGainLeft;
27 bufferPtr[1][i] *= m_linearGainRight;
28 }
29 }
30
32 {
33 // convert the [-100, 100] pan range to [0, pi/2]
34 auto angle = m_range.convertTo0to1(pan) * MathConstants<float>::halfPi;
35
36 // set the linear gains using constant power panning
37 m_linearGainLeft = std::cos(angle);
38 m_linearGainRight = std::sin(angle);
39 }
40} // namespace krotos
Definition Kwidget.h:8
float m_linearGainRight
Definition KwidgetProcessor_Pan.h:17
void prepare(double sampleRate, int samplesPerBlock) override
Definition KwidgetProcessor_Pan.cpp:9
void setPan(float pan)
Definition KwidgetProcessor_Pan.cpp:31
void process(AudioBuffer< float > &buffer) override
Definition KwidgetProcessor_Pan.cpp:11
NormalisableRange< float > m_range
Definition KwidgetProcessor_Pan.h:19
float m_linearGainLeft
Definition KwidgetProcessor_Pan.h:16
KwidgetProcessor_Pan(Kwidget &owner)
Definition KwidgetProcessor_Pan.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
Definition Kwidget_Pan.h:7
static const String Pan
Definition Kwidget_Pan.h:8