diff --git a/src/sfizz/Region.cpp b/src/sfizz/Region.cpp index 72324fdb..3d3008bf 100644 --- a/src/sfizz/Region.cpp +++ b/src/sfizz/Region.cpp @@ -170,10 +170,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode) group = opcode.read(Default::group); break; case hash("off_by"): // also offby - if (opcode.value == "-1") - offBy.reset(); - else - offBy = opcode.read(Default::group); + offBy = opcode.readOptional(Default::group); break; case hash("off_mode"): // also offmode offMode = opcode.read(Default::offMode); @@ -189,16 +186,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode) notePolyphony = opcode.read(Default::notePolyphony); break; case hash("note_selfmask"): - switch (hash(opcode.value)) { - case hash("on"): - selfMask = SelfMask::mask; - break; - case hash("off"): - selfMask = SelfMask::dontMask; - break; - default: - DBG("Unkown self mask value:" << opcode.value); - } + selfMask = opcode.read(Default::selfMask); break; case hash("rt_dead"): rtDead = opcode.read(Default::rtDead); diff --git a/src/sfizz/Region.h b/src/sfizz/Region.h index 4b3ee6c2..d8d6368e 100644 --- a/src/sfizz/Region.h +++ b/src/sfizz/Region.h @@ -474,7 +474,7 @@ struct Region { bool bpmSwitched { true }; bool aftertouchSwitched { true }; std::bitset ccSwitched; - absl::string_view defaultPath { "" }; + std::string defaultPath { "" }; int sequenceCounter { 0 }; LEAK_DETECTOR(Region); diff --git a/tests/RegionValuesT.cpp b/tests/RegionValuesT.cpp index dc88297c..197fe80a 100644 --- a/tests/RegionValuesT.cpp +++ b/tests/RegionValuesT.cpp @@ -2291,7 +2291,7 @@ TEST_CASE("[Values] Self-mask") "/region0/note_selfmask,T : { }", "/region1/note_selfmask,F : { }", "/region2/note_selfmask,T : { }", - "/region3/note_selfmask,F : { }", + "/region3/note_selfmask,T : { }", }; REQUIRE(messageList == expected); }