Fix to pass a Polyphony test.

This commit is contained in:
KIRA Ryouta 2024-02-24 00:09:51 +09:00 committed by Paul Ferrand
parent 4055582671
commit 342cd99dd9

View file

@ -102,9 +102,17 @@ void ADSREnvelope::getBlockInternal(absl::Span<Float> output) noexcept
// prevent computing the segment further than release point // prevent computing the segment further than release point
size = std::min<size_t>(size, releaseDelay); size = std::min<size_t>(size, releaseDelay);
} else if (releaseDelay == 0 && delay <= 0) { } else if (releaseDelay == 0 && delay <= 0) {
if (delay < 0) {
// release takes effect this frame // release takes effect this frame
currentState = State::Release; currentState = State::Release;
} else {
// release takes effect the next frame
size = 1;
}
releaseDelay = -1; releaseDelay = -1;
} else if (releaseDelay == -1 && currentState < State::Release && delay <= 0) {
// release takes effect this frame
currentState = State::Release;
} }
} }