diff --git a/src/sfizz/Region.cpp b/src/sfizz/Region.cpp index 117a6d26..cd6eb044 100644 --- a/src/sfizz/Region.cpp +++ b/src/sfizz/Region.cpp @@ -31,8 +31,10 @@ bool extendIfNecessary(std::vector& vec, unsigned size, unsigned defaultCapac return true; } -bool sfz::Region::parseOpcode(const Opcode& opcode) +bool sfz::Region::parseOpcode(const Opcode& rawOpcode) { + const Opcode opcode = rawOpcode.cleanUp(kOpcodeScopeRegion); + switch (opcode.lettersOnlyHash) { // Sound source: sample playback case hash("sample"): @@ -66,6 +68,7 @@ bool sfz::Region::parseOpcode(const Opcode& opcode) setValueFromOpcode(opcode, offsetRandom, Default::offsetRange); break; case hash("offset_cc&"): + case hash("offset_oncc&"): if (opcode.parameters.back() > config::numCCs) return false; if (auto value = readOpcode(opcode.value, Default::offsetCCRange)) diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index 66871fcc..e9797e8a 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -236,7 +236,7 @@ void sfz::Synth::handleControlOpcodes(const std::vector& members) } } -void sfz::Synth::handleEffectOpcodes(const std::vector& members) +void sfz::Synth::handleEffectOpcodes(const std::vector& rawMembers) { absl::string_view busName = "main"; @@ -252,6 +252,11 @@ void sfz::Synth::handleEffectOpcodes(const std::vector& members) return *bus; }; + std::vector members; + members.reserve(rawMembers.size()); + for (const Opcode& opcode : rawMembers) + members.push_back(opcode.cleanUp(kOpcodeScopeEffect)); + for (const Opcode& opcode : members) { switch (opcode.lettersOnlyHash) { case hash("bus"):