synth: Reset the voice before starting it

The voice manager may select a voice that is
currently audible, so its state has to be cleaned
up before starting over.

Fixes: https://github.com/sfztools/sfizz/issues/1180
This commit is contained in:
Ivan A. Melnikov 2023-10-17 10:51:48 +04:00 committed by Paul Ferrand
parent 9dac3cbd60
commit c6287a121d

View file

@ -1310,6 +1310,7 @@ void Synth::Impl::startVoice(Layer* layer, int delay, const TriggerEvent& trigge
if (selectedVoice == nullptr) if (selectedVoice == nullptr)
return; return;
selectedVoice->reset();
if (selectedVoice->startVoice(layer, delay, triggerEvent)) if (selectedVoice->startVoice(layer, delay, triggerEvent))
ring.addVoiceToRing(selectedVoice); ring.addVoiceToRing(selectedVoice);
} }