Pass all opcodes through cleanup, including <group> and <control>

This commit is contained in:
Jean Pierre Cimalando 2020-05-15 08:24:38 +02:00
parent b5548e85c0
commit a29b72feb2
2 changed files with 10 additions and 2 deletions

View file

@ -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

View file

@ -158,7 +158,9 @@ void sfz::Synth::clear()
void sfz::Synth::handleGlobalOpcodes(const std::vector<Opcode>& 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<Opcode>& members, const st
absl::optional<unsigned> 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);