Apply opcode cleanups in the synth

This commit is contained in:
Jean Pierre Cimalando 2020-05-05 03:47:16 +02:00
parent 3d508e9860
commit b02236328d
2 changed files with 10 additions and 2 deletions

View file

@ -31,8 +31,10 @@ bool extendIfNecessary(std::vector<T>& vec, unsigned size, unsigned defaultCapac
return true;
}
bool sfz::Region::parseOpcode(const Opcode& opcode)
bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
{
const Opcode opcode = rawOpcode.cleanUp(kOpcodeScopeRegion);
switch (opcode.lettersOnlyHash) {
// Sound source: sample playback
case hash("sample"):
@ -66,6 +68,7 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
setValueFromOpcode(opcode, offsetRandom, Default::offsetRange);
break;
case hash("offset_cc&"):
case hash("offset_oncc&"):
if (opcode.parameters.back() > config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::offsetCCRange))

View file

@ -236,7 +236,7 @@ void sfz::Synth::handleControlOpcodes(const std::vector<Opcode>& members)
}
}
void sfz::Synth::handleEffectOpcodes(const std::vector<Opcode>& members)
void sfz::Synth::handleEffectOpcodes(const std::vector<Opcode>& rawMembers)
{
absl::string_view busName = "main";
@ -252,6 +252,11 @@ void sfz::Synth::handleEffectOpcodes(const std::vector<Opcode>& members)
return *bus;
};
std::vector<Opcode> members;
members.reserve(rawMembers.size());
for (const Opcode& opcode : rawMembers)
members.push_back(opcode.cleanUp(kOpcodeScopeEffect));
for (const Opcode& opcode : members) {
switch (opcode.lettersOnlyHash) {
case hash("bus"):