From 08b424a744d058add15a8e6b229b6a81265ab0fa Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Sat, 20 Nov 2021 19:50:26 -0500 Subject: [PATCH] Add invert context menu item to Mixer. --- src/Mixer.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Mixer.cpp b/src/Mixer.cpp index 645ef9d..b5bab7b 100644 --- a/src/Mixer.cpp +++ b/src/Mixer.cpp @@ -21,6 +21,7 @@ struct Mixer : Module { LIGHTS_LEN }; + bool invert = false; bool average = false; Mixer() { @@ -42,6 +43,11 @@ struct Mixer : Module { } float gain = params[LEVEL_PARAM].getValue(); + // Invert + if (invert) { + gain *= -1.f; + } + // Average if (average) { gain /= std::max(1, connected); } @@ -68,6 +74,8 @@ struct Mixer : Module { json_t* rootJ = json_object(); // average json_object_set_new(rootJ, "average", json_boolean(average)); + // invert + json_object_set_new(rootJ, "invert", json_boolean(invert)); return rootJ; } @@ -76,6 +84,10 @@ struct Mixer : Module { json_t* averageJ = json_object_get(rootJ, "average"); if (averageJ) average = json_boolean_value(averageJ); + // invert + json_t* invertJ = json_object_get(rootJ, "invert"); + if (invertJ) + invert = json_boolean_value(invertJ); } }; @@ -108,6 +120,7 @@ struct MixerWidget : ModuleWidget { menu->addChild(new MenuSeparator); + menu->addChild(createBoolPtrMenuItem("Invert output", "", &module->invert)); menu->addChild(createBoolPtrMenuItem("Average voltages", "", &module->average)); } };