From 6472784bafdd91b9cc9ed7ae103a6e9dbb104e22 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Fri, 15 May 2020 08:31:33 +0200 Subject: [PATCH] Handle case-insensitivity in the cleanup --- src/sfizz/OpcodeCleanup.re | 4 ++++ src/sfizz/Synth.cpp | 5 ----- tests/OpcodeT.cpp | 10 +++++++++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/sfizz/OpcodeCleanup.re b/src/sfizz/OpcodeCleanup.re index 87658347..3cf7bc47 100644 --- a/src/sfizz/OpcodeCleanup.re +++ b/src/sfizz/OpcodeCleanup.re @@ -8,6 +8,7 @@ #include "Opcode.h" #include "absl/strings/string_view.h" #include "absl/strings/str_cat.h" +#include "absl/strings/ascii.h" #include namespace sfz { @@ -16,6 +17,9 @@ static std::string cleanUpOpcodeName(absl::string_view rawOpcode, OpcodeScope sc { std::string opcode { rawOpcode }; + // always convert it to lower case + absl::AsciiStrToLower(&opcode); + /*!re2c re2c:flags:posix-captures = 1; re2c:define:YYCTYPE = char; diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index 0dfbb0ac..5bc5c376 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -207,7 +207,6 @@ void sfz::Synth::handleControlOpcodes(const std::vector& members) const Opcode member = rawMember.cleanUp(kOpcodeScopeControl); switch (member.lettersOnlyHash) { - case hash("Set_cc&"): // fallthrough case hash("set_cc&"): if (Default::ccNumberRange.containsWithEnd(member.parameters.back())) { const auto ccValue = readOpcode(member.value, Default::midi7Range); @@ -215,7 +214,6 @@ void sfz::Synth::handleControlOpcodes(const std::vector& members) resources.midiState.ccEvent(0, member.parameters.back(), normalizeCC(*ccValue)); } break; - case hash("Set_hdcc&"): // fallthrough case hash("set_hdcc&"): if (Default::ccNumberRange.containsWithEnd(member.parameters.back())) { const auto ccValue = readOpcode(member.value, Default::normalizedRange); @@ -223,7 +221,6 @@ void sfz::Synth::handleControlOpcodes(const std::vector& members) resources.midiState.ccEvent(0, member.parameters.back(), *ccValue); } break; - case hash("Label_cc&"): // fallthrough case hash("label_cc&"): if (Default::ccNumberRange.containsWithEnd(member.parameters.back())) ccLabels.emplace_back(member.parameters.back(), std::string(member.value)); @@ -232,8 +229,6 @@ void sfz::Synth::handleControlOpcodes(const std::vector& members) if (Default::keyRange.containsWithEnd(member.parameters.back())) keyLabels.emplace_back(member.parameters.back(), std::string(member.value)); break; - case hash("Default_path"): - // fallthrough case hash("default_path"): defaultPath = absl::StrReplaceAll(trim(member.value), { { "\\", "/" } }); DBG("Changing default sample path to " << defaultPath); diff --git a/tests/OpcodeT.cpp b/tests/OpcodeT.cpp index 8a64a921..78ce2d87 100644 --- a/tests/OpcodeT.cpp +++ b/tests/OpcodeT.cpp @@ -161,9 +161,13 @@ TEST_CASE("[Opcode] Derived names") TEST_CASE("[Opcode] Normalization") { + // *_ccN + REQUIRE(sfz::Opcode("foo_cc7", "").cleanUp(sfz::kOpcodeScopeRegion).opcode == "foo_oncc7"); REQUIRE(sfz::Opcode("foo_cc7", "").cleanUp(sfz::kOpcodeScopeControl).opcode == "foo_cc7"); + // + static const std::pair regionSpecific[] = { // LFO SFZv1 {"amplfo_depthcc1", "amplfo_depth_oncc1"}, @@ -224,7 +228,7 @@ TEST_CASE("[Opcode] Normalization") REQUIRE(sfz::Opcode(input, "").cleanUp(sfz::kOpcodeScopeGeneric).opcode == input); } - /// + // static const std::pair controlSpecific[] = { // ARIA aliases @@ -237,4 +241,8 @@ TEST_CASE("[Opcode] Normalization") REQUIRE(sfz::Opcode(input, "").cleanUp(sfz::kOpcodeScopeControl).opcode == expected); REQUIRE(sfz::Opcode(input, "").cleanUp(sfz::kOpcodeScopeGeneric).opcode == input); } + + // case + + REQUIRE(sfz::Opcode("SaMpLe", "").cleanUp(sfz::kOpcodeScopeRegion).opcode == "sample"); }