diff --git a/src/sfizz/ADSREnvelope.cpp b/src/sfizz/ADSREnvelope.cpp index b17bce09..78415f8a 100644 --- a/src/sfizz/ADSREnvelope.cpp +++ b/src/sfizz/ADSREnvelope.cpp @@ -20,13 +20,18 @@ Type ADSREnvelope::secondsToSamples (Type timeInSeconds) const noexcept template Type ADSREnvelope::secondsToLinRate (Type timeInSeconds) const noexcept { - timeInSeconds = std::max(timeInSeconds, config::virtuallyZero); + if (timeInSeconds == 0) + return 1.0f; + return 1 / (sampleRate * timeInSeconds); }; template Type ADSREnvelope::secondsToExpRate (Type timeInSeconds) const noexcept { + if (timeInSeconds == 0) + return 0.0f; + timeInSeconds = std::max(25e-3, timeInSeconds); return std::exp(-9.0 / (timeInSeconds * sampleRate)); };