BogaudioModules

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

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