From b02236328da9c6864a92e157b718846bfaaf1d44 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Tue, 5 May 2020 03:47:16 +0200 Subject: [PATCH] Apply opcode cleanups in the synth --- src/sfizz/Region.cpp | 5 ++++- src/sfizz/Synth.cpp | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/sfizz/Region.cpp b/src/sfizz/Region.cpp index 117a6d26..cd6eb044 100644 --- a/src/sfizz/Region.cpp +++ b/src/sfizz/Region.cpp @@ -31,8 +31,10 @@ bool extendIfNecessary(std::vector& 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)) diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index 66871fcc..e9797e8a 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -236,7 +236,7 @@ void sfz::Synth::handleControlOpcodes(const std::vector& members) } } -void sfz::Synth::handleEffectOpcodes(const std::vector& members) +void sfz::Synth::handleEffectOpcodes(const std::vector& rawMembers) { absl::string_view busName = "main"; @@ -252,6 +252,11 @@ void sfz::Synth::handleEffectOpcodes(const std::vector& members) return *bus; }; + std::vector 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"):