diff --git a/src/sfizz/Region.cpp b/src/sfizz/Region.cpp index d0f2e706..94d0218e 100644 --- a/src/sfizz/Region.cpp +++ b/src/sfizz/Region.cpp @@ -733,17 +733,17 @@ bool sfz::Region::parseOpcode(const Opcode& opcode) setCCPairFromOpcode(opcode, amplitudeEG.ccSustain, Default::egOnCCPercentRange); break; - case hash("effect"): // effect& + case hash("effect&"): { - const auto effectNumber = opcode.backParameter(); - if (!effectNumber || *effectNumber < 1 || *effectNumber > config::maxEffectBuses) + const auto effectNumber = opcode.parameters.back(); + if (!effectNumber || effectNumber < 1 || effectNumber > config::maxEffectBuses) break; auto value = readOpcode(opcode.value, { 0, 100 }); if (!value) break; - if (static_cast(*effectNumber + 1) > gainToEffect.size()) - gainToEffect.resize(*effectNumber + 1); - gainToEffect[*effectNumber] = *value / 100; + if (static_cast(effectNumber + 1) > gainToEffect.size()) + gainToEffect.resize(effectNumber + 1); + gainToEffect[effectNumber] = *value / 100; break; } diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index efefd1e7..67dadef1 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -223,24 +223,18 @@ void sfz::Synth::handleEffectOpcodes(const std::vector& members) getOrCreateBus(0).setGainToMain(*valueOpt / 100); break; - case hash("fxtomain"): // fx&tomain - if (auto numberOpt = opcode.firstParameter()) { - unsigned number = *numberOpt; - if (number < 1 || number > config::maxEffectBuses) - break; - if (auto valueOpt = readOpcode(opcode.value, { 0, 100 })) - getOrCreateBus(number).setGainToMain(*valueOpt / 100); - } + case hash("fx&tomain"): // fx&tomain + if (opcode.parameters.front() < 1 || opcode.parameters.front() > config::maxEffectBuses) + break; + if (auto valueOpt = readOpcode(opcode.value, { 0, 100 })) + getOrCreateBus(opcode.parameters.front()).setGainToMain(*valueOpt / 100); break; - case hash("fxtomix"): // fx&tomix - if (auto numberOpt = opcode.firstParameter()) { - unsigned number = *numberOpt; - if (number < 1 || number > config::maxEffectBuses) - break; - if (auto valueOpt = readOpcode(opcode.value, { 0, 100 })) - getOrCreateBus(number).setGainToMix(*valueOpt / 100); - } + case hash("fx&tomix"): // fx&tomix + if (opcode.parameters.front() < 1 || opcode.parameters.front() > config::maxEffectBuses) + break; + if (auto valueOpt = readOpcode(opcode.value, { 0, 100 })) + getOrCreateBus(opcode.parameters.front()).setGainToMix(*valueOpt / 100); break; } }