Rebased on the new parser

This commit is contained in:
Paul Fd 2020-03-06 11:27:45 +01:00
parent 9ce32c636c
commit 09cca79ab0
2 changed files with 16 additions and 22 deletions

View file

@ -733,17 +733,17 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
setCCPairFromOpcode(opcode, amplitudeEG.ccSustain, Default::egOnCCPercentRange); setCCPairFromOpcode(opcode, amplitudeEG.ccSustain, Default::egOnCCPercentRange);
break; break;
case hash("effect"): // effect& case hash("effect&"):
{ {
const auto effectNumber = opcode.backParameter(); const auto effectNumber = opcode.parameters.back();
if (!effectNumber || *effectNumber < 1 || *effectNumber > config::maxEffectBuses) if (!effectNumber || effectNumber < 1 || effectNumber > config::maxEffectBuses)
break; break;
auto value = readOpcode<float>(opcode.value, { 0, 100 }); auto value = readOpcode<float>(opcode.value, { 0, 100 });
if (!value) if (!value)
break; break;
if (static_cast<size_t>(*effectNumber + 1) > gainToEffect.size()) if (static_cast<size_t>(effectNumber + 1) > gainToEffect.size())
gainToEffect.resize(*effectNumber + 1); gainToEffect.resize(effectNumber + 1);
gainToEffect[*effectNumber] = *value / 100; gainToEffect[effectNumber] = *value / 100;
break; break;
} }

View file

@ -223,24 +223,18 @@ void sfz::Synth::handleEffectOpcodes(const std::vector<Opcode>& members)
getOrCreateBus(0).setGainToMain(*valueOpt / 100); getOrCreateBus(0).setGainToMain(*valueOpt / 100);
break; break;
case hash("fxtomain"): // fx&tomain case hash("fx&tomain"): // fx&tomain
if (auto numberOpt = opcode.firstParameter()) { if (opcode.parameters.front() < 1 || opcode.parameters.front() > config::maxEffectBuses)
unsigned number = *numberOpt; break;
if (number < 1 || number > config::maxEffectBuses) if (auto valueOpt = readOpcode<float>(opcode.value, { 0, 100 }))
break; getOrCreateBus(opcode.parameters.front()).setGainToMain(*valueOpt / 100);
if (auto valueOpt = readOpcode<float>(opcode.value, { 0, 100 }))
getOrCreateBus(number).setGainToMain(*valueOpt / 100);
}
break; break;
case hash("fxtomix"): // fx&tomix case hash("fx&tomix"): // fx&tomix
if (auto numberOpt = opcode.firstParameter()) { if (opcode.parameters.front() < 1 || opcode.parameters.front() > config::maxEffectBuses)
unsigned number = *numberOpt; break;
if (number < 1 || number > config::maxEffectBuses) if (auto valueOpt = readOpcode<float>(opcode.value, { 0, 100 }))
break; getOrCreateBus(opcode.parameters.front()).setGainToMix(*valueOpt / 100);
if (auto valueOpt = readOpcode<float>(opcode.value, { 0, 100 }))
getOrCreateBus(number).setGainToMix(*valueOpt / 100);
}
break; break;
} }
} }