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));
|
opcode = absl::StrCat("start_", group(1), "cc", group(2));
|
||||||
goto end_region;
|
goto end_region;
|
||||||
}
|
}
|
||||||
|
"on_" ("hi"|"lo") "hdcc" (number) END {
|
||||||
|
opcode = absl::StrCat("start_", group(1), "hdcc", group(2));
|
||||||
|
goto end_region;
|
||||||
|
}
|
||||||
|
|
||||||
"fil_" (any) END {
|
"fil_" (any) END {
|
||||||
opcode = absl::StrCat("fil1_", group(1));
|
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))
|
if (auto value = readOpcode(opcode.value, Default::midi7Range))
|
||||||
ccTriggers[opcode.parameters.back()].setEnd(normalizeCC(*value));
|
ccTriggers[opcode.parameters.back()].setEnd(normalizeCC(*value));
|
||||||
break;
|
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
|
// Performance parameters: amplifier
|
||||||
case hash("volume"): // also gain
|
case hash("volume"): // also gain
|
||||||
|
|
|
||||||
|
|
@ -202,6 +202,10 @@ TEST_CASE("[Opcode] Normalization")
|
||||||
{"gain_foobar", "volume_foobar"},
|
{"gain_foobar", "volume_foobar"},
|
||||||
{"tune", "pitch"},
|
{"tune", "pitch"},
|
||||||
{"tune_foobar", "pitch_foobar"},
|
{"tune_foobar", "pitch_foobar"},
|
||||||
|
{"lorealcc24", "lohdcc24"},
|
||||||
|
{"hirealcc25", "hihdcc25"},
|
||||||
|
{"on_lohdcc26", "start_lohdcc26"},
|
||||||
|
{"on_hihdcc27", "start_hihdcc27"},
|
||||||
// SFZv2 aliases
|
// SFZv2 aliases
|
||||||
{"on_hicc22", "start_hicc22"},
|
{"on_hicc22", "start_hicc22"},
|
||||||
{"on_locc23", "start_locc23"},
|
{"on_locc23", "start_locc23"},
|
||||||
|
|
|
||||||
|
|
@ -496,6 +496,21 @@ TEST_CASE("[Region] Parsing opcodes")
|
||||||
REQUIRE(region.ccTriggers[4] == sfz::Range<float>(0_norm, 47_norm));
|
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")
|
SECTION("volume")
|
||||||
{
|
{
|
||||||
REQUIRE(region.volume == 0.0f);
|
REQUIRE(region.volume == 0.0f);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue