From 5fc3db6ad4aa6132627925d43a688f0bba996b12 Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Mon, 5 Jul 2021 12:06:15 +0200 Subject: [PATCH] Passing lokey=-1 does not reactivate the note trigger --- src/sfizz/Region.cpp | 8 ++++++-- tests/RegionValuesT.cpp | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/sfizz/Region.cpp b/src/sfizz/Region.cpp index 344d7c6a..d3f635d6 100644 --- a/src/sfizz/Region.cpp +++ b/src/sfizz/Region.cpp @@ -208,8 +208,12 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode, bool cleanOpcode) break; // Region logic: key mapping case hash("lokey"): - triggerOnNote = true; - keyRange.setStart(opcode.read(Default::loKey)); + { + absl::optional optValue = opcode.readOptional(Default::loKey); + triggerOnNote = optValue != absl::nullopt; + uint8_t value = optValue.value_or(Default::loKey); + keyRange.setStart(value); + } break; case hash("hikey"): { diff --git a/tests/RegionValuesT.cpp b/tests/RegionValuesT.cpp index a6fc4dd7..40bdabd0 100644 --- a/tests/RegionValuesT.cpp +++ b/tests/RegionValuesT.cpp @@ -566,17 +566,20 @@ TEST_CASE("[Values] Triggers on note") sample=kick.wav hikey=-1 sample=kick.wav key=-1 sample=kick.wav hikey=-1 lokey=12 + sample=kick.wav hikey=-1 lokey=-1 )"); synth.dispatchMessage(client, 0, "/region0/trigger_on_note", "", nullptr); synth.dispatchMessage(client, 0, "/region1/trigger_on_note", "", nullptr); synth.dispatchMessage(client, 0, "/region2/trigger_on_note", "", nullptr); // TODO: Double check with Sforzando/rgc synth.dispatchMessage(client, 0, "/region3/trigger_on_note", "", nullptr); + synth.dispatchMessage(client, 0, "/region4/trigger_on_note", "", nullptr); std::vector expected { "/region0/trigger_on_note,T : { }", "/region1/trigger_on_note,F : { }", "/region2/trigger_on_note,F : { }", "/region3/trigger_on_note,T : { }", + "/region4/trigger_on_note,F : { }", }; REQUIRE(messageList == expected); }