diff --git a/src/sfizz/Region.cpp b/src/sfizz/Region.cpp index 35e6b0fc..dd032c8f 100644 --- a/src/sfizz/Region.cpp +++ b/src/sfizz/Region.cpp @@ -138,7 +138,10 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode) setValueFromOpcode(opcode, group, Default::groupRange); break; case hash("off_by"): // also offby - setValueFromOpcode(opcode, offBy, Default::groupRange); + if (opcode.value == "-1") + offBy.reset(); + else + setValueFromOpcode(opcode, offBy, Default::groupRange); break; case hash("off_mode"): // also offmode switch (hash(opcode.value)) { diff --git a/tests/RegionT.cpp b/tests/RegionT.cpp index c18638cd..db2c9511 100644 --- a/tests/RegionT.cpp +++ b/tests/RegionT.cpp @@ -180,8 +180,7 @@ TEST_CASE("[Region] Parsing opcodes") REQUIRE(region.offBy); REQUIRE(*region.offBy == 5); region.parseOpcode({ "off_by", "-1" }); - REQUIRE(region.offBy); - REQUIRE(*region.offBy == 0); + REQUIRE(!region.offBy); } SECTION("off_mode")