BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

commit ce5f687081ffd83a43ff57554abbf0d163a590c0
parent 438ab94adece65fca9ff8073a9e97c9b126327e6
Author: Matt Demanett <matt@demanett.net>
Date:   Mon, 20 Apr 2020 23:15:54 -0400

SWITCH*: add option to completely disable inverting, to make buttons easier to midi map. #111 #108

Diffstat:
Msrc/Switch1616.hpp | 512++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/Switch44.hpp | 32++++++++++++++++----------------
Msrc/Switch88.hpp | 128++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/matrix_base.cpp | 64+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Msrc/matrix_base.hpp | 24+++++++++++++++++-------
Msrc/widgets.cpp | 2+-
6 files changed, 413 insertions(+), 349 deletions(-)

diff --git a/src/Switch1616.hpp b/src/Switch1616.hpp @@ -311,277 +311,277 @@ struct Switch1616 : SwitchMatrixModule { Switch1616() : SwitchMatrixModule(16, MIX_1_1_PARAM, IN1_INPUT, OUT1_OUTPUT) { config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); - configParam(MIX_1_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1A", "%", 0.0f, 100.0f); - configParam(MIX_1_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2A", "%", 0.0f, 100.0f); - configParam(MIX_1_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3A", "%", 0.0f, 100.0f); - configParam(MIX_1_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4A", "%", 0.0f, 100.0f); - configParam(MIX_1_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5A", "%", 0.0f, 100.0f); - configParam(MIX_1_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6A", "%", 0.0f, 100.0f); - configParam(MIX_1_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7A", "%", 0.0f, 100.0f); - configParam(MIX_1_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8A", "%", 0.0f, 100.0f); - configParam(MIX_1_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9A", "%", 0.0f, 100.0f); - configParam(MIX_1_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10A", "%", 0.0f, 100.0f); - configParam(MIX_1_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11A", "%", 0.0f, 100.0f); - configParam(MIX_1_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12A", "%", 0.0f, 100.0f); - configParam(MIX_1_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13A", "%", 0.0f, 100.0f); - configParam(MIX_1_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14A", "%", 0.0f, 100.0f); - configParam(MIX_1_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15A", "%", 0.0f, 100.0f); - configParam(MIX_1_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16A", "%", 0.0f, 100.0f); + configSwitchParam(MIX_1_1_PARAM, "Mix 1A"); + configSwitchParam(MIX_1_2_PARAM, "Mix 2A"); + configSwitchParam(MIX_1_3_PARAM, "Mix 3A"); + configSwitchParam(MIX_1_4_PARAM, "Mix 4A"); + configSwitchParam(MIX_1_5_PARAM, "Mix 5A"); + configSwitchParam(MIX_1_6_PARAM, "Mix 6A"); + configSwitchParam(MIX_1_7_PARAM, "Mix 7A"); + configSwitchParam(MIX_1_8_PARAM, "Mix 8A"); + configSwitchParam(MIX_1_9_PARAM, "Mix 9A"); + configSwitchParam(MIX_1_10_PARAM, "Mix 10A"); + configSwitchParam(MIX_1_11_PARAM, "Mix 11A"); + configSwitchParam(MIX_1_12_PARAM, "Mix 12A"); + configSwitchParam(MIX_1_13_PARAM, "Mix 13A"); + configSwitchParam(MIX_1_14_PARAM, "Mix 14A"); + configSwitchParam(MIX_1_15_PARAM, "Mix 15A"); + configSwitchParam(MIX_1_16_PARAM, "Mix 16A"); - configParam(MIX_2_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1B", "%", 0.0f, 100.0f); - configParam(MIX_2_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2B", "%", 0.0f, 100.0f); - configParam(MIX_2_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3B", "%", 0.0f, 100.0f); - configParam(MIX_2_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4B", "%", 0.0f, 100.0f); - configParam(MIX_2_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5B", "%", 0.0f, 100.0f); - configParam(MIX_2_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6B", "%", 0.0f, 100.0f); - configParam(MIX_2_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7B", "%", 0.0f, 100.0f); - configParam(MIX_2_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8B", "%", 0.0f, 100.0f); - configParam(MIX_2_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9B", "%", 0.0f, 100.0f); - configParam(MIX_2_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10B", "%", 0.0f, 100.0f); - configParam(MIX_2_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11B", "%", 0.0f, 100.0f); - configParam(MIX_2_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12B", "%", 0.0f, 100.0f); - configParam(MIX_2_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13B", "%", 0.0f, 100.0f); - configParam(MIX_2_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14B", "%", 0.0f, 100.0f); - configParam(MIX_2_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15B", "%", 0.0f, 100.0f); - configParam(MIX_2_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16B", "%", 0.0f, 100.0f); + configSwitchParam(MIX_2_1_PARAM, "Mix 1B"); + configSwitchParam(MIX_2_2_PARAM, "Mix 2B"); + configSwitchParam(MIX_2_3_PARAM, "Mix 3B"); + configSwitchParam(MIX_2_4_PARAM, "Mix 4B"); + configSwitchParam(MIX_2_5_PARAM, "Mix 5B"); + configSwitchParam(MIX_2_6_PARAM, "Mix 6B"); + configSwitchParam(MIX_2_7_PARAM, "Mix 7B"); + configSwitchParam(MIX_2_8_PARAM, "Mix 8B"); + configSwitchParam(MIX_2_9_PARAM, "Mix 9B"); + configSwitchParam(MIX_2_10_PARAM, "Mix 10B"); + configSwitchParam(MIX_2_11_PARAM, "Mix 11B"); + configSwitchParam(MIX_2_12_PARAM, "Mix 12B"); + configSwitchParam(MIX_2_13_PARAM, "Mix 13B"); + configSwitchParam(MIX_2_14_PARAM, "Mix 14B"); + configSwitchParam(MIX_2_15_PARAM, "Mix 15B"); + configSwitchParam(MIX_2_16_PARAM, "Mix 16B"); - configParam(MIX_3_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1C", "%", 0.0f, 100.0f); - configParam(MIX_3_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2C", "%", 0.0f, 100.0f); - configParam(MIX_3_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3C", "%", 0.0f, 100.0f); - configParam(MIX_3_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4C", "%", 0.0f, 100.0f); - configParam(MIX_3_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5C", "%", 0.0f, 100.0f); - configParam(MIX_3_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6C", "%", 0.0f, 100.0f); - configParam(MIX_3_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7C", "%", 0.0f, 100.0f); - configParam(MIX_3_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8C", "%", 0.0f, 100.0f); - configParam(MIX_3_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9C", "%", 0.0f, 100.0f); - configParam(MIX_3_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10C", "%", 0.0f, 100.0f); - configParam(MIX_3_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11C", "%", 0.0f, 100.0f); - configParam(MIX_3_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12C", "%", 0.0f, 100.0f); - configParam(MIX_3_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13C", "%", 0.0f, 100.0f); - configParam(MIX_3_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14C", "%", 0.0f, 100.0f); - configParam(MIX_3_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15C", "%", 0.0f, 100.0f); - configParam(MIX_3_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16C", "%", 0.0f, 100.0f); + configSwitchParam(MIX_3_1_PARAM, "Mix 1C"); + configSwitchParam(MIX_3_2_PARAM, "Mix 2C"); + configSwitchParam(MIX_3_3_PARAM, "Mix 3C"); + configSwitchParam(MIX_3_4_PARAM, "Mix 4C"); + configSwitchParam(MIX_3_5_PARAM, "Mix 5C"); + configSwitchParam(MIX_3_6_PARAM, "Mix 6C"); + configSwitchParam(MIX_3_7_PARAM, "Mix 7C"); + configSwitchParam(MIX_3_8_PARAM, "Mix 8C"); + configSwitchParam(MIX_3_9_PARAM, "Mix 9C"); + configSwitchParam(MIX_3_10_PARAM, "Mix 10C"); + configSwitchParam(MIX_3_11_PARAM, "Mix 11C"); + configSwitchParam(MIX_3_12_PARAM, "Mix 12C"); + configSwitchParam(MIX_3_13_PARAM, "Mix 13C"); + configSwitchParam(MIX_3_14_PARAM, "Mix 14C"); + configSwitchParam(MIX_3_15_PARAM, "Mix 15C"); + configSwitchParam(MIX_3_16_PARAM, "Mix 16C"); - configParam(MIX_4_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1D", "%", 0.0f, 100.0f); - configParam(MIX_4_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2D", "%", 0.0f, 100.0f); - configParam(MIX_4_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3D", "%", 0.0f, 100.0f); - configParam(MIX_4_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4D", "%", 0.0f, 100.0f); - configParam(MIX_4_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5D", "%", 0.0f, 100.0f); - configParam(MIX_4_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6D", "%", 0.0f, 100.0f); - configParam(MIX_4_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7D", "%", 0.0f, 100.0f); - configParam(MIX_4_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8D", "%", 0.0f, 100.0f); - configParam(MIX_4_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9D", "%", 0.0f, 100.0f); - configParam(MIX_4_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10D", "%", 0.0f, 100.0f); - configParam(MIX_4_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11D", "%", 0.0f, 100.0f); - configParam(MIX_4_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12D", "%", 0.0f, 100.0f); - configParam(MIX_4_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13D", "%", 0.0f, 100.0f); - configParam(MIX_4_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14D", "%", 0.0f, 100.0f); - configParam(MIX_4_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15D", "%", 0.0f, 100.0f); - configParam(MIX_4_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16D", "%", 0.0f, 100.0f); + configSwitchParam(MIX_4_1_PARAM, "Mix 1D"); + configSwitchParam(MIX_4_2_PARAM, "Mix 2D"); + configSwitchParam(MIX_4_3_PARAM, "Mix 3D"); + configSwitchParam(MIX_4_4_PARAM, "Mix 4D"); + configSwitchParam(MIX_4_5_PARAM, "Mix 5D"); + configSwitchParam(MIX_4_6_PARAM, "Mix 6D"); + configSwitchParam(MIX_4_7_PARAM, "Mix 7D"); + configSwitchParam(MIX_4_8_PARAM, "Mix 8D"); + configSwitchParam(MIX_4_9_PARAM, "Mix 9D"); + configSwitchParam(MIX_4_10_PARAM, "Mix 10D"); + configSwitchParam(MIX_4_11_PARAM, "Mix 11D"); + configSwitchParam(MIX_4_12_PARAM, "Mix 12D"); + configSwitchParam(MIX_4_13_PARAM, "Mix 13D"); + configSwitchParam(MIX_4_14_PARAM, "Mix 14D"); + configSwitchParam(MIX_4_15_PARAM, "Mix 15D"); + configSwitchParam(MIX_4_16_PARAM, "Mix 16D"); - configParam(MIX_5_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1E", "%", 0.0f, 100.0f); - configParam(MIX_5_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2E", "%", 0.0f, 100.0f); - configParam(MIX_5_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3E", "%", 0.0f, 100.0f); - configParam(MIX_5_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4E", "%", 0.0f, 100.0f); - configParam(MIX_5_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5E", "%", 0.0f, 100.0f); - configParam(MIX_5_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6E", "%", 0.0f, 100.0f); - configParam(MIX_5_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7E", "%", 0.0f, 100.0f); - configParam(MIX_5_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8E", "%", 0.0f, 100.0f); - configParam(MIX_5_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9E", "%", 0.0f, 100.0f); - configParam(MIX_5_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10E", "%", 0.0f, 100.0f); - configParam(MIX_5_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11E", "%", 0.0f, 100.0f); - configParam(MIX_5_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12E", "%", 0.0f, 100.0f); - configParam(MIX_5_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13E", "%", 0.0f, 100.0f); - configParam(MIX_5_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14E", "%", 0.0f, 100.0f); - configParam(MIX_5_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15E", "%", 0.0f, 100.0f); - configParam(MIX_5_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16E", "%", 0.0f, 100.0f); + configSwitchParam(MIX_5_1_PARAM, "Mix 1E"); + configSwitchParam(MIX_5_2_PARAM, "Mix 2E"); + configSwitchParam(MIX_5_3_PARAM, "Mix 3E"); + configSwitchParam(MIX_5_4_PARAM, "Mix 4E"); + configSwitchParam(MIX_5_5_PARAM, "Mix 5E"); + configSwitchParam(MIX_5_6_PARAM, "Mix 6E"); + configSwitchParam(MIX_5_7_PARAM, "Mix 7E"); + configSwitchParam(MIX_5_8_PARAM, "Mix 8E"); + configSwitchParam(MIX_5_9_PARAM, "Mix 9E"); + configSwitchParam(MIX_5_10_PARAM, "Mix 10E"); + configSwitchParam(MIX_5_11_PARAM, "Mix 11E"); + configSwitchParam(MIX_5_12_PARAM, "Mix 12E"); + configSwitchParam(MIX_5_13_PARAM, "Mix 13E"); + configSwitchParam(MIX_5_14_PARAM, "Mix 14E"); + configSwitchParam(MIX_5_15_PARAM, "Mix 15E"); + configSwitchParam(MIX_5_16_PARAM, "Mix 16E"); - configParam(MIX_6_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1F", "%", 0.0f, 100.0f); - configParam(MIX_6_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2F", "%", 0.0f, 100.0f); - configParam(MIX_6_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3F", "%", 0.0f, 100.0f); - configParam(MIX_6_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4F", "%", 0.0f, 100.0f); - configParam(MIX_6_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5F", "%", 0.0f, 100.0f); - configParam(MIX_6_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6F", "%", 0.0f, 100.0f); - configParam(MIX_6_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7F", "%", 0.0f, 100.0f); - configParam(MIX_6_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8F", "%", 0.0f, 100.0f); - configParam(MIX_6_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9F", "%", 0.0f, 100.0f); - configParam(MIX_6_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10F", "%", 0.0f, 100.0f); - configParam(MIX_6_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11F", "%", 0.0f, 100.0f); - configParam(MIX_6_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12F", "%", 0.0f, 100.0f); - configParam(MIX_6_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13F", "%", 0.0f, 100.0f); - configParam(MIX_6_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14F", "%", 0.0f, 100.0f); - configParam(MIX_6_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15F", "%", 0.0f, 100.0f); - configParam(MIX_6_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16F", "%", 0.0f, 100.0f); + configSwitchParam(MIX_6_1_PARAM, "Mix 1F"); + configSwitchParam(MIX_6_2_PARAM, "Mix 2F"); + configSwitchParam(MIX_6_3_PARAM, "Mix 3F"); + configSwitchParam(MIX_6_4_PARAM, "Mix 4F"); + configSwitchParam(MIX_6_5_PARAM, "Mix 5F"); + configSwitchParam(MIX_6_6_PARAM, "Mix 6F"); + configSwitchParam(MIX_6_7_PARAM, "Mix 7F"); + configSwitchParam(MIX_6_8_PARAM, "Mix 8F"); + configSwitchParam(MIX_6_9_PARAM, "Mix 9F"); + configSwitchParam(MIX_6_10_PARAM, "Mix 10F"); + configSwitchParam(MIX_6_11_PARAM, "Mix 11F"); + configSwitchParam(MIX_6_12_PARAM, "Mix 12F"); + configSwitchParam(MIX_6_13_PARAM, "Mix 13F"); + configSwitchParam(MIX_6_14_PARAM, "Mix 14F"); + configSwitchParam(MIX_6_15_PARAM, "Mix 15F"); + configSwitchParam(MIX_6_16_PARAM, "Mix 16F"); - configParam(MIX_7_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1G", "%", 0.0f, 100.0f); - configParam(MIX_7_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2G", "%", 0.0f, 100.0f); - configParam(MIX_7_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3G", "%", 0.0f, 100.0f); - configParam(MIX_7_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4G", "%", 0.0f, 100.0f); - configParam(MIX_7_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5G", "%", 0.0f, 100.0f); - configParam(MIX_7_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6G", "%", 0.0f, 100.0f); - configParam(MIX_7_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7G", "%", 0.0f, 100.0f); - configParam(MIX_7_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8G", "%", 0.0f, 100.0f); - configParam(MIX_7_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9G", "%", 0.0f, 100.0f); - configParam(MIX_7_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10G", "%", 0.0f, 100.0f); - configParam(MIX_7_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11G", "%", 0.0f, 100.0f); - configParam(MIX_7_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12G", "%", 0.0f, 100.0f); - configParam(MIX_7_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13G", "%", 0.0f, 100.0f); - configParam(MIX_7_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14G", "%", 0.0f, 100.0f); - configParam(MIX_7_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15G", "%", 0.0f, 100.0f); - configParam(MIX_7_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16G", "%", 0.0f, 100.0f); + configSwitchParam(MIX_7_1_PARAM, "Mix 1G"); + configSwitchParam(MIX_7_2_PARAM, "Mix 2G"); + configSwitchParam(MIX_7_3_PARAM, "Mix 3G"); + configSwitchParam(MIX_7_4_PARAM, "Mix 4G"); + configSwitchParam(MIX_7_5_PARAM, "Mix 5G"); + configSwitchParam(MIX_7_6_PARAM, "Mix 6G"); + configSwitchParam(MIX_7_7_PARAM, "Mix 7G"); + configSwitchParam(MIX_7_8_PARAM, "Mix 8G"); + configSwitchParam(MIX_7_9_PARAM, "Mix 9G"); + configSwitchParam(MIX_7_10_PARAM, "Mix 10G"); + configSwitchParam(MIX_7_11_PARAM, "Mix 11G"); + configSwitchParam(MIX_7_12_PARAM, "Mix 12G"); + configSwitchParam(MIX_7_13_PARAM, "Mix 13G"); + configSwitchParam(MIX_7_14_PARAM, "Mix 14G"); + configSwitchParam(MIX_7_15_PARAM, "Mix 15G"); + configSwitchParam(MIX_7_16_PARAM, "Mix 16G"); - configParam(MIX_8_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1H", "%", 0.0f, 100.0f); - configParam(MIX_8_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2H", "%", 0.0f, 100.0f); - configParam(MIX_8_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3H", "%", 0.0f, 100.0f); - configParam(MIX_8_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4H", "%", 0.0f, 100.0f); - configParam(MIX_8_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5H", "%", 0.0f, 100.0f); - configParam(MIX_8_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6H", "%", 0.0f, 100.0f); - configParam(MIX_8_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7H", "%", 0.0f, 100.0f); - configParam(MIX_8_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8H", "%", 0.0f, 100.0f); - configParam(MIX_8_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9H", "%", 0.0f, 100.0f); - configParam(MIX_8_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10H", "%", 0.0f, 100.0f); - configParam(MIX_8_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11H", "%", 0.0f, 100.0f); - configParam(MIX_8_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12H", "%", 0.0f, 100.0f); - configParam(MIX_8_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13H", "%", 0.0f, 100.0f); - configParam(MIX_8_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14H", "%", 0.0f, 100.0f); - configParam(MIX_8_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15H", "%", 0.0f, 100.0f); - configParam(MIX_8_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16H", "%", 0.0f, 100.0f); + configSwitchParam(MIX_8_1_PARAM, "Mix 1H"); + configSwitchParam(MIX_8_2_PARAM, "Mix 2H"); + configSwitchParam(MIX_8_3_PARAM, "Mix 3H"); + configSwitchParam(MIX_8_4_PARAM, "Mix 4H"); + configSwitchParam(MIX_8_5_PARAM, "Mix 5H"); + configSwitchParam(MIX_8_6_PARAM, "Mix 6H"); + configSwitchParam(MIX_8_7_PARAM, "Mix 7H"); + configSwitchParam(MIX_8_8_PARAM, "Mix 8H"); + configSwitchParam(MIX_8_9_PARAM, "Mix 9H"); + configSwitchParam(MIX_8_10_PARAM, "Mix 10H"); + configSwitchParam(MIX_8_11_PARAM, "Mix 11H"); + configSwitchParam(MIX_8_12_PARAM, "Mix 12H"); + configSwitchParam(MIX_8_13_PARAM, "Mix 13H"); + configSwitchParam(MIX_8_14_PARAM, "Mix 14H"); + configSwitchParam(MIX_8_15_PARAM, "Mix 15H"); + configSwitchParam(MIX_8_16_PARAM, "Mix 16H"); - configParam(MIX_9_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1I", "%", 0.0f, 100.0f); - configParam(MIX_9_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2I", "%", 0.0f, 100.0f); - configParam(MIX_9_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3I", "%", 0.0f, 100.0f); - configParam(MIX_9_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4I", "%", 0.0f, 100.0f); - configParam(MIX_9_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5I", "%", 0.0f, 100.0f); - configParam(MIX_9_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6I", "%", 0.0f, 100.0f); - configParam(MIX_9_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7I", "%", 0.0f, 100.0f); - configParam(MIX_9_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8I", "%", 0.0f, 100.0f); - configParam(MIX_9_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9I", "%", 0.0f, 100.0f); - configParam(MIX_9_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10I", "%", 0.0f, 100.0f); - configParam(MIX_9_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11I", "%", 0.0f, 100.0f); - configParam(MIX_9_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12I", "%", 0.0f, 100.0f); - configParam(MIX_9_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13I", "%", 0.0f, 100.0f); - configParam(MIX_9_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14I", "%", 0.0f, 100.0f); - configParam(MIX_9_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15I", "%", 0.0f, 100.0f); - configParam(MIX_9_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16I", "%", 0.0f, 100.0f); + configSwitchParam(MIX_9_1_PARAM, "Mix 1I"); + configSwitchParam(MIX_9_2_PARAM, "Mix 2I"); + configSwitchParam(MIX_9_3_PARAM, "Mix 3I"); + configSwitchParam(MIX_9_4_PARAM, "Mix 4I"); + configSwitchParam(MIX_9_5_PARAM, "Mix 5I"); + configSwitchParam(MIX_9_6_PARAM, "Mix 6I"); + configSwitchParam(MIX_9_7_PARAM, "Mix 7I"); + configSwitchParam(MIX_9_8_PARAM, "Mix 8I"); + configSwitchParam(MIX_9_9_PARAM, "Mix 9I"); + configSwitchParam(MIX_9_10_PARAM, "Mix 10I"); + configSwitchParam(MIX_9_11_PARAM, "Mix 11I"); + configSwitchParam(MIX_9_12_PARAM, "Mix 12I"); + configSwitchParam(MIX_9_13_PARAM, "Mix 13I"); + configSwitchParam(MIX_9_14_PARAM, "Mix 14I"); + configSwitchParam(MIX_9_15_PARAM, "Mix 15I"); + configSwitchParam(MIX_9_16_PARAM, "Mix 16I"); - configParam(MIX_10_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1J", "%", 0.0f, 100.0f); - configParam(MIX_10_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2J", "%", 0.0f, 100.0f); - configParam(MIX_10_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3J", "%", 0.0f, 100.0f); - configParam(MIX_10_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4J", "%", 0.0f, 100.0f); - configParam(MIX_10_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5J", "%", 0.0f, 100.0f); - configParam(MIX_10_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6J", "%", 0.0f, 100.0f); - configParam(MIX_10_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7J", "%", 0.0f, 100.0f); - configParam(MIX_10_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8J", "%", 0.0f, 100.0f); - configParam(MIX_10_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9J", "%", 0.0f, 100.0f); - configParam(MIX_10_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10J", "%", 0.0f, 100.0f); - configParam(MIX_10_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11J", "%", 0.0f, 100.0f); - configParam(MIX_10_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12J", "%", 0.0f, 100.0f); - configParam(MIX_10_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13J", "%", 0.0f, 100.0f); - configParam(MIX_10_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14J", "%", 0.0f, 100.0f); - configParam(MIX_10_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15J", "%", 0.0f, 100.0f); - configParam(MIX_10_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16J", "%", 0.0f, 100.0f); + configSwitchParam(MIX_10_1_PARAM, "Mix 1J"); + configSwitchParam(MIX_10_2_PARAM, "Mix 2J"); + configSwitchParam(MIX_10_3_PARAM, "Mix 3J"); + configSwitchParam(MIX_10_4_PARAM, "Mix 4J"); + configSwitchParam(MIX_10_5_PARAM, "Mix 5J"); + configSwitchParam(MIX_10_6_PARAM, "Mix 6J"); + configSwitchParam(MIX_10_7_PARAM, "Mix 7J"); + configSwitchParam(MIX_10_8_PARAM, "Mix 8J"); + configSwitchParam(MIX_10_9_PARAM, "Mix 9J"); + configSwitchParam(MIX_10_10_PARAM, "Mix 10J"); + configSwitchParam(MIX_10_11_PARAM, "Mix 11J"); + configSwitchParam(MIX_10_12_PARAM, "Mix 12J"); + configSwitchParam(MIX_10_13_PARAM, "Mix 13J"); + configSwitchParam(MIX_10_14_PARAM, "Mix 14J"); + configSwitchParam(MIX_10_15_PARAM, "Mix 15J"); + configSwitchParam(MIX_10_16_PARAM, "Mix 16J"); - configParam(MIX_11_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1K", "%", 0.0f, 100.0f); - configParam(MIX_11_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2K", "%", 0.0f, 100.0f); - configParam(MIX_11_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3K", "%", 0.0f, 100.0f); - configParam(MIX_11_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4K", "%", 0.0f, 100.0f); - configParam(MIX_11_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5K", "%", 0.0f, 100.0f); - configParam(MIX_11_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6K", "%", 0.0f, 100.0f); - configParam(MIX_11_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7K", "%", 0.0f, 100.0f); - configParam(MIX_11_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8K", "%", 0.0f, 100.0f); - configParam(MIX_11_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9K", "%", 0.0f, 100.0f); - configParam(MIX_11_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10K", "%", 0.0f, 100.0f); - configParam(MIX_11_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11K", "%", 0.0f, 100.0f); - configParam(MIX_11_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12K", "%", 0.0f, 100.0f); - configParam(MIX_11_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13K", "%", 0.0f, 100.0f); - configParam(MIX_11_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14K", "%", 0.0f, 100.0f); - configParam(MIX_11_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15K", "%", 0.0f, 100.0f); - configParam(MIX_11_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16K", "%", 0.0f, 100.0f); + configSwitchParam(MIX_11_1_PARAM, "Mix 1K"); + configSwitchParam(MIX_11_2_PARAM, "Mix 2K"); + configSwitchParam(MIX_11_3_PARAM, "Mix 3K"); + configSwitchParam(MIX_11_4_PARAM, "Mix 4K"); + configSwitchParam(MIX_11_5_PARAM, "Mix 5K"); + configSwitchParam(MIX_11_6_PARAM, "Mix 6K"); + configSwitchParam(MIX_11_7_PARAM, "Mix 7K"); + configSwitchParam(MIX_11_8_PARAM, "Mix 8K"); + configSwitchParam(MIX_11_9_PARAM, "Mix 9K"); + configSwitchParam(MIX_11_10_PARAM, "Mix 10K"); + configSwitchParam(MIX_11_11_PARAM, "Mix 11K"); + configSwitchParam(MIX_11_12_PARAM, "Mix 12K"); + configSwitchParam(MIX_11_13_PARAM, "Mix 13K"); + configSwitchParam(MIX_11_14_PARAM, "Mix 14K"); + configSwitchParam(MIX_11_15_PARAM, "Mix 15K"); + configSwitchParam(MIX_11_16_PARAM, "Mix 16K"); - configParam(MIX_12_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1L", "%", 0.0f, 100.0f); - configParam(MIX_12_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2L", "%", 0.0f, 100.0f); - configParam(MIX_12_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3L", "%", 0.0f, 100.0f); - configParam(MIX_12_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4L", "%", 0.0f, 100.0f); - configParam(MIX_12_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5L", "%", 0.0f, 100.0f); - configParam(MIX_12_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6L", "%", 0.0f, 100.0f); - configParam(MIX_12_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7L", "%", 0.0f, 100.0f); - configParam(MIX_12_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8L", "%", 0.0f, 100.0f); - configParam(MIX_12_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9L", "%", 0.0f, 100.0f); - configParam(MIX_12_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10L", "%", 0.0f, 100.0f); - configParam(MIX_12_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11L", "%", 0.0f, 100.0f); - configParam(MIX_12_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12L", "%", 0.0f, 100.0f); - configParam(MIX_12_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13L", "%", 0.0f, 100.0f); - configParam(MIX_12_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14L", "%", 0.0f, 100.0f); - configParam(MIX_12_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15L", "%", 0.0f, 100.0f); - configParam(MIX_12_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16L", "%", 0.0f, 100.0f); + configSwitchParam(MIX_12_1_PARAM, "Mix 1L"); + configSwitchParam(MIX_12_2_PARAM, "Mix 2L"); + configSwitchParam(MIX_12_3_PARAM, "Mix 3L"); + configSwitchParam(MIX_12_4_PARAM, "Mix 4L"); + configSwitchParam(MIX_12_5_PARAM, "Mix 5L"); + configSwitchParam(MIX_12_6_PARAM, "Mix 6L"); + configSwitchParam(MIX_12_7_PARAM, "Mix 7L"); + configSwitchParam(MIX_12_8_PARAM, "Mix 8L"); + configSwitchParam(MIX_12_9_PARAM, "Mix 9L"); + configSwitchParam(MIX_12_10_PARAM, "Mix 10L"); + configSwitchParam(MIX_12_11_PARAM, "Mix 11L"); + configSwitchParam(MIX_12_12_PARAM, "Mix 12L"); + configSwitchParam(MIX_12_13_PARAM, "Mix 13L"); + configSwitchParam(MIX_12_14_PARAM, "Mix 14L"); + configSwitchParam(MIX_12_15_PARAM, "Mix 15L"); + configSwitchParam(MIX_12_16_PARAM, "Mix 16L"); - configParam(MIX_13_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1M", "%", 0.0f, 100.0f); - configParam(MIX_13_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2M", "%", 0.0f, 100.0f); - configParam(MIX_13_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3M", "%", 0.0f, 100.0f); - configParam(MIX_13_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4M", "%", 0.0f, 100.0f); - configParam(MIX_13_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5M", "%", 0.0f, 100.0f); - configParam(MIX_13_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6M", "%", 0.0f, 100.0f); - configParam(MIX_13_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7M", "%", 0.0f, 100.0f); - configParam(MIX_13_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8M", "%", 0.0f, 100.0f); - configParam(MIX_13_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9M", "%", 0.0f, 100.0f); - configParam(MIX_13_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10M", "%", 0.0f, 100.0f); - configParam(MIX_13_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11M", "%", 0.0f, 100.0f); - configParam(MIX_13_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12M", "%", 0.0f, 100.0f); - configParam(MIX_13_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13M", "%", 0.0f, 100.0f); - configParam(MIX_13_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14M", "%", 0.0f, 100.0f); - configParam(MIX_13_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15M", "%", 0.0f, 100.0f); - configParam(MIX_13_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16M", "%", 0.0f, 100.0f); + configSwitchParam(MIX_13_1_PARAM, "Mix 1M"); + configSwitchParam(MIX_13_2_PARAM, "Mix 2M"); + configSwitchParam(MIX_13_3_PARAM, "Mix 3M"); + configSwitchParam(MIX_13_4_PARAM, "Mix 4M"); + configSwitchParam(MIX_13_5_PARAM, "Mix 5M"); + configSwitchParam(MIX_13_6_PARAM, "Mix 6M"); + configSwitchParam(MIX_13_7_PARAM, "Mix 7M"); + configSwitchParam(MIX_13_8_PARAM, "Mix 8M"); + configSwitchParam(MIX_13_9_PARAM, "Mix 9M"); + configSwitchParam(MIX_13_10_PARAM, "Mix 10M"); + configSwitchParam(MIX_13_11_PARAM, "Mix 11M"); + configSwitchParam(MIX_13_12_PARAM, "Mix 12M"); + configSwitchParam(MIX_13_13_PARAM, "Mix 13M"); + configSwitchParam(MIX_13_14_PARAM, "Mix 14M"); + configSwitchParam(MIX_13_15_PARAM, "Mix 15M"); + configSwitchParam(MIX_13_16_PARAM, "Mix 16M"); - configParam(MIX_14_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1N", "%", 0.0f, 100.0f); - configParam(MIX_14_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2N", "%", 0.0f, 100.0f); - configParam(MIX_14_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3N", "%", 0.0f, 100.0f); - configParam(MIX_14_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4N", "%", 0.0f, 100.0f); - configParam(MIX_14_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5N", "%", 0.0f, 100.0f); - configParam(MIX_14_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6N", "%", 0.0f, 100.0f); - configParam(MIX_14_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7N", "%", 0.0f, 100.0f); - configParam(MIX_14_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8N", "%", 0.0f, 100.0f); - configParam(MIX_14_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9N", "%", 0.0f, 100.0f); - configParam(MIX_14_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10N", "%", 0.0f, 100.0f); - configParam(MIX_14_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11N", "%", 0.0f, 100.0f); - configParam(MIX_14_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12N", "%", 0.0f, 100.0f); - configParam(MIX_14_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13N", "%", 0.0f, 100.0f); - configParam(MIX_14_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14N", "%", 0.0f, 100.0f); - configParam(MIX_14_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15N", "%", 0.0f, 100.0f); - configParam(MIX_14_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16N", "%", 0.0f, 100.0f); + configSwitchParam(MIX_14_1_PARAM, "Mix 1N"); + configSwitchParam(MIX_14_2_PARAM, "Mix 2N"); + configSwitchParam(MIX_14_3_PARAM, "Mix 3N"); + configSwitchParam(MIX_14_4_PARAM, "Mix 4N"); + configSwitchParam(MIX_14_5_PARAM, "Mix 5N"); + configSwitchParam(MIX_14_6_PARAM, "Mix 6N"); + configSwitchParam(MIX_14_7_PARAM, "Mix 7N"); + configSwitchParam(MIX_14_8_PARAM, "Mix 8N"); + configSwitchParam(MIX_14_9_PARAM, "Mix 9N"); + configSwitchParam(MIX_14_10_PARAM, "Mix 10N"); + configSwitchParam(MIX_14_11_PARAM, "Mix 11N"); + configSwitchParam(MIX_14_12_PARAM, "Mix 12N"); + configSwitchParam(MIX_14_13_PARAM, "Mix 13N"); + configSwitchParam(MIX_14_14_PARAM, "Mix 14N"); + configSwitchParam(MIX_14_15_PARAM, "Mix 15N"); + configSwitchParam(MIX_14_16_PARAM, "Mix 16N"); - configParam(MIX_15_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1O", "%", 0.0f, 100.0f); - configParam(MIX_15_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2O", "%", 0.0f, 100.0f); - configParam(MIX_15_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3O", "%", 0.0f, 100.0f); - configParam(MIX_15_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4O", "%", 0.0f, 100.0f); - configParam(MIX_15_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5O", "%", 0.0f, 100.0f); - configParam(MIX_15_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6O", "%", 0.0f, 100.0f); - configParam(MIX_15_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7O", "%", 0.0f, 100.0f); - configParam(MIX_15_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8O", "%", 0.0f, 100.0f); - configParam(MIX_15_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9O", "%", 0.0f, 100.0f); - configParam(MIX_15_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10O", "%", 0.0f, 100.0f); - configParam(MIX_15_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11O", "%", 0.0f, 100.0f); - configParam(MIX_15_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12O", "%", 0.0f, 100.0f); - configParam(MIX_15_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13O", "%", 0.0f, 100.0f); - configParam(MIX_15_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14O", "%", 0.0f, 100.0f); - configParam(MIX_15_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15O", "%", 0.0f, 100.0f); - configParam(MIX_15_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16O", "%", 0.0f, 100.0f); + configSwitchParam(MIX_15_1_PARAM, "Mix 1O"); + configSwitchParam(MIX_15_2_PARAM, "Mix 2O"); + configSwitchParam(MIX_15_3_PARAM, "Mix 3O"); + configSwitchParam(MIX_15_4_PARAM, "Mix 4O"); + configSwitchParam(MIX_15_5_PARAM, "Mix 5O"); + configSwitchParam(MIX_15_6_PARAM, "Mix 6O"); + configSwitchParam(MIX_15_7_PARAM, "Mix 7O"); + configSwitchParam(MIX_15_8_PARAM, "Mix 8O"); + configSwitchParam(MIX_15_9_PARAM, "Mix 9O"); + configSwitchParam(MIX_15_10_PARAM, "Mix 10O"); + configSwitchParam(MIX_15_11_PARAM, "Mix 11O"); + configSwitchParam(MIX_15_12_PARAM, "Mix 12O"); + configSwitchParam(MIX_15_13_PARAM, "Mix 13O"); + configSwitchParam(MIX_15_14_PARAM, "Mix 14O"); + configSwitchParam(MIX_15_15_PARAM, "Mix 15O"); + configSwitchParam(MIX_15_16_PARAM, "Mix 16O"); - configParam(MIX_16_1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1P", "%", 0.0f, 100.0f); - configParam(MIX_16_2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2P", "%", 0.0f, 100.0f); - configParam(MIX_16_3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3P", "%", 0.0f, 100.0f); - configParam(MIX_16_4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4P", "%", 0.0f, 100.0f); - configParam(MIX_16_5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5P", "%", 0.0f, 100.0f); - configParam(MIX_16_6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6P", "%", 0.0f, 100.0f); - configParam(MIX_16_7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7P", "%", 0.0f, 100.0f); - configParam(MIX_16_8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8P", "%", 0.0f, 100.0f); - configParam(MIX_16_9_PARAM, -1.0f, 1.0f, 0.0f, "Mix 9P", "%", 0.0f, 100.0f); - configParam(MIX_16_10_PARAM, -1.0f, 1.0f, 0.0f, "Mix 10P", "%", 0.0f, 100.0f); - configParam(MIX_16_11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 11P", "%", 0.0f, 100.0f); - configParam(MIX_16_12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 12P", "%", 0.0f, 100.0f); - configParam(MIX_16_13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 13P", "%", 0.0f, 100.0f); - configParam(MIX_16_14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 14P", "%", 0.0f, 100.0f); - configParam(MIX_16_15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 15P", "%", 0.0f, 100.0f); - configParam(MIX_16_16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 16P", "%", 0.0f, 100.0f); + configSwitchParam(MIX_16_1_PARAM, "Mix 1P"); + configSwitchParam(MIX_16_2_PARAM, "Mix 2P"); + configSwitchParam(MIX_16_3_PARAM, "Mix 3P"); + configSwitchParam(MIX_16_4_PARAM, "Mix 4P"); + configSwitchParam(MIX_16_5_PARAM, "Mix 5P"); + configSwitchParam(MIX_16_6_PARAM, "Mix 6P"); + configSwitchParam(MIX_16_7_PARAM, "Mix 7P"); + configSwitchParam(MIX_16_8_PARAM, "Mix 8P"); + configSwitchParam(MIX_16_9_PARAM, "Mix 9P"); + configSwitchParam(MIX_16_10_PARAM, "Mix 10P"); + configSwitchParam(MIX_16_11_PARAM, "Mix 11P"); + configSwitchParam(MIX_16_12_PARAM, "Mix 12P"); + configSwitchParam(MIX_16_13_PARAM, "Mix 13P"); + configSwitchParam(MIX_16_14_PARAM, "Mix 14P"); + configSwitchParam(MIX_16_15_PARAM, "Mix 15P"); + configSwitchParam(MIX_16_16_PARAM, "Mix 16P"); } }; diff --git a/src/Switch44.hpp b/src/Switch44.hpp @@ -46,22 +46,22 @@ struct Switch44 : SwitchMatrixModule { Switch44() : SwitchMatrixModule(4, MIX11_PARAM, IN1_INPUT, OUT1_OUTPUT) { config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); - configParam(MIX11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1A", "%", 0.0f, 100.0f); - configParam(MIX21_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2A", "%", 0.0f, 100.0f); - configParam(MIX31_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3A", "%", 0.0f, 100.0f); - configParam(MIX41_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4A", "%", 0.0f, 100.0f); - configParam(MIX12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1B", "%", 0.0f, 100.0f); - configParam(MIX22_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2B", "%", 0.0f, 100.0f); - configParam(MIX32_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3B", "%", 0.0f, 100.0f); - configParam(MIX42_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4B", "%", 0.0f, 100.0f); - configParam(MIX13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1C", "%", 0.0f, 100.0f); - configParam(MIX23_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2C", "%", 0.0f, 100.0f); - configParam(MIX33_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3C", "%", 0.0f, 100.0f); - configParam(MIX43_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4C", "%", 0.0f, 100.0f); - configParam(MIX14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1D", "%", 0.0f, 100.0f); - configParam(MIX24_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2D", "%", 0.0f, 100.0f); - configParam(MIX34_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3D", "%", 0.0f, 100.0f); - configParam(MIX44_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4D", "%", 0.0f, 100.0f); + configSwitchParam(MIX11_PARAM, "Mix 1A"); + configSwitchParam(MIX21_PARAM, "Mix 2A"); + configSwitchParam(MIX31_PARAM, "Mix 3A"); + configSwitchParam(MIX41_PARAM, "Mix 4A"); + configSwitchParam(MIX12_PARAM, "Mix 1B"); + configSwitchParam(MIX22_PARAM, "Mix 2B"); + configSwitchParam(MIX32_PARAM, "Mix 3B"); + configSwitchParam(MIX42_PARAM, "Mix 4B"); + configSwitchParam(MIX13_PARAM, "Mix 1C"); + configSwitchParam(MIX23_PARAM, "Mix 2C"); + configSwitchParam(MIX33_PARAM, "Mix 3C"); + configSwitchParam(MIX43_PARAM, "Mix 4C"); + configSwitchParam(MIX14_PARAM, "Mix 1D"); + configSwitchParam(MIX24_PARAM, "Mix 2D"); + configSwitchParam(MIX34_PARAM, "Mix 3D"); + configSwitchParam(MIX44_PARAM, "Mix 4D"); } }; diff --git a/src/Switch88.hpp b/src/Switch88.hpp @@ -102,70 +102,70 @@ struct Switch88 : SwitchMatrixModule { Switch88() : SwitchMatrixModule(8, MIX11_PARAM, IN1_INPUT, OUT1_OUTPUT) { config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); - configParam(MIX11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1A", "%", 0.0f, 100.0f); - configParam(MIX21_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2A", "%", 0.0f, 100.0f); - configParam(MIX31_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3A", "%", 0.0f, 100.0f); - configParam(MIX41_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4A", "%", 0.0f, 100.0f); - configParam(MIX51_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5A", "%", 0.0f, 100.0f); - configParam(MIX61_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6A", "%", 0.0f, 100.0f); - configParam(MIX71_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7A", "%", 0.0f, 100.0f); - configParam(MIX81_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8A", "%", 0.0f, 100.0f); - configParam(MIX12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1B", "%", 0.0f, 100.0f); - configParam(MIX22_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2B", "%", 0.0f, 100.0f); - configParam(MIX32_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3B", "%", 0.0f, 100.0f); - configParam(MIX42_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4B", "%", 0.0f, 100.0f); - configParam(MIX52_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5B", "%", 0.0f, 100.0f); - configParam(MIX62_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6B", "%", 0.0f, 100.0f); - configParam(MIX72_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7B", "%", 0.0f, 100.0f); - configParam(MIX82_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8B", "%", 0.0f, 100.0f); - configParam(MIX13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1C", "%", 0.0f, 100.0f); - configParam(MIX23_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2C", "%", 0.0f, 100.0f); - configParam(MIX33_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3C", "%", 0.0f, 100.0f); - configParam(MIX43_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4C", "%", 0.0f, 100.0f); - configParam(MIX53_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5C", "%", 0.0f, 100.0f); - configParam(MIX63_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6C", "%", 0.0f, 100.0f); - configParam(MIX73_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7C", "%", 0.0f, 100.0f); - configParam(MIX83_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8C", "%", 0.0f, 100.0f); - configParam(MIX14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1D", "%", 0.0f, 100.0f); - configParam(MIX24_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2D", "%", 0.0f, 100.0f); - configParam(MIX34_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3D", "%", 0.0f, 100.0f); - configParam(MIX44_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4D", "%", 0.0f, 100.0f); - configParam(MIX54_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5D", "%", 0.0f, 100.0f); - configParam(MIX64_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6D", "%", 0.0f, 100.0f); - configParam(MIX74_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7D", "%", 0.0f, 100.0f); - configParam(MIX84_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8D", "%", 0.0f, 100.0f); - configParam(MIX15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1E", "%", 0.0f, 100.0f); - configParam(MIX25_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2E", "%", 0.0f, 100.0f); - configParam(MIX35_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3E", "%", 0.0f, 100.0f); - configParam(MIX45_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4E", "%", 0.0f, 100.0f); - configParam(MIX55_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5E", "%", 0.0f, 100.0f); - configParam(MIX65_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6E", "%", 0.0f, 100.0f); - configParam(MIX75_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7E", "%", 0.0f, 100.0f); - configParam(MIX85_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8E", "%", 0.0f, 100.0f); - configParam(MIX16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1F", "%", 0.0f, 100.0f); - configParam(MIX26_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2F", "%", 0.0f, 100.0f); - configParam(MIX36_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3F", "%", 0.0f, 100.0f); - configParam(MIX46_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4F", "%", 0.0f, 100.0f); - configParam(MIX56_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5F", "%", 0.0f, 100.0f); - configParam(MIX66_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6F", "%", 0.0f, 100.0f); - configParam(MIX76_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7F", "%", 0.0f, 100.0f); - configParam(MIX86_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8F", "%", 0.0f, 100.0f); - configParam(MIX17_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1G", "%", 0.0f, 100.0f); - configParam(MIX27_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2G", "%", 0.0f, 100.0f); - configParam(MIX37_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3G", "%", 0.0f, 100.0f); - configParam(MIX47_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4G", "%", 0.0f, 100.0f); - configParam(MIX57_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5G", "%", 0.0f, 100.0f); - configParam(MIX67_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6G", "%", 0.0f, 100.0f); - configParam(MIX77_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7G", "%", 0.0f, 100.0f); - configParam(MIX87_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8G", "%", 0.0f, 100.0f); - configParam(MIX18_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1H", "%", 0.0f, 100.0f); - configParam(MIX28_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2H", "%", 0.0f, 100.0f); - configParam(MIX38_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3H", "%", 0.0f, 100.0f); - configParam(MIX48_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4H", "%", 0.0f, 100.0f); - configParam(MIX58_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5H", "%", 0.0f, 100.0f); - configParam(MIX68_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6H", "%", 0.0f, 100.0f); - configParam(MIX78_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7H", "%", 0.0f, 100.0f); - configParam(MIX88_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8H", "%", 0.0f, 100.0f); + configSwitchParam(MIX11_PARAM, "Mix 1A"); + configSwitchParam(MIX21_PARAM, "Mix 2A"); + configSwitchParam(MIX31_PARAM, "Mix 3A"); + configSwitchParam(MIX41_PARAM, "Mix 4A"); + configSwitchParam(MIX51_PARAM, "Mix 5A"); + configSwitchParam(MIX61_PARAM, "Mix 6A"); + configSwitchParam(MIX71_PARAM, "Mix 7A"); + configSwitchParam(MIX81_PARAM, "Mix 8A"); + configSwitchParam(MIX12_PARAM, "Mix 1B"); + configSwitchParam(MIX22_PARAM, "Mix 2B"); + configSwitchParam(MIX32_PARAM, "Mix 3B"); + configSwitchParam(MIX42_PARAM, "Mix 4B"); + configSwitchParam(MIX52_PARAM, "Mix 5B"); + configSwitchParam(MIX62_PARAM, "Mix 6B"); + configSwitchParam(MIX72_PARAM, "Mix 7B"); + configSwitchParam(MIX82_PARAM, "Mix 8B"); + configSwitchParam(MIX13_PARAM, "Mix 1C"); + configSwitchParam(MIX23_PARAM, "Mix 2C"); + configSwitchParam(MIX33_PARAM, "Mix 3C"); + configSwitchParam(MIX43_PARAM, "Mix 4C"); + configSwitchParam(MIX53_PARAM, "Mix 5C"); + configSwitchParam(MIX63_PARAM, "Mix 6C"); + configSwitchParam(MIX73_PARAM, "Mix 7C"); + configSwitchParam(MIX83_PARAM, "Mix 8C"); + configSwitchParam(MIX14_PARAM, "Mix 1D"); + configSwitchParam(MIX24_PARAM, "Mix 2D"); + configSwitchParam(MIX34_PARAM, "Mix 3D"); + configSwitchParam(MIX44_PARAM, "Mix 4D"); + configSwitchParam(MIX54_PARAM, "Mix 5D"); + configSwitchParam(MIX64_PARAM, "Mix 6D"); + configSwitchParam(MIX74_PARAM, "Mix 7D"); + configSwitchParam(MIX84_PARAM, "Mix 8D"); + configSwitchParam(MIX15_PARAM, "Mix 1E"); + configSwitchParam(MIX25_PARAM, "Mix 2E"); + configSwitchParam(MIX35_PARAM, "Mix 3E"); + configSwitchParam(MIX45_PARAM, "Mix 4E"); + configSwitchParam(MIX55_PARAM, "Mix 5E"); + configSwitchParam(MIX65_PARAM, "Mix 6E"); + configSwitchParam(MIX75_PARAM, "Mix 7E"); + configSwitchParam(MIX85_PARAM, "Mix 8E"); + configSwitchParam(MIX16_PARAM, "Mix 1F"); + configSwitchParam(MIX26_PARAM, "Mix 2F"); + configSwitchParam(MIX36_PARAM, "Mix 3F"); + configSwitchParam(MIX46_PARAM, "Mix 4F"); + configSwitchParam(MIX56_PARAM, "Mix 5F"); + configSwitchParam(MIX66_PARAM, "Mix 6F"); + configSwitchParam(MIX76_PARAM, "Mix 7F"); + configSwitchParam(MIX86_PARAM, "Mix 8F"); + configSwitchParam(MIX17_PARAM, "Mix 1G"); + configSwitchParam(MIX27_PARAM, "Mix 2G"); + configSwitchParam(MIX37_PARAM, "Mix 3G"); + configSwitchParam(MIX47_PARAM, "Mix 4G"); + configSwitchParam(MIX57_PARAM, "Mix 5G"); + configSwitchParam(MIX67_PARAM, "Mix 6G"); + configSwitchParam(MIX77_PARAM, "Mix 7G"); + configSwitchParam(MIX87_PARAM, "Mix 8G"); + configSwitchParam(MIX18_PARAM, "Mix 1H"); + configSwitchParam(MIX28_PARAM, "Mix 2H"); + configSwitchParam(MIX38_PARAM, "Mix 3H"); + configSwitchParam(MIX48_PARAM, "Mix 4H"); + configSwitchParam(MIX58_PARAM, "Mix 5H"); + configSwitchParam(MIX68_PARAM, "Mix 6H"); + configSwitchParam(MIX78_PARAM, "Mix 7H"); + configSwitchParam(MIX88_PARAM, "Mix 8H"); } }; diff --git a/src/matrix_base.cpp b/src/matrix_base.cpp @@ -72,18 +72,72 @@ void KnobMatrixModule::dataFromJson(json_t* root) { } -#define CLICK_TO_INVERT "click_to_invert" +#define INVERTING "inverting" +#define INVERTING_CLICK "click" +#define INVERTING_PARAM "param" +#define INVERTING_DISABLED "disabled" json_t* SwitchMatrixModule::dataToJson() { json_t* root = MatrixBaseModule::dataToJson(); - json_object_set_new(root, CLICK_TO_INVERT, json_boolean(_clickToInvert)); + switch (_inverting) { + case CLICK_INVERTING: { + json_object_set_new(root, INVERTING, json_string(INVERTING_CLICK)); + break; + } + case PARAM_INVERTING: { + json_object_set_new(root, INVERTING, json_string(INVERTING_PARAM)); + break; + } + case NO_INVERTING: { + json_object_set_new(root, INVERTING, json_string(INVERTING_DISABLED)); + break; + } + } return root; } void SwitchMatrixModule::dataFromJson(json_t* root) { MatrixBaseModule::dataFromJson(root); - json_t* c = json_object_get(root, CLICK_TO_INVERT); - if (c) { - _clickToInvert = json_is_true(c); + json_t* i = json_object_get(root, INVERTING); + if (i) { + const char* s = json_string_value(i); + if (s) { + if (0 == strcmp(INVERTING_CLICK, s)) { + setInverting(CLICK_INVERTING); + } + else if (0 == strcmp(INVERTING_PARAM, s)) { + setInverting(PARAM_INVERTING); + } + else if (0 == strcmp(INVERTING_DISABLED, s)) { + setInverting(NO_INVERTING); + } + } + } +} + +void SwitchMatrixModule::setInverting(Inverting inverting) { + _inverting = inverting; + + float minValue = -1.0f; + switch (_inverting) { + case CLICK_INVERTING: + case PARAM_INVERTING: { + minValue = -1.0f; + break; + } + default: { + minValue = 0.0f; + } } + for (ParamQuantity* pq : _switchParamQuantities) { + pq->minValue = minValue; + if (pq->getValue() < minValue) { + pq->setValue(minValue); + } + } +} + +void SwitchMatrixModule::configSwitchParam(int id, const char* label) { + configParam(id, -1.0f, 1.0f, 0.0f, label, "%", 0.0f, 100.0f); + _switchParamQuantities.push_back(paramQuantities[id]); } diff --git a/src/matrix_base.hpp b/src/matrix_base.hpp @@ -109,7 +109,14 @@ struct KnobMatrixModuleWidget : MatrixBaseModuleWidget { }; struct SwitchMatrixModule : MatrixModule { - bool _clickToInvert = true; + enum Inverting { + CLICK_INVERTING, + PARAM_INVERTING, + NO_INVERTING + }; + + Inverting _inverting = CLICK_INVERTING; + std::vector<ParamQuantity*> _switchParamQuantities; SwitchMatrixModule(int n, int firstParamID, int firstInputID, int firstOutputID) : MatrixModule(n, firstParamID, firstInputID, firstOutputID) @@ -117,13 +124,15 @@ struct SwitchMatrixModule : MatrixModule { json_t* dataToJson() override; void dataFromJson(json_t* root) override; + void setInverting(Inverting inverting); + void configSwitchParam(int id, const char* label); }; struct SwitchMatrixModuleWidget : MatrixBaseModuleWidget { template<class W> void createSwitch(math::Vec& position, SwitchMatrixModule* module, int id) { auto s = dynamic_cast<W*>(createParam<W>(position, module, id)); if (module) { - s->setClickToInvertCallback([module]() { return module->_clickToInvert; }); + s->setClickToInvertCallback([module]() { return module->_inverting == SwitchMatrixModule::CLICK_INVERTING; }); } addParam(s); } @@ -132,11 +141,12 @@ struct SwitchMatrixModuleWidget : MatrixBaseModuleWidget { SwitchMatrixModule* m = dynamic_cast<SwitchMatrixModule*>(module); assert(m); MatrixBaseModuleWidget::appendContextMenu(menu); - menu->addChild(new OptionMenuItem( - "Click to invert", - [m]() { return m->_clickToInvert; }, - [m]() { m->_clickToInvert = !m->_clickToInvert; } - )); + + OptionsMenuItem* i = new OptionsMenuItem("Inverting"); + i->addItem(OptionMenuItem("On second click", [m]() { return m->_inverting == SwitchMatrixModule::CLICK_INVERTING; }, [m]() { m->setInverting(SwitchMatrixModule::CLICK_INVERTING); })); + i->addItem(OptionMenuItem("By param entry (right-click)", [m]() { return m->_inverting == SwitchMatrixModule::PARAM_INVERTING; }, [m]() { m->setInverting(SwitchMatrixModule::PARAM_INVERTING); })); + i->addItem(OptionMenuItem("Disabled", [m]() { return m->_inverting == SwitchMatrixModule::NO_INVERTING; }, [m]() { m->setInverting(SwitchMatrixModule::NO_INVERTING); })); + OptionsMenuItem::addToMenu(i, menu); } }; diff --git a/src/widgets.cpp b/src/widgets.cpp @@ -404,7 +404,7 @@ void InvertingIndicatorButton::onButton(const event::Button& e) { else if (value < 1.0f) { paramQuantity->setValue(1.0f); } - else if (!clickToInvertCB || clickToInvertCB()) { + else if (paramQuantity->minValue < 0.0f && (!clickToInvertCB || clickToInvertCB())) { paramQuantity->setValue(-1.0f); } else {