MCPcopy Create free account
hub / github.com/BespokeSynth/BespokeSynth / ProcessAudio

Method ProcessAudio

Source/BiquadFilterEffect.cpp:66–108  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64}
65
66void BiquadFilterEffect::ProcessAudio(double time, ChannelBuffer* buffer)
67{
68 PROFILER(BiquadFilterEffect);
69
70 if (!mEnabled)
71 return;
72
73 float bufferSize = buffer->BufferSize();
74 if (buffer->NumActiveChannels() != mDryBuffer.NumActiveChannels())
75 mCoefficientsHaveChanged = true; //force filters for other channels to get updated
76 mDryBuffer.SetNumActiveChannels(buffer->NumActiveChannels());
77
78 const float fadeOutStart = mFSlider->GetMax() * .75f;
79 const float fadeOutEnd = mFSlider->GetMax();
80 bool fadeOut = mBiquad[0].mF > fadeOutStart && mBiquad[0].mType == kFilterType_Lowpass;
81 if (fadeOut)
82 mDryBuffer.CopyFrom(buffer);
83
84 for (int i = 0; i < bufferSize; ++i)
85 {
86 ComputeSliders(i);
87 if (mCoefficientsHaveChanged)
88 {
89 mBiquad[0].UpdateFilterCoeff();
90 for (int ch = 1; ch < buffer->NumActiveChannels(); ++ch)
91 mBiquad[ch].CopyCoeffFrom(mBiquad[0]);
92 mCoefficientsHaveChanged = false;
93 }
94 for (int ch = 0; ch < buffer->NumActiveChannels(); ++ch)
95 buffer->GetChannel(ch)[i] = mBiquad[ch].Filter(buffer->GetChannel(ch)[i]);
96 }
97
98 if (fadeOut)
99 {
100 for (int ch = 0; ch < buffer->NumActiveChannels(); ++ch)
101 {
102 float dryness = ofMap(mBiquad[0].mF, fadeOutStart, fadeOutEnd, 0, 1);
103 Mult(buffer->GetChannel(ch), 1 - dryness, bufferSize);
104 Mult(mDryBuffer.GetChannel(ch), dryness, bufferSize);
105 Add(buffer->GetChannel(ch), mDryBuffer.GetChannel(ch), bufferSize);
106 }
107 }
108}
109
110void BiquadFilterEffect::DrawModule()
111{

Callers

nothing calls this directly

Calls 12

ofMapFunction · 0.85
MultFunction · 0.85
AddFunction · 0.85
BufferSizeMethod · 0.80
NumActiveChannelsMethod · 0.80
SetNumActiveChannelsMethod · 0.80
UpdateFilterCoeffMethod · 0.80
GetChannelMethod · 0.80
FilterMethod · 0.60
GetMaxMethod · 0.45
CopyFromMethod · 0.45
CopyCoeffFromMethod · 0.45

Tested by

no test coverage detected