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;
|
||||
case hash("seq_position"):
|
||||
setValueFromOpcode(opcode, sequencePosition, Default::sequenceRange);
|
||||
sequenceSwitched = (opcode.value == "1");
|
||||
sequenceSwitched = false;
|
||||
break;
|
||||
// Region logic: triggers
|
||||
case hash("trigger"):
|
||||
|
|
@ -1571,12 +1571,8 @@ bool sfz::Region::registerNoteOn(int noteNumber, float velocity, float randValue
|
|||
ASSERT(velocity >= 0.0f && velocity <= 1.0f);
|
||||
|
||||
if (keyswitchRange.containsWithEnd(noteNumber)) {
|
||||
if (keyswitch) {
|
||||
if (*keyswitch == noteNumber)
|
||||
keySwitched = true;
|
||||
else
|
||||
keySwitched = false;
|
||||
}
|
||||
if (keyswitch)
|
||||
keySwitched = (*keyswitch == noteNumber);
|
||||
|
||||
if (keyswitchDown && *keyswitchDown == noteNumber)
|
||||
keySwitched = true;
|
||||
|
|
@ -1588,18 +1584,11 @@ bool sfz::Region::registerNoteOn(int noteNumber, float velocity, float randValue
|
|||
const bool keyOk = keyRange.containsWithEnd(noteNumber);
|
||||
if (keyOk) {
|
||||
// Sequence activation
|
||||
sequenceCounter += 1;
|
||||
if ((sequenceCounter % sequenceLength) == sequencePosition - 1)
|
||||
sequenceSwitched = true;
|
||||
else
|
||||
sequenceSwitched = false;
|
||||
sequenceSwitched =
|
||||
((sequenceCounter++ % sequenceLength) == sequencePosition - 1);
|
||||
|
||||
if (previousNote) {
|
||||
if (*previousNote == noteNumber)
|
||||
previousKeySwitched = true;
|
||||
else
|
||||
previousKeySwitched = false;
|
||||
}
|
||||
if (previousNote)
|
||||
previousKeySwitched = (*previousNote == noteNumber);
|
||||
}
|
||||
|
||||
if (!isSwitchedOn())
|
||||
|
|
|
|||
|
|
@ -216,10 +216,6 @@ TEST_CASE("Region activation", "Region tests")
|
|||
region.parseOpcode({ "seq_length", "2" });
|
||||
region.parseOpcode({ "seq_position", "1" });
|
||||
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());
|
||||
region.registerNoteOn(40, 64_norm, 0.5f);
|
||||
REQUIRE(region.isSwitchedOn());
|
||||
|
|
@ -229,6 +225,10 @@ TEST_CASE("Region activation", "Region tests")
|
|||
REQUIRE(!region.isSwitchedOn());
|
||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||
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")
|
||||
{
|
||||
|
|
@ -237,10 +237,6 @@ TEST_CASE("Region activation", "Region tests")
|
|||
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());
|
||||
region.registerNoteOn(40, 64_norm, 0.5f);
|
||||
REQUIRE(!region.isSwitchedOn());
|
||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||
REQUIRE(!region.isSwitchedOn());
|
||||
|
|
@ -248,6 +244,10 @@ TEST_CASE("Region activation", "Region tests")
|
|||
REQUIRE(region.isSwitchedOn());
|
||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||
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")
|
||||
{
|
||||
|
|
@ -256,6 +256,10 @@ TEST_CASE("Region activation", "Region tests")
|
|||
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());
|
||||
region.registerNoteOn(40, 64_norm, 0.5f);
|
||||
REQUIRE(region.isSwitchedOn());
|
||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||
REQUIRE(region.isSwitchedOn());
|
||||
|
|
@ -267,9 +271,5 @@ TEST_CASE("Region activation", "Region tests")
|
|||
REQUIRE(!region.isSwitchedOn());
|
||||
region.registerNoteOff(40, 0_norm, 0.5f);
|
||||
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