From 6bce14673e6bb6439f10e688360acdbf473c9e73 Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Tue, 7 Apr 2020 00:42:11 +0200 Subject: [PATCH] Saner behavior for the quantized envelopes with bends --- src/sfizz/ModifierHelpers.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/sfizz/ModifierHelpers.h b/src/sfizz/ModifierHelpers.h index 6aa757fe..0ee1e900 100644 --- a/src/sfizz/ModifierHelpers.h +++ b/src/sfizz/ModifierHelpers.h @@ -158,7 +158,10 @@ void multiplicativeEnvelope(const EventVector& events, absl::Span envelop // log q log q // and log(b)\log(q) is between 0 and 1. auto quantize = [logStep](float value) -> float { - return std::exp(logStep * std::floor(std::log(value) / logStep)); + if (value > 1) + return std::exp(logStep * std::floor(std::log(value) / logStep)); + else + return std::exp(logStep * std::ceil(std::log(value) / logStep)); }; auto lastValue = quantize(lambda(events[0].value));