From c704c7a316ac36fdc0b7f3f383205dd91076624c Mon Sep 17 00:00:00 2001 From: anatoly-os Date: Sat, 2 Jun 2018 14:44:01 +0200 Subject: [PATCH] fix #271719: sound accumulation on noteOff Fixed extra calling trigger after voice has already been stopped --- zerberus/zerberus.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/zerberus/zerberus.cpp b/zerberus/zerberus.cpp index fae9d3c32329..c69efd06b253 100644 --- a/zerberus/zerberus.cpp +++ b/zerberus/zerberus.cpp @@ -136,9 +136,8 @@ void Zerberus::processNoteOff(Channel* cp, int key) && (v->key() == key) && (v->loopMode() != LoopMode::ONE_SHOT) ) { - if (cp->sustain() < 0x40) { - if (!v->isStopped()) - v->stop(); + if (cp->sustain() < 0x40 && !v->isStopped()) { + v->stop(); double durSinceNoteOn = v->getSamplesSinceStart() / sampleRate(); trigger(cp, key, v->velocity(), Trigger::RELEASE, -1, -1, durSinceNoteOn); }