@@ -341,22 +341,26 @@ void PathSynthAudioProcessor::processBlock(AudioBuffer<float>& buffer, MidiBuffe
341
341
oversampledBuffer.clear (0 , 0 , oversampledBuffer.getNumSamples ());
342
342
343
343
{
344
- int numSamples = samplesPerSubBlock * oversampleFactor;
344
+ int numSamplesPerOversampledBlock = samplesPerSubBlock * oversampleFactor;
345
345
int totalSamples = buffer.getNumSamples () * oversampleFactor;
346
- for (int startSample = 0 ; startSample < totalSamples; startSample += numSamples)
346
+ int numWholeBlocks = totalSamples / numSamplesPerOversampledBlock;
347
+
348
+ for (int blockNum = 0 ; blockNum < numWholeBlocks; ++blockNum)
347
349
{
348
- setPath (numSamples);
350
+ const int startSample = blockNum * numSamplesPerOversampledBlock;
351
+
352
+ setPath (numSamplesPerOversampledBlock);
349
353
350
- keyboardState.processNextMidiBuffer (midiMessages, startSample, numSamples , true );
351
- synthesiser.renderNextBlock (oversampledBuffer, midiMessages, startSample, numSamples );
354
+ keyboardState.processNextMidiBuffer (midiMessages, startSample, numSamplesPerOversampledBlock , true );
355
+ synthesiser.renderNextBlock (oversampledBuffer, midiMessages, startSample, numSamplesPerOversampledBlock );
352
356
}
353
- // in case the buffer didn't divide evenly. TODO double check this
354
- const int numSamplesLeft = totalSamples % numSamples ;
357
+ // in case the buffer didn't divide evenly.
358
+ const int numSamplesLeft = totalSamples - (numWholeBlocks * numSamplesPerOversampledBlock) ;
355
359
if (numSamplesLeft > 0 )
356
360
{
357
361
const int startSample = totalSamples - numSamplesLeft;
358
362
359
- // setPath(numSamplesLeft);
363
+ setPath (numSamplesLeft);
360
364
361
365
keyboardState.processNextMidiBuffer (midiMessages, startSample, numSamplesLeft, true );
362
366
synthesiser.renderNextBlock (oversampledBuffer, midiMessages, startSample, numSamplesLeft);
@@ -581,11 +585,14 @@ void PathSynthAudioProcessor::setPath(int numSamples)
581
585
}
582
586
}
583
587
// if we reached the end of the path without finishing, use the final value
584
- if (!filledValue){
585
- if (direction == 0 ){
588
+ if (!filledValue)
589
+ {
590
+ if (direction == 0 )
591
+ {
586
592
wavetable[i] = iterator.x2 ;
587
593
}
588
- else {
594
+ else
595
+ {
589
596
wavetable[i] = iterator.y2 ;
590
597
}
591
598
}
0 commit comments