Merge pull request #953 from paulfd/loop-startcc-aliases
Added aliases for Cakewalk and RGC loop_oncc opcodes
This commit is contained in:
commit
a1cef9ba16
4 changed files with 949 additions and 672 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -192,6 +192,21 @@ end_region_oncc:
|
|||
goto end_region;
|
||||
}
|
||||
|
||||
"loop_startcc" (number) END {
|
||||
opcode = absl::StrCat("loop_start_oncc", group(1));
|
||||
goto end_region;
|
||||
}
|
||||
|
||||
"loop_lengthcc" (number) END {
|
||||
opcode = absl::StrCat("loop_end_oncc", group(1));
|
||||
goto end_region;
|
||||
}
|
||||
|
||||
"loop_length_oncc" (number) END {
|
||||
opcode = absl::StrCat("loop_end_oncc", group(1));
|
||||
goto end_region;
|
||||
}
|
||||
|
||||
* {
|
||||
goto end_region;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -128,13 +128,13 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode, bool cleanOpcode)
|
|||
case hash("loop_start"): // also loopstart
|
||||
loopRange.setStart(opcode.read(Default::loopStart));
|
||||
break;
|
||||
case hash("loop_start_oncc&"): // also loop_start_cc&
|
||||
case hash("loop_start_oncc&"): // also loop_start_cc&, loop_startcc&
|
||||
if (opcode.parameters.back() > config::numCCs)
|
||||
return false;
|
||||
|
||||
loopStartCC[opcode.parameters.back()] = opcode.read(Default::loopMod);
|
||||
break;
|
||||
case hash("loop_end_oncc&"): // also loop_end_cc&
|
||||
case hash("loop_end_oncc&"): // also loop_end_cc&, loop_lengthcc&, loop_length_oncc&, loop_length_cc&
|
||||
if (opcode.parameters.back() > config::numCCs)
|
||||
return false;
|
||||
|
||||
|
|
|
|||
|
|
@ -356,6 +356,9 @@ TEST_CASE("[Values] Loop range")
|
|||
<region> sample=kick.wav
|
||||
<region> sample=kick.wav loop_start_cc12=10 loop_end_cc14=-100
|
||||
<region> sample=kick.wav loop_start_oncc12=-10 loop_end_oncc14=100
|
||||
<region> sample=kick.wav loop_startcc12=-10 loop_lengthcc14=100
|
||||
<region> sample=kick.wav loop_length_oncc14=100
|
||||
<region> sample=kick.wav loop_length_cc14=100
|
||||
)");
|
||||
synth.dispatchMessage(client, 0, "/region0/loop_start_cc12", "", nullptr);
|
||||
synth.dispatchMessage(client, 0, "/region0/loop_end_cc14", "", nullptr);
|
||||
|
|
@ -363,6 +366,10 @@ TEST_CASE("[Values] Loop range")
|
|||
synth.dispatchMessage(client, 0, "/region1/loop_end_cc14", "", nullptr);
|
||||
synth.dispatchMessage(client, 0, "/region2/loop_start_cc12", "", nullptr);
|
||||
synth.dispatchMessage(client, 0, "/region2/loop_end_cc14", "", nullptr);
|
||||
synth.dispatchMessage(client, 0, "/region3/loop_start_cc12", "", nullptr);
|
||||
synth.dispatchMessage(client, 0, "/region3/loop_end_cc14", "", nullptr);
|
||||
synth.dispatchMessage(client, 0, "/region4/loop_end_cc14", "", nullptr);
|
||||
synth.dispatchMessage(client, 0, "/region5/loop_end_cc14", "", nullptr);
|
||||
std::vector<std::string> expected {
|
||||
"/region0/loop_start_cc12,h : { 0 }",
|
||||
"/region0/loop_end_cc14,h : { 0 }",
|
||||
|
|
@ -370,6 +377,10 @@ TEST_CASE("[Values] Loop range")
|
|||
"/region1/loop_end_cc14,h : { -100 }",
|
||||
"/region2/loop_start_cc12,h : { -10 }",
|
||||
"/region2/loop_end_cc14,h : { 100 }",
|
||||
"/region3/loop_start_cc12,h : { -10 }",
|
||||
"/region3/loop_end_cc14,h : { 100 }",
|
||||
"/region4/loop_end_cc14,h : { 100 }",
|
||||
"/region5/loop_end_cc14,h : { 100 }",
|
||||
};
|
||||
REQUIRE(messageList == expected);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue