BogaudioModules

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

Matrix88.hpp (7431B)


      1 #pragma once
      2 
      3 #include "Matrix88_shared.hpp"
      4 
      5 namespace bogaudio {
      6 
      7 typedef ChainableExpandableModule<Matrix88ExpanderMessage, Matrix88Element, 1, KnobMatrixModule> Matrix88Base;
      8 
      9 struct Matrix88 : Matrix88Base {
     10 	enum ParamsIds {
     11 		MIX11_PARAM,
     12 		MIX21_PARAM,
     13 		MIX31_PARAM,
     14 		MIX41_PARAM,
     15 		MIX51_PARAM,
     16 		MIX61_PARAM,
     17 		MIX71_PARAM,
     18 		MIX81_PARAM,
     19 		MIX12_PARAM,
     20 		MIX22_PARAM,
     21 		MIX32_PARAM,
     22 		MIX42_PARAM,
     23 		MIX52_PARAM,
     24 		MIX62_PARAM,
     25 		MIX72_PARAM,
     26 		MIX82_PARAM,
     27 		MIX13_PARAM,
     28 		MIX23_PARAM,
     29 		MIX33_PARAM,
     30 		MIX43_PARAM,
     31 		MIX53_PARAM,
     32 		MIX63_PARAM,
     33 		MIX73_PARAM,
     34 		MIX83_PARAM,
     35 		MIX14_PARAM,
     36 		MIX24_PARAM,
     37 		MIX34_PARAM,
     38 		MIX44_PARAM,
     39 		MIX54_PARAM,
     40 		MIX64_PARAM,
     41 		MIX74_PARAM,
     42 		MIX84_PARAM,
     43 		MIX15_PARAM,
     44 		MIX25_PARAM,
     45 		MIX35_PARAM,
     46 		MIX45_PARAM,
     47 		MIX55_PARAM,
     48 		MIX65_PARAM,
     49 		MIX75_PARAM,
     50 		MIX85_PARAM,
     51 		MIX16_PARAM,
     52 		MIX26_PARAM,
     53 		MIX36_PARAM,
     54 		MIX46_PARAM,
     55 		MIX56_PARAM,
     56 		MIX66_PARAM,
     57 		MIX76_PARAM,
     58 		MIX86_PARAM,
     59 		MIX17_PARAM,
     60 		MIX27_PARAM,
     61 		MIX37_PARAM,
     62 		MIX47_PARAM,
     63 		MIX57_PARAM,
     64 		MIX67_PARAM,
     65 		MIX77_PARAM,
     66 		MIX87_PARAM,
     67 		MIX18_PARAM,
     68 		MIX28_PARAM,
     69 		MIX38_PARAM,
     70 		MIX48_PARAM,
     71 		MIX58_PARAM,
     72 		MIX68_PARAM,
     73 		MIX78_PARAM,
     74 		MIX88_PARAM,
     75 		NUM_PARAMS
     76 	};
     77 
     78 	enum InputsIds {
     79 		IN1_INPUT,
     80 		IN2_INPUT,
     81 		IN3_INPUT,
     82 		IN4_INPUT,
     83 		IN5_INPUT,
     84 		IN6_INPUT,
     85 		IN7_INPUT,
     86 		IN8_INPUT,
     87 		NUM_INPUTS
     88 	};
     89 
     90 	enum OutputsIds {
     91 		OUT1_OUTPUT,
     92 		OUT2_OUTPUT,
     93 		OUT3_OUTPUT,
     94 		OUT4_OUTPUT,
     95 		OUT5_OUTPUT,
     96 		OUT6_OUTPUT,
     97 		OUT7_OUTPUT,
     98 		OUT8_OUTPUT,
     99 		NUM_OUTPUTS
    100 	};
    101 
    102 	Matrix88() {
    103 		config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
    104 		configMatrixModule(8, 8, MIX11_PARAM, IN1_INPUT, OUT1_OUTPUT);
    105 		configParam(MIX11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1A", "%", 0.0f, 100.0f);
    106 		configParam(MIX21_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2A", "%", 0.0f, 100.0f);
    107 		configParam(MIX31_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3A", "%", 0.0f, 100.0f);
    108 		configParam(MIX41_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4A", "%", 0.0f, 100.0f);
    109 		configParam(MIX51_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5A", "%", 0.0f, 100.0f);
    110 		configParam(MIX61_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6A", "%", 0.0f, 100.0f);
    111 		configParam(MIX71_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7A", "%", 0.0f, 100.0f);
    112 		configParam(MIX81_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8A", "%", 0.0f, 100.0f);
    113 		configParam(MIX12_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1B", "%", 0.0f, 100.0f);
    114 		configParam(MIX22_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2B", "%", 0.0f, 100.0f);
    115 		configParam(MIX32_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3B", "%", 0.0f, 100.0f);
    116 		configParam(MIX42_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4B", "%", 0.0f, 100.0f);
    117 		configParam(MIX52_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5B", "%", 0.0f, 100.0f);
    118 		configParam(MIX62_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6B", "%", 0.0f, 100.0f);
    119 		configParam(MIX72_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7B", "%", 0.0f, 100.0f);
    120 		configParam(MIX82_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8B", "%", 0.0f, 100.0f);
    121 		configParam(MIX13_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1C", "%", 0.0f, 100.0f);
    122 		configParam(MIX23_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2C", "%", 0.0f, 100.0f);
    123 		configParam(MIX33_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3C", "%", 0.0f, 100.0f);
    124 		configParam(MIX43_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4C", "%", 0.0f, 100.0f);
    125 		configParam(MIX53_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5C", "%", 0.0f, 100.0f);
    126 		configParam(MIX63_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6C", "%", 0.0f, 100.0f);
    127 		configParam(MIX73_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7C", "%", 0.0f, 100.0f);
    128 		configParam(MIX83_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8C", "%", 0.0f, 100.0f);
    129 		configParam(MIX14_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1D", "%", 0.0f, 100.0f);
    130 		configParam(MIX24_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2D", "%", 0.0f, 100.0f);
    131 		configParam(MIX34_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3D", "%", 0.0f, 100.0f);
    132 		configParam(MIX44_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4D", "%", 0.0f, 100.0f);
    133 		configParam(MIX54_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5D", "%", 0.0f, 100.0f);
    134 		configParam(MIX64_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6D", "%", 0.0f, 100.0f);
    135 		configParam(MIX74_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7D", "%", 0.0f, 100.0f);
    136 		configParam(MIX84_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8D", "%", 0.0f, 100.0f);
    137 		configParam(MIX15_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1E", "%", 0.0f, 100.0f);
    138 		configParam(MIX25_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2E", "%", 0.0f, 100.0f);
    139 		configParam(MIX35_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3E", "%", 0.0f, 100.0f);
    140 		configParam(MIX45_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4E", "%", 0.0f, 100.0f);
    141 		configParam(MIX55_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5E", "%", 0.0f, 100.0f);
    142 		configParam(MIX65_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6E", "%", 0.0f, 100.0f);
    143 		configParam(MIX75_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7E", "%", 0.0f, 100.0f);
    144 		configParam(MIX85_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8E", "%", 0.0f, 100.0f);
    145 		configParam(MIX16_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1F", "%", 0.0f, 100.0f);
    146 		configParam(MIX26_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2F", "%", 0.0f, 100.0f);
    147 		configParam(MIX36_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3F", "%", 0.0f, 100.0f);
    148 		configParam(MIX46_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4F", "%", 0.0f, 100.0f);
    149 		configParam(MIX56_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5F", "%", 0.0f, 100.0f);
    150 		configParam(MIX66_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6F", "%", 0.0f, 100.0f);
    151 		configParam(MIX76_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7F", "%", 0.0f, 100.0f);
    152 		configParam(MIX86_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8F", "%", 0.0f, 100.0f);
    153 		configParam(MIX17_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1G", "%", 0.0f, 100.0f);
    154 		configParam(MIX27_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2G", "%", 0.0f, 100.0f);
    155 		configParam(MIX37_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3G", "%", 0.0f, 100.0f);
    156 		configParam(MIX47_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4G", "%", 0.0f, 100.0f);
    157 		configParam(MIX57_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5G", "%", 0.0f, 100.0f);
    158 		configParam(MIX67_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6G", "%", 0.0f, 100.0f);
    159 		configParam(MIX77_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7G", "%", 0.0f, 100.0f);
    160 		configParam(MIX87_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8G", "%", 0.0f, 100.0f);
    161 		configParam(MIX18_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1H", "%", 0.0f, 100.0f);
    162 		configParam(MIX28_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2H", "%", 0.0f, 100.0f);
    163 		configParam(MIX38_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3H", "%", 0.0f, 100.0f);
    164 		configParam(MIX48_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4H", "%", 0.0f, 100.0f);
    165 		configParam(MIX58_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5H", "%", 0.0f, 100.0f);
    166 		configParam(MIX68_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6H", "%", 0.0f, 100.0f);
    167 		configParam(MIX78_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7H", "%", 0.0f, 100.0f);
    168 		configParam(MIX88_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8H", "%", 0.0f, 100.0f);
    169 
    170 		configInput(IN1_INPUT, "Signal 1");
    171 		configInput(IN2_INPUT, "Signal 2");
    172 		configInput(IN3_INPUT, "Signal 3");
    173 		configInput(IN4_INPUT, "Signal 4");
    174 		configInput(IN5_INPUT, "Signal 5");
    175 		configInput(IN6_INPUT, "Signal 6");
    176 		configInput(IN7_INPUT, "Signal 7");
    177 		configInput(IN8_INPUT, "Signal 8");
    178 
    179 		configOutput(OUT1_OUTPUT, "Signal A");
    180 		configOutput(OUT2_OUTPUT, "Signal B");
    181 		configOutput(OUT3_OUTPUT, "Signal C");
    182 		configOutput(OUT4_OUTPUT, "Signal D");
    183 		configOutput(OUT5_OUTPUT, "Signal E");
    184 		configOutput(OUT6_OUTPUT, "Signal F");
    185 		configOutput(OUT7_OUTPUT, "Signal G");
    186 		configOutput(OUT8_OUTPUT, "Signal H");
    187 
    188 		setLocalElements({new Matrix88Element(NULL, NULL, NULL)});
    189 		registerBase();
    190 		setExpanderModelPredicate([](Model* m) { return m == modelMatrix88Cv || m == modelMatrix88M; });
    191 	}
    192 
    193 	void elementsChanged() override;
    194 	void processAlways(const ProcessArgs& args) override;
    195 };
    196 
    197 } // namespace bogaudio