From 8e8ea4f420c34ef619dc1cb6a2a4d1adce8cd951 Mon Sep 17 00:00:00 2001 From: paulfd Date: Sun, 25 Aug 2019 12:45:33 +0200 Subject: [PATCH] one_shot loop mode --- sources/Voice.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sources/Voice.h b/sources/Voice.h index 01bc2bfc..ac5af232 100644 --- a/sources/Voice.h +++ b/sources/Voice.h @@ -7,6 +7,7 @@ #include "StereoBuffer.h" #include "StereoSpan.h" #include "absl/types/span.h" +#include "Defaults.h" #include #include @@ -76,9 +77,18 @@ public: void registerNoteOff(int delay, int channel, int noteNumber, uint8_t velocity [[maybe_unused]]) { - if (state == State::playing && triggerChannel == channel && triggerNumber == noteNumber) { + if (region == nullptr) + return; + + if (state != State::playing) + return; + + if (triggerChannel == channel && triggerNumber == noteNumber) { noteIsOff = true; + if (region->loopMode == SfzLoopMode::one_shot) + return; + if (ccState[64] < 63) egEnvelope.startRelease(delay); }