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; 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) { switch (opcode.lettersOnlyHash) {
// Sound source: sample playback // Sound source: sample playback
case hash("sample"): case hash("sample"):
@ -66,6 +68,7 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
setValueFromOpcode(opcode, offsetRandom, Default::offsetRange); setValueFromOpcode(opcode, offsetRandom, Default::offsetRange);
break; break;
case hash("offset_cc&"): case hash("offset_cc&"):
case hash("offset_oncc&"):
if (opcode.parameters.back() > config::numCCs) if (opcode.parameters.back() > config::numCCs)
return false; return false;
if (auto value = readOpcode(opcode.value, Default::offsetCCRange)) 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"; absl::string_view busName = "main";
@ -252,6 +252,11 @@ void sfz::Synth::handleEffectOpcodes(const std::vector<Opcode>& members)
return *bus; 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) { for (const Opcode& opcode : members) {
switch (opcode.lettersOnlyHash) { switch (opcode.lettersOnlyHash) {
case hash("bus"): case hash("bus"):