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);
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<float>(opcode.value, { 0, 100 });
if (!value)
break;
if (static_cast<size_t>(*effectNumber + 1) > gainToEffect.size())
gainToEffect.resize(*effectNumber + 1);
gainToEffect[*effectNumber] = *value / 100;
if (static_cast<size_t>(effectNumber + 1) > gainToEffect.size())
gainToEffect.resize(effectNumber + 1);
gainToEffect[effectNumber] = *value / 100;
break;
}

View file

@ -223,24 +223,18 @@ void sfz::Synth::handleEffectOpcodes(const std::vector<Opcode>& 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<float>(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<float>(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<float>(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<float>(opcode.value, { 0, 100 }))
getOrCreateBus(opcode.parameters.front()).setGainToMix(*valueOpt / 100);
break;
}
}