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

Method ProcessAudio

Source/LiveGranulator.cpp:96–131  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

94}
95
96void LiveGranulator::ProcessAudio(double time, ChannelBuffer* buffer)
97{
98 PROFILER(LiveGranulator);
99
100 float bufferSize = buffer->BufferSize();
101 mBuffer.SetNumChannels(buffer->NumActiveChannels());
102
103 for (int i = 0; i < bufferSize; ++i)
104 {
105 ComputeSliders(i);
106
107 mGranulator.SetLiveMode(!mFreeze);
108 if (!mFreeze)
109 {
110 for (int ch = 0; ch < buffer->NumActiveChannels(); ++ch)
111 mBuffer.Write(buffer->GetChannel(ch)[i], ch);
112 }
113 else if (mFreezeExtraSamples < FREEZE_EXTRA_SAMPLES_COUNT)
114 {
115 ++mFreezeExtraSamples;
116 for (int ch = 0; ch < buffer->NumActiveChannels(); ++ch)
117 mBuffer.Write(buffer->GetChannel(ch)[i], ch);
118 }
119
120 if (mEnabled)
121 {
122 float sample[ChannelBuffer::kMaxNumChannels];
123 Clear(sample, ChannelBuffer::kMaxNumChannels);
124 mGranulator.ProcessFrame(time, mBuffer.GetRawBuffer(), mBufferLength, mBuffer.GetRawBufferOffset(0) - mFreezeExtraSamples - 1 + mPos, 1.0f, sample);
125 for (int ch = 0; ch < buffer->NumActiveChannels(); ++ch)
126 buffer->GetChannel(ch)[i] = mDry * buffer->GetChannel(ch)[i] + sample[ch];
127 }
128
129 time += gInvSampleRateMs;
130 }
131}
132
133void LiveGranulator::DrawModule()
134{

Callers

nothing calls this directly

Calls 10

ClearFunction · 0.85
BufferSizeMethod · 0.80
SetNumChannelsMethod · 0.80
NumActiveChannelsMethod · 0.80
SetLiveModeMethod · 0.80
GetChannelMethod · 0.80
GetRawBufferMethod · 0.80
GetRawBufferOffsetMethod · 0.80
WriteMethod · 0.45
ProcessFrameMethod · 0.45

Tested by

no test coverage detected