diff --git a/src/sfizz/Opcode.h b/src/sfizz/Opcode.h index 4d77a96d..04cf67ac 100644 --- a/src/sfizz/Opcode.h +++ b/src/sfizz/Opcode.h @@ -42,8 +42,12 @@ enum OpcodeCategory { enum OpcodeScope { //! unknown scope or other kOpcodeScopeGeneric, + //! global scope + kOpcodeScopeGlobal, //! control scope kOpcodeScopeControl, + //! group scope + kOpcodeScopeGroup, //! region scope kOpcodeScopeRegion, //! effect scope diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index e458a8f8..0dfbb0ac 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -158,7 +158,9 @@ void sfz::Synth::clear() void sfz::Synth::handleGlobalOpcodes(const std::vector& members) { - for (auto& member : members) { + for (auto& rawMember : members) { + const Opcode member = rawMember.cleanUp(kOpcodeScopeGlobal); + switch (member.lettersOnlyHash) { case hash("sw_default"): setValueFromOpcode(member, defaultSwitch, Default::keyRange); @@ -176,7 +178,9 @@ void sfz::Synth::handleGroupOpcodes(const std::vector& members, const st absl::optional groupIdx; unsigned maxPolyphony { config::maxVoices }; - const auto parseOpcode = [&](const Opcode& member) { + const auto parseOpcode = [&](const Opcode& rawMember) { + const Opcode member = rawMember.cleanUp(kOpcodeScopeGroup); + switch (member.lettersOnlyHash) { case hash("group"): setValueFromOpcode(member, groupIdx, Default::groupRange);