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);