diff --git a/src/sfizz/ADSREnvelope.cpp b/src/sfizz/ADSREnvelope.cpp index f004b05a..0a79da8c 100644 --- a/src/sfizz/ADSREnvelope.cpp +++ b/src/sfizz/ADSREnvelope.cpp @@ -44,9 +44,8 @@ void ADSREnvelope::reset(const EGDescription& desc, const Region& region, const this->decayRate = secondsToExpRate(desc.getDecay(state, velocity)); this->releaseRate = secondsToExpRate(desc.getRelease(state, velocity)); this->hold = secondsToSamples(desc.getHold(state, velocity)); - this->peak = 1.0; this->sustain = normalizePercents(desc.getSustain(state, velocity)); - this->start = this->peak * normalizePercents(desc.getStart(state, velocity)); + this->start = normalizePercents(desc.getStart(state, velocity)); releaseDelay = 0; sustainThreshold = this->sustain + config::virtuallyZero; @@ -90,10 +89,10 @@ void ADSREnvelope::getBlock(absl::Span output) noexcept currentState = State::Attack; break; case State::Attack: - while (count < size && (currentValue += peak * attackStep) < peak) + while (count < size && (currentValue += attackStep) < 1) output[count++] = currentValue; - if (currentValue >= peak) { - currentValue = peak; + if (currentValue >= 1) { + currentValue = 1; currentState = State::Hold; } break; diff --git a/src/sfizz/ADSREnvelope.h b/src/sfizz/ADSREnvelope.h index 84a95eaa..f5f435fb 100644 --- a/src/sfizz/ADSREnvelope.h +++ b/src/sfizz/ADSREnvelope.h @@ -94,7 +94,6 @@ private: Float releaseRate { 0 }; int hold { 0 }; Float start { 0 }; - Float peak { 0 }; Float sustain { 0 }; Float sustainThreshold { config::virtuallyZero }; int releaseDelay { 0 };