Don't require an explicit hikey/key=-1 to trigger on CC
This commit is contained in:
parent
41a719a720
commit
0a328068b2
2 changed files with 15 additions and 6 deletions
|
|
@ -186,6 +186,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
||||||
break;
|
break;
|
||||||
// Region logic: key mapping
|
// Region logic: key mapping
|
||||||
case hash("lokey"):
|
case hash("lokey"):
|
||||||
|
triggerOnCC = false;
|
||||||
setRangeStartFromOpcode(opcode, keyRange, Default::keyRange);
|
setRangeStartFromOpcode(opcode, keyRange, Default::keyRange);
|
||||||
break;
|
break;
|
||||||
case hash("hikey"):
|
case hash("hikey"):
|
||||||
|
|
@ -334,26 +335,34 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
||||||
case hash("start_locc&"): // also on_locc&
|
case hash("start_locc&"): // also on_locc&
|
||||||
if (opcode.parameters.back() >= config::numCCs)
|
if (opcode.parameters.back() >= config::numCCs)
|
||||||
return false;
|
return false;
|
||||||
if (auto value = readOpcode(opcode.value, Default::midi7Range))
|
if (auto value = readOpcode(opcode.value, Default::midi7Range)) {
|
||||||
|
triggerOnCC = true;
|
||||||
ccTriggers[opcode.parameters.back()].setStart(normalizeCC(*value));
|
ccTriggers[opcode.parameters.back()].setStart(normalizeCC(*value));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case hash("start_hicc&"): // also on_hicc&
|
case hash("start_hicc&"): // also on_hicc&
|
||||||
if (opcode.parameters.back() >= config::numCCs)
|
if (opcode.parameters.back() >= config::numCCs)
|
||||||
return false;
|
return false;
|
||||||
if (auto value = readOpcode(opcode.value, Default::midi7Range))
|
if (auto value = readOpcode(opcode.value, Default::midi7Range)) {
|
||||||
|
triggerOnCC = true;
|
||||||
ccTriggers[opcode.parameters.back()].setEnd(normalizeCC(*value));
|
ccTriggers[opcode.parameters.back()].setEnd(normalizeCC(*value));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case hash("start_lohdcc&"): // also on_lohdcc&
|
case hash("start_lohdcc&"): // also on_lohdcc&
|
||||||
if (opcode.parameters.back() >= config::numCCs)
|
if (opcode.parameters.back() >= config::numCCs)
|
||||||
return false;
|
return false;
|
||||||
if (auto value = readOpcode(opcode.value, Default::normalizedRange))
|
if (auto value = readOpcode(opcode.value, Default::normalizedRange)) {
|
||||||
|
triggerOnCC = true;
|
||||||
ccTriggers[opcode.parameters.back()].setStart(*value);
|
ccTriggers[opcode.parameters.back()].setStart(*value);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case hash("start_hihdcc&"): // also on_hihdcc&
|
case hash("start_hihdcc&"): // also on_hihdcc&
|
||||||
if (opcode.parameters.back() >= config::numCCs)
|
if (opcode.parameters.back() >= config::numCCs)
|
||||||
return false;
|
return false;
|
||||||
if (auto value = readOpcode(opcode.value, Default::normalizedRange))
|
if (auto value = readOpcode(opcode.value, Default::normalizedRange)) {
|
||||||
|
triggerOnCC = true;
|
||||||
ccTriggers[opcode.parameters.back()].setEnd(*value);
|
ccTriggers[opcode.parameters.back()].setEnd(*value);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Performance parameters: amplifier
|
// Performance parameters: amplifier
|
||||||
|
|
|
||||||
|
|
@ -114,8 +114,8 @@ TEST_CASE("Basic triggers", "Region triggers")
|
||||||
region.parseOpcode({ "on_locc47", "64" });
|
region.parseOpcode({ "on_locc47", "64" });
|
||||||
region.parseOpcode({ "on_hicc47", "68" });
|
region.parseOpcode({ "on_hicc47", "68" });
|
||||||
REQUIRE(!region.registerCC(47, 63_norm));
|
REQUIRE(!region.registerCC(47, 63_norm));
|
||||||
REQUIRE(!region.registerCC(47, 64_norm));
|
REQUIRE(region.registerCC(47, 64_norm));
|
||||||
REQUIRE(!region.registerCC(47, 65_norm));
|
REQUIRE(region.registerCC(47, 65_norm));
|
||||||
region.parseOpcode({ "hikey", "-1" });
|
region.parseOpcode({ "hikey", "-1" });
|
||||||
REQUIRE(region.registerCC(47, 64_norm));
|
REQUIRE(region.registerCC(47, 64_norm));
|
||||||
REQUIRE(region.registerCC(47, 65_norm));
|
REQUIRE(region.registerCC(47, 65_norm));
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue