Mute8.hpp (3756B)
1 #pragma once 2 3 #include "bogaudio.hpp" 4 #include "dsp/signal.hpp" 5 6 using namespace bogaudio::dsp; 7 8 extern Model* modelMute8; 9 10 namespace bogaudio { 11 12 struct Mute8 : BGModule { 13 enum ParamsIds { 14 MUTE1_PARAM, 15 MUTE2_PARAM, 16 MUTE3_PARAM, 17 MUTE4_PARAM, 18 MUTE5_PARAM, 19 MUTE6_PARAM, 20 MUTE7_PARAM, 21 MUTE8_PARAM, 22 NUM_PARAMS 23 }; 24 25 enum InputsIds { 26 INPUT1_INPUT, 27 INPUT2_INPUT, 28 INPUT3_INPUT, 29 INPUT4_INPUT, 30 INPUT5_INPUT, 31 INPUT6_INPUT, 32 INPUT7_INPUT, 33 INPUT8_INPUT, 34 MUTE1_INPUT, 35 MUTE2_INPUT, 36 MUTE3_INPUT, 37 MUTE4_INPUT, 38 MUTE5_INPUT, 39 MUTE6_INPUT, 40 MUTE7_INPUT, 41 MUTE8_INPUT, 42 NUM_INPUTS 43 }; 44 45 enum OutputsIds { 46 OUTPUT1_OUTPUT, 47 OUTPUT2_OUTPUT, 48 OUTPUT3_OUTPUT, 49 OUTPUT4_OUTPUT, 50 OUTPUT5_OUTPUT, 51 OUTPUT6_OUTPUT, 52 OUTPUT7_OUTPUT, 53 OUTPUT8_OUTPUT, 54 NUM_OUTPUTS 55 }; 56 57 enum LightsIds { 58 MUTE1_LIGHT, 59 MUTE2_LIGHT, 60 MUTE3_LIGHT, 61 MUTE4_LIGHT, 62 MUTE5_LIGHT, 63 MUTE6_LIGHT, 64 MUTE7_LIGHT, 65 MUTE8_LIGHT, 66 NUM_LIGHTS 67 }; 68 69 static const float maxDecibels; 70 static const float minDecibels; 71 static const float slewTimeMS; 72 73 Amplifier _amplifiers[8][maxChannels]; 74 bogaudio::dsp::SlewLimiter _slewLimiters[8][maxChannels]; 75 Trigger _triggers[8][maxChannels]; 76 bool _latches[8][maxChannels] {}; 77 bool _latchingCVs = false; 78 79 Mute8() { 80 config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); 81 configSwitch(MUTE1_PARAM, 0.0f, 3.0f, 0.0f, "Mute 1", {"Unmuted", "Muted", "Soloed", "Soloed"}); 82 configSwitch(MUTE2_PARAM, 0.0f, 3.0f, 0.0f, "Mute 2", {"Unmuted", "Muted", "Soloed", "Soloed"}); 83 configSwitch(MUTE3_PARAM, 0.0f, 3.0f, 0.0f, "Mute 3", {"Unmuted", "Muted", "Soloed", "Soloed"}); 84 configSwitch(MUTE4_PARAM, 0.0f, 3.0f, 0.0f, "Mute 4", {"Unmuted", "Muted", "Soloed", "Soloed"}); 85 configSwitch(MUTE5_PARAM, 0.0f, 3.0f, 0.0f, "Mute 5", {"Unmuted", "Muted", "Soloed", "Soloed"}); 86 configSwitch(MUTE6_PARAM, 0.0f, 3.0f, 0.0f, "Mute 6", {"Unmuted", "Muted", "Soloed", "Soloed"}); 87 configSwitch(MUTE7_PARAM, 0.0f, 3.0f, 0.0f, "Mute 7", {"Unmuted", "Muted", "Soloed", "Soloed"}); 88 configSwitch(MUTE8_PARAM, 0.0f, 3.0f, 0.0f, "Mute 8", {"Unmuted", "Muted", "Soloed", "Soloed"}); 89 90 configBypass(INPUT1_INPUT, OUTPUT1_OUTPUT); 91 configBypass(INPUT2_INPUT, OUTPUT2_OUTPUT); 92 configBypass(INPUT3_INPUT, OUTPUT3_OUTPUT); 93 configBypass(INPUT4_INPUT, OUTPUT4_OUTPUT); 94 configBypass(INPUT5_INPUT, OUTPUT5_OUTPUT); 95 configBypass(INPUT6_INPUT, OUTPUT6_OUTPUT); 96 configBypass(INPUT7_INPUT, OUTPUT7_OUTPUT); 97 configBypass(INPUT8_INPUT, OUTPUT8_OUTPUT); 98 99 configInput(INPUT1_INPUT, "Signal 1"); 100 configInput(INPUT2_INPUT, "Signal 2"); 101 configInput(INPUT3_INPUT, "Signal 3"); 102 configInput(INPUT4_INPUT, "Signal 4"); 103 configInput(INPUT5_INPUT, "Signal 5"); 104 configInput(INPUT6_INPUT, "Signal 6"); 105 configInput(INPUT7_INPUT, "Signal 7"); 106 configInput(INPUT8_INPUT, "Signal 8"); 107 configInput(MUTE1_INPUT, "Mute 1 CV"); 108 configInput(MUTE2_INPUT, "Mute 2 CV"); 109 configInput(MUTE3_INPUT, "Mute 3 CV"); 110 configInput(MUTE4_INPUT, "Mute 4 CV"); 111 configInput(MUTE5_INPUT, "Mute 5 CV"); 112 configInput(MUTE6_INPUT, "Mute 6 CV"); 113 configInput(MUTE7_INPUT, "Mute 7 CV"); 114 configInput(MUTE8_INPUT, "Mute 8 CV"); 115 116 configOutput(OUTPUT1_OUTPUT, "Signal 1"); 117 configOutput(OUTPUT2_OUTPUT, "Signal 2"); 118 configOutput(OUTPUT3_OUTPUT, "Signal 3"); 119 configOutput(OUTPUT4_OUTPUT, "Signal 4"); 120 configOutput(OUTPUT5_OUTPUT, "Signal 5"); 121 configOutput(OUTPUT6_OUTPUT, "Signal 6"); 122 configOutput(OUTPUT7_OUTPUT, "Signal 7"); 123 configOutput(OUTPUT8_OUTPUT, "Signal 8"); 124 } 125 126 json_t* saveToJson(json_t* root) override; 127 void loadFromJson(json_t* root) override; 128 void reset() override; 129 void sampleRateChange() override; 130 void processAll(const ProcessArgs& args) override; 131 void stepChannel(int i, bool solo); 132 }; 133 134 } // namespace bogaudio