diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index c2c7779c..caf410b1 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -627,11 +627,6 @@ sfz::Voice* sfz::Synth::findFreeVoice() noexcept int sfz::Synth::getNumActiveVoices() const noexcept { - auto activeVoices = 0; - for (const auto& voice : voices) { - if (!voice->isFree()) - activeVoices++; - } return activeVoices; } @@ -711,7 +706,7 @@ void sfz::Synth::renderBlock(AudioSpan buffer) noexcept return; } - int numActiveVoices { 0 }; + activeVoices = 0; { // Main render block ScopedTiming logger { callbackBreakdown.renderMethod, ScopedTiming::Operation::addToDuration }; tempSpan->fill(0.0f); @@ -730,7 +725,7 @@ void sfz::Synth::renderBlock(AudioSpan buffer) noexcept if (voice->isFree()) continue; - numActiveVoices++; + activeVoices++; renderVoiceToOutputs(*voice, *tempSpan); callbackBreakdown.data += voice->getLastDataDuration(); callbackBreakdown.amplitude += voice->getLastAmplitudeDuration(); @@ -770,7 +765,7 @@ void sfz::Synth::renderBlock(AudioSpan buffer) noexcept } callbackBreakdown.dispatch = dispatchDuration; - resources.logger.logCallbackTime(callbackBreakdown, numActiveVoices, numFrames); + resources.logger.logCallbackTime(callbackBreakdown, activeVoices, numFrames); // Reset the dispatch counter dispatchDuration = Duration(0); diff --git a/src/sfizz/Synth.h b/src/sfizz/Synth.h index bcd79542..a0f6f09a 100644 --- a/src/sfizz/Synth.h +++ b/src/sfizz/Synth.h @@ -731,6 +731,7 @@ private: float sampleRate { config::defaultSampleRate }; float volume { Default::globalVolume }; int numVoices { config::numVoices }; + int activeVoices { 0 }; Oversampling oversamplingFactor { config::defaultOversamplingFactor }; // Distribution used to generate random value for the *rand opcodes