|
|
@@ -47,18 +47,21 @@ struct GraphRenderSequence |
|
|
|
|
|
|
|
if (numSamples > maxSamples)
|
|
|
|
{
|
|
|
|
// being asked to render more samples than our buffers have, so slice things up...
|
|
|
|
tempMIDI.clear();
|
|
|
|
tempMIDI.addEvents (midiMessages, maxSamples, numSamples, -maxSamples);
|
|
|
|
|
|
|
|
// Being asked to render more samples than our buffers have, so divide the buffer into chunks
|
|
|
|
int chunkStartSample = 0;
|
|
|
|
while (chunkStartSample < numSamples)
|
|
|
|
{
|
|
|
|
AudioBuffer<FloatType> startAudio (buffer.getArrayOfWritePointers(), buffer.getNumChannels(), maxSamples);
|
|
|
|
midiMessages.clear (maxSamples, numSamples);
|
|
|
|
perform (startAudio, midiMessages, audioPlayHead);
|
|
|
|
auto chunkSize = jmin (maxSamples, numSamples - chunkStartSample);
|
|
|
|
|
|
|
|
AudioBuffer<FloatType> audioChunk (buffer.getArrayOfWritePointers(), buffer.getNumChannels(), chunkStartSample, chunkSize);
|
|
|
|
midiChunk.clear();
|
|
|
|
midiChunk.addEvents (midiMessages, chunkStartSample, chunkSize, -chunkStartSample);
|
|
|
|
|
|
|
|
perform (audioChunk, midiChunk, audioPlayHead);
|
|
|
|
|
|
|
|
chunkStartSample += maxSamples;
|
|
|
|
}
|
|
|
|
|
|
|
|
AudioBuffer<FloatType> endAudio (buffer.getArrayOfWritePointers(), buffer.getNumChannels(), maxSamples, numSamples - maxSamples);
|
|
|
|
perform (endAudio, tempMIDI, audioPlayHead);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
@@ -145,7 +148,7 @@ struct GraphRenderSequence |
|
|
|
|
|
|
|
const int defaultMIDIBufferSize = 512;
|
|
|
|
|
|
|
|
tempMIDI.ensureSize (defaultMIDIBufferSize);
|
|
|
|
midiChunk.ensureSize (defaultMIDIBufferSize);
|
|
|
|
|
|
|
|
for (auto&& m : midiBuffers)
|
|
|
|
m.ensureSize (defaultMIDIBufferSize);
|
|
|
@@ -170,7 +173,7 @@ struct GraphRenderSequence |
|
|
|
MidiBuffer currentMidiOutputBuffer;
|
|
|
|
|
|
|
|
Array<MidiBuffer> midiBuffers;
|
|
|
|
MidiBuffer tempMIDI;
|
|
|
|
MidiBuffer midiChunk;
|
|
|
|
|
|
|
|
private:
|
|
|
|
//==============================================================================
|
|
|
|