From 07f30af7f173097c6b8ef0c28bbe37384d6f13e8 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Wed, 14 Oct 2020 23:21:10 +0200 Subject: [PATCH 1/2] Replace stable_sort by sort --- src/sfizz/VoiceStealing.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sfizz/VoiceStealing.cpp b/src/sfizz/VoiceStealing.cpp index 1c425ac7..878f5fb8 100644 --- a/src/sfizz/VoiceStealing.cpp +++ b/src/sfizz/VoiceStealing.cpp @@ -33,13 +33,13 @@ sfz::Voice* sfz::VoiceStealing::stealFirst(absl::Span voices) noexcept sfz::Voice* sfz::VoiceStealing::stealOldest(absl::Span voices) noexcept { - absl::c_stable_sort(voices, voiceOrdering); + absl::c_sort(voices, voiceOrdering); return voices.front(); } sfz::Voice* sfz::VoiceStealing::stealEnvelopeAndAge(absl::Span voices) noexcept { - absl::c_stable_sort(voices, voiceOrdering); + absl::c_sort(voices, voiceOrdering); const auto sumPower = absl::c_accumulate(voices, 0.0f, [](float sum, const Voice* v) { return sum + v->getAveragePower(); From f3776dcb3579c631fa5f31cdc5460ce372bf470a Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Wed, 14 Oct 2020 23:31:55 +0200 Subject: [PATCH 2/2] Set the power follower depending on the voice stealing algorithm also on voice re-creation --- src/sfizz/Synth.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index 3a872727..0f11bba4 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -1568,6 +1568,15 @@ void sfz::Synth::applySettingsPerVoice() voice->setPitchEGEnabledPerVoice(settingsPerVoice.havePitchEG); voice->setFilterEGEnabledPerVoice(settingsPerVoice.haveFilterEG); } + + if (stealer.getStealingAlgorithm() == + VoiceStealing::StealingAlgorithm::EnvelopeAndAge) { + for (auto& voice : voices) + voice->enablePowerFollower(); + } else { + for (auto& voice : voices) + voice->disablePowerFollower(); + } } void sfz::Synth::setupModMatrix()