Add support of start_lohdccN and start_hihdccN
This commit is contained in:
parent
16bfe8fa98
commit
ed4177b57b
4 changed files with 35 additions and 0 deletions
|
|
@ -132,6 +132,10 @@ end_generic:
|
|||
opcode = absl::StrCat("start_", group(1), "cc", group(2));
|
||||
goto end_region;
|
||||
}
|
||||
"on_" ("hi"|"lo") "hdcc" (number) END {
|
||||
opcode = absl::StrCat("start_", group(1), "hdcc", group(2));
|
||||
goto end_region;
|
||||
}
|
||||
|
||||
"fil_" (any) END {
|
||||
opcode = absl::StrCat("fil1_", group(1));
|
||||
|
|
|
|||
|
|
@ -321,6 +321,18 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
|||
if (auto value = readOpcode(opcode.value, Default::midi7Range))
|
||||
ccTriggers[opcode.parameters.back()].setEnd(normalizeCC(*value));
|
||||
break;
|
||||
case hash("start_lohdcc&"): // also on_lohdcc&
|
||||
if (opcode.parameters.back() >= config::numCCs)
|
||||
return false;
|
||||
if (auto value = readOpcode(opcode.value, Default::normalizedRange))
|
||||
ccTriggers[opcode.parameters.back()].setStart(*value);
|
||||
break;
|
||||
case hash("start_hihdcc&"): // also on_hihdcc&
|
||||
if (opcode.parameters.back() >= config::numCCs)
|
||||
return false;
|
||||
if (auto value = readOpcode(opcode.value, Default::normalizedRange))
|
||||
ccTriggers[opcode.parameters.back()].setEnd(*value);
|
||||
break;
|
||||
|
||||
// Performance parameters: amplifier
|
||||
case hash("volume"): // also gain
|
||||
|
|
|
|||
|
|
@ -202,6 +202,10 @@ TEST_CASE("[Opcode] Normalization")
|
|||
{"gain_foobar", "volume_foobar"},
|
||||
{"tune", "pitch"},
|
||||
{"tune_foobar", "pitch_foobar"},
|
||||
{"lorealcc24", "lohdcc24"},
|
||||
{"hirealcc25", "hihdcc25"},
|
||||
{"on_lohdcc26", "start_lohdcc26"},
|
||||
{"on_hihdcc27", "start_hihdcc27"},
|
||||
// SFZv2 aliases
|
||||
{"on_hicc22", "start_hicc22"},
|
||||
{"on_locc23", "start_locc23"},
|
||||
|
|
|
|||
|
|
@ -496,6 +496,21 @@ TEST_CASE("[Region] Parsing opcodes")
|
|||
REQUIRE(region.ccTriggers[4] == sfz::Range<float>(0_norm, 47_norm));
|
||||
}
|
||||
|
||||
SECTION("on_lohdcc, on_hihdcc")
|
||||
{
|
||||
for (int ccIdx = 1; ccIdx < 128; ++ccIdx) {
|
||||
REQUIRE(!region.ccTriggers.contains(ccIdx));
|
||||
}
|
||||
region.parseOpcode({ "on_lohdcc46", "0.15" });
|
||||
REQUIRE(region.ccTriggers.contains(46));
|
||||
REQUIRE(region.ccTriggers[46].getStart() == Approx(0.15f));
|
||||
REQUIRE(region.ccTriggers[46].getEnd() == 1.0f);
|
||||
region.parseOpcode({ "on_hihdcc5", "0.47" });
|
||||
REQUIRE(region.ccTriggers.contains(5));
|
||||
REQUIRE(region.ccTriggers[5].getStart() == 0.0f);
|
||||
REQUIRE(region.ccTriggers[5].getEnd() == Approx(0.47f));
|
||||
}
|
||||
|
||||
SECTION("volume")
|
||||
{
|
||||
REQUIRE(region.volume == 0.0f);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue