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

Method Process

Source/MultitrackRecorder.cpp:294–332  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

292}
293
294void MultitrackRecorderTrack::Process(double time)
295{
296 int numChannels = GetBuffer()->NumActiveChannels();
297 for (size_t i = 0; i < mRecordChunks.size(); ++i)
298 {
299 if (mRecordChunks[i]->NumActiveChannels() > numChannels)
300 numChannels = mRecordChunks[i]->NumActiveChannels();
301 }
302
303 ComputeSliders(0);
304 SyncBuffers(numChannels);
305
306 if (mDoRecording)
307 {
308 for (size_t i = 0; i < mRecordChunks.size(); ++i)
309 mRecordChunks[i]->SetNumActiveChannels(numChannels);
310
311 for (int i = 0; i < GetBuffer()->BufferSize(); ++i)
312 {
313 int chunkIndex = mRecordingLength / kRecordingChunkSize;
314 int chunkPos = mRecordingLength % kRecordingChunkSize;
315 for (int ch = 0; ch < numChannels; ++ch)
316 mRecordChunks[chunkIndex]->GetChannel(ch)[chunkPos] = GetBuffer()->GetChannel(MIN(ch, GetBuffer()->NumActiveChannels() - 1))[i];
317 ++mRecordingLength;
318 }
319 }
320
321 if (GetTarget())
322 {
323 for (int ch = 0; ch < GetTarget()->GetBuffer()->NumActiveChannels(); ++ch)
324 {
325 float* buffer = GetBuffer()->GetChannel(MIN(ch, GetBuffer()->NumActiveChannels() - 1));
326 Add(GetTarget()->GetBuffer()->GetChannel(ch), buffer, GetBuffer()->BufferSize());
327 GetVizBuffer()->WriteChunk(buffer, GetBuffer()->BufferSize(), MIN(ch, GetVizBuffer()->NumChannels() - 1));
328 }
329 }
330
331 GetBuffer()->Reset();
332}
333
334void MultitrackRecorderTrack::Poll()
335{

Callers

nothing calls this directly

Calls 10

AddFunction · 0.85
NumActiveChannelsMethod · 0.80
sizeMethod · 0.80
SetNumActiveChannelsMethod · 0.80
BufferSizeMethod · 0.80
GetChannelMethod · 0.80
GetBufferMethod · 0.80
WriteChunkMethod · 0.80
NumChannelsMethod · 0.45
ResetMethod · 0.45

Tested by

no test coverage detected