Have the sequence start at the first item
This commit is contained in:
parent
5b28feac03
commit
d996130527
2 changed files with 19 additions and 30 deletions
|
|
@ -363,7 +363,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
||||||
break;
|
break;
|
||||||
case hash("seq_position"):
|
case hash("seq_position"):
|
||||||
setValueFromOpcode(opcode, sequencePosition, Default::sequenceRange);
|
setValueFromOpcode(opcode, sequencePosition, Default::sequenceRange);
|
||||||
sequenceSwitched = (opcode.value == "1");
|
sequenceSwitched = false;
|
||||||
break;
|
break;
|
||||||
// Region logic: triggers
|
// Region logic: triggers
|
||||||
case hash("trigger"):
|
case hash("trigger"):
|
||||||
|
|
@ -1571,12 +1571,8 @@ bool sfz::Region::registerNoteOn(int noteNumber, float velocity, float randValue
|
||||||
ASSERT(velocity >= 0.0f && velocity <= 1.0f);
|
ASSERT(velocity >= 0.0f && velocity <= 1.0f);
|
||||||
|
|
||||||
if (keyswitchRange.containsWithEnd(noteNumber)) {
|
if (keyswitchRange.containsWithEnd(noteNumber)) {
|
||||||
if (keyswitch) {
|
if (keyswitch)
|
||||||
if (*keyswitch == noteNumber)
|
keySwitched = (*keyswitch == noteNumber);
|
||||||
keySwitched = true;
|
|
||||||
else
|
|
||||||
keySwitched = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (keyswitchDown && *keyswitchDown == noteNumber)
|
if (keyswitchDown && *keyswitchDown == noteNumber)
|
||||||
keySwitched = true;
|
keySwitched = true;
|
||||||
|
|
@ -1588,18 +1584,11 @@ bool sfz::Region::registerNoteOn(int noteNumber, float velocity, float randValue
|
||||||
const bool keyOk = keyRange.containsWithEnd(noteNumber);
|
const bool keyOk = keyRange.containsWithEnd(noteNumber);
|
||||||
if (keyOk) {
|
if (keyOk) {
|
||||||
// Sequence activation
|
// Sequence activation
|
||||||
sequenceCounter += 1;
|
sequenceSwitched =
|
||||||
if ((sequenceCounter % sequenceLength) == sequencePosition - 1)
|
((sequenceCounter++ % sequenceLength) == sequencePosition - 1);
|
||||||
sequenceSwitched = true;
|
|
||||||
else
|
|
||||||
sequenceSwitched = false;
|
|
||||||
|
|
||||||
if (previousNote) {
|
if (previousNote)
|
||||||
if (*previousNote == noteNumber)
|
previousKeySwitched = (*previousNote == noteNumber);
|
||||||
previousKeySwitched = true;
|
|
||||||
else
|
|
||||||
previousKeySwitched = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isSwitchedOn())
|
if (!isSwitchedOn())
|
||||||
|
|
|
||||||
|
|
@ -216,10 +216,6 @@ TEST_CASE("Region activation", "Region tests")
|
||||||
region.parseOpcode({ "seq_length", "2" });
|
region.parseOpcode({ "seq_length", "2" });
|
||||||
region.parseOpcode({ "seq_position", "1" });
|
region.parseOpcode({ "seq_position", "1" });
|
||||||
region.parseOpcode({ "key", "40" });
|
region.parseOpcode({ "key", "40" });
|
||||||
REQUIRE(region.isSwitchedOn());
|
|
||||||
region.registerNoteOn(40, 64_norm, 0.5f);
|
|
||||||
REQUIRE(!region.isSwitchedOn());
|
|
||||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
|
||||||
REQUIRE(!region.isSwitchedOn());
|
REQUIRE(!region.isSwitchedOn());
|
||||||
region.registerNoteOn(40, 64_norm, 0.5f);
|
region.registerNoteOn(40, 64_norm, 0.5f);
|
||||||
REQUIRE(region.isSwitchedOn());
|
REQUIRE(region.isSwitchedOn());
|
||||||
|
|
@ -229,6 +225,10 @@ TEST_CASE("Region activation", "Region tests")
|
||||||
REQUIRE(!region.isSwitchedOn());
|
REQUIRE(!region.isSwitchedOn());
|
||||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||||
REQUIRE(!region.isSwitchedOn());
|
REQUIRE(!region.isSwitchedOn());
|
||||||
|
region.registerNoteOn(40, 64_norm, 0.5f);
|
||||||
|
REQUIRE(region.isSwitchedOn());
|
||||||
|
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||||
|
REQUIRE(region.isSwitchedOn());
|
||||||
}
|
}
|
||||||
SECTION("Sequences: length 2, position 2")
|
SECTION("Sequences: length 2, position 2")
|
||||||
{
|
{
|
||||||
|
|
@ -237,10 +237,6 @@ TEST_CASE("Region activation", "Region tests")
|
||||||
region.parseOpcode({ "key", "40" });
|
region.parseOpcode({ "key", "40" });
|
||||||
REQUIRE(!region.isSwitchedOn());
|
REQUIRE(!region.isSwitchedOn());
|
||||||
region.registerNoteOn(40, 64_norm, 0.5f);
|
region.registerNoteOn(40, 64_norm, 0.5f);
|
||||||
REQUIRE(region.isSwitchedOn());
|
|
||||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
|
||||||
REQUIRE(region.isSwitchedOn());
|
|
||||||
region.registerNoteOn(40, 64_norm, 0.5f);
|
|
||||||
REQUIRE(!region.isSwitchedOn());
|
REQUIRE(!region.isSwitchedOn());
|
||||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||||
REQUIRE(!region.isSwitchedOn());
|
REQUIRE(!region.isSwitchedOn());
|
||||||
|
|
@ -248,6 +244,10 @@ TEST_CASE("Region activation", "Region tests")
|
||||||
REQUIRE(region.isSwitchedOn());
|
REQUIRE(region.isSwitchedOn());
|
||||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||||
REQUIRE(region.isSwitchedOn());
|
REQUIRE(region.isSwitchedOn());
|
||||||
|
region.registerNoteOn(40, 64_norm, 0.5f);
|
||||||
|
REQUIRE(!region.isSwitchedOn());
|
||||||
|
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||||
|
REQUIRE(!region.isSwitchedOn());
|
||||||
}
|
}
|
||||||
SECTION("Sequences: length 3, position 2")
|
SECTION("Sequences: length 3, position 2")
|
||||||
{
|
{
|
||||||
|
|
@ -256,6 +256,10 @@ TEST_CASE("Region activation", "Region tests")
|
||||||
region.parseOpcode({ "key", "40" });
|
region.parseOpcode({ "key", "40" });
|
||||||
REQUIRE(!region.isSwitchedOn());
|
REQUIRE(!region.isSwitchedOn());
|
||||||
region.registerNoteOn(40, 64_norm, 0.5f);
|
region.registerNoteOn(40, 64_norm, 0.5f);
|
||||||
|
REQUIRE(!region.isSwitchedOn());
|
||||||
|
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||||
|
REQUIRE(!region.isSwitchedOn());
|
||||||
|
region.registerNoteOn(40, 64_norm, 0.5f);
|
||||||
REQUIRE(region.isSwitchedOn());
|
REQUIRE(region.isSwitchedOn());
|
||||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||||
REQUIRE(region.isSwitchedOn());
|
REQUIRE(region.isSwitchedOn());
|
||||||
|
|
@ -267,9 +271,5 @@ TEST_CASE("Region activation", "Region tests")
|
||||||
REQUIRE(!region.isSwitchedOn());
|
REQUIRE(!region.isSwitchedOn());
|
||||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||||
REQUIRE(!region.isSwitchedOn());
|
REQUIRE(!region.isSwitchedOn());
|
||||||
region.registerNoteOn(40, 64_norm, 0.5f);
|
|
||||||
REQUIRE(region.isSwitchedOn());
|
|
||||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
|
||||||
REQUIRE(region.isSwitchedOn());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue