BogaudioModules

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

Matrix44.hpp (2614B)


      1 #pragma once
      2 
      3 #include "Matrix44_shared.hpp"
      4 
      5 namespace bogaudio {
      6 
      7 typedef ChainableExpandableModule<Matrix44ExpanderMessage, Matrix44Element, 1, KnobMatrixModule> Matrix44Base;
      8 
      9 struct Matrix44 : Matrix44Base {
     10 	enum ParamsIds {
     11 		MIX11_PARAM,
     12 		MIX21_PARAM,
     13 		MIX31_PARAM,
     14 		MIX41_PARAM,
     15 		MIX12_PARAM,
     16 		MIX22_PARAM,
     17 		MIX32_PARAM,
     18 		MIX42_PARAM,
     19 		MIX13_PARAM,
     20 		MIX23_PARAM,
     21 		MIX33_PARAM,
     22 		MIX43_PARAM,
     23 		MIX14_PARAM,
     24 		MIX24_PARAM,
     25 		MIX34_PARAM,
     26 		MIX44_PARAM,
     27 		NUM_PARAMS
     28 	};
     29 
     30 	enum InputsIds {
     31 		IN1_INPUT,
     32 		IN2_INPUT,
     33 		IN3_INPUT,
     34 		IN4_INPUT,
     35 		NUM_INPUTS
     36 	};
     37 
     38 	enum OutputsIds {
     39 		OUT1_OUTPUT,
     40 		OUT2_OUTPUT,
     41 		OUT3_OUTPUT,
     42 		OUT4_OUTPUT,
     43 		NUM_OUTPUTS
     44 	};
     45 
     46 	Matrix44() {
     47 		config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
     48 		configMatrixModule(4, 4, MIX11_PARAM, IN1_INPUT, OUT1_OUTPUT);
     49 		configParam(MIX11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1A", "%", 0.0f, 100.0f);
     50 		configParam(MIX21_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2A", "%", 0.0f, 100.0f);
     51 		configParam(MIX31_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3A", "%", 0.0f, 100.0f);
     52 		configParam(MIX41_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4A", "%", 0.0f, 100.0f);
     53 		configParam(MIX12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1B", "%", 0.0f, 100.0f);
     54 		configParam(MIX22_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2B", "%", 0.0f, 100.0f);
     55 		configParam(MIX32_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3B", "%", 0.0f, 100.0f);
     56 		configParam(MIX42_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4B", "%", 0.0f, 100.0f);
     57 		configParam(MIX13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1C", "%", 0.0f, 100.0f);
     58 		configParam(MIX23_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2C", "%", 0.0f, 100.0f);
     59 		configParam(MIX33_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3C", "%", 0.0f, 100.0f);
     60 		configParam(MIX43_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4C", "%", 0.0f, 100.0f);
     61 		configParam(MIX14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1D", "%", 0.0f, 100.0f);
     62 		configParam(MIX24_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2D", "%", 0.0f, 100.0f);
     63 		configParam(MIX34_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3D", "%", 0.0f, 100.0f);
     64 		configParam(MIX44_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4D", "%", 0.0f, 100.0f);
     65 
     66 		configInput(IN1_INPUT, "Signal 1");
     67 		configInput(IN2_INPUT, "Signal 2");
     68 		configInput(IN3_INPUT, "Signal 3");
     69 		configInput(IN4_INPUT, "Signal 4");
     70 
     71 		configOutput(OUT1_OUTPUT, "Signal A");
     72 		configOutput(OUT2_OUTPUT, "Signal B");
     73 		configOutput(OUT3_OUTPUT, "Signal C");
     74 		configOutput(OUT4_OUTPUT, "Signal D");
     75 
     76 
     77 		setLocalElements({new Matrix44Element(NULL, NULL, NULL)});
     78 		registerBase();
     79 		setExpanderModelPredicate([](Model* m) { return m == modelMatrix44Cvm; });
     80 	}
     81 
     82 	void elementsChanged() override;
     83 	void processAlways(const ProcessArgs& args) override;
     84 };
     85 
     86 } // namespace bogaudio