From 4de101f42c0c7175c796b25ae899f0a5f938a6f6 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Mon, 30 Mar 2020 22:42:54 +0200 Subject: [PATCH] Add quantized envelopes to voices --- src/sfizz/Voice.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/sfizz/Voice.cpp b/src/sfizz/Voice.cpp index 9d1ee9c1..633cf8bc 100644 --- a/src/sfizz/Voice.cpp +++ b/src/sfizz/Voice.cpp @@ -473,16 +473,17 @@ void sfz::Voice::fillWithData(AudioSpan buffer) noexcept return; fill(*jumps, pitchRatio * speedRatio); - // if (region->bendStep > 1) - // pitchBendEnvelope.getQuantizedBlock(*bends, bendStepFactor); - // else - // pitchBendEnvelope.getBlock(*bends); + const auto events = resources.midiState.getPitchEvents(); const auto bendLambda = [this](float bend){ const auto bendInCents = bend > 0.0f ? bend * static_cast(region->bendUp) : -bend * static_cast(region->bendDown); return centsFactor(bendInCents); }; - multiplicativeEnvelope(events, *bends, bendLambda); + + if (region->bendStep > 1) + multiplicativeEnvelope(events, *bends, bendLambda, bendStepFactor); + else + multiplicativeEnvelope(events, *bends, bendLambda); DBG("Bend: " << bends->back()); applyGain(*bends, *jumps); @@ -571,12 +572,11 @@ void sfz::Voice::fillWithGenerator(AudioSpan buffer) noexcept const auto bendInCents = bend > 0.0f ? bend * static_cast(region->bendUp) : -bend * static_cast(region->bendDown); return centsFactor(bendInCents); }; - // if (region->bendStep > 1) - // pitchBendEnvelope.getQuantizedBlock(*bends, bendStepFactor); - // else - // pitchBendEnvelope.getBlock(*bends); + if (region->bendStep > 1) + multiplicativeEnvelope(events, *bends, bendLambda, bendStepFactor); + else + multiplicativeEnvelope(events, *bends, bendLambda); - multiplicativeEnvelope(events, *bends, bendLambda); DBG("Bend: " << bends->back()); applyGain(*bends, *frequencies);