Passing lokey=-1 does not reactivate the note trigger

This commit is contained in:
Paul Fd 2021-07-05 12:06:15 +02:00
parent ba7cb52b9c
commit 5fc3db6ad4
2 changed files with 9 additions and 2 deletions

View file

@ -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<uint8_t> optValue = opcode.readOptional(Default::loKey);
triggerOnNote = optValue != absl::nullopt;
uint8_t value = optValue.value_or(Default::loKey);
keyRange.setStart(value);
}
break;
case hash("hikey"):
{

View file

@ -566,17 +566,20 @@ TEST_CASE("[Values] Triggers on note")
<region> sample=kick.wav hikey=-1
<region> sample=kick.wav key=-1
<region> sample=kick.wav hikey=-1 lokey=12
<region> 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<std::string> 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);
}