BogaudioModules

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

Matrix88.cpp (10362B)


      1 
      2 #include "Matrix88.hpp"
      3 
      4 void Matrix88::elementsChanged() {
      5 	// base-class caller holds lock on _elements.
      6 	Input** cvs = NULL;
      7 	Param** mutes = NULL;
      8 	bool* soloByColumns = NULL;
      9 	for (int i = 1, n = std::min(3, (int)_elements.size()); i < n; ++i) {
     10 		auto e = _elements[i];
     11 		assert(e);
     12 		if (e->cvs) {
     13 			cvs = e->cvs;
     14 		}
     15 		if (e->mutes) {
     16 			mutes = e->mutes;
     17 		}
     18 		if (e->soloByColumns) {
     19 			soloByColumns = e->soloByColumns;
     20 		}
     21 	}
     22 	setCVInputs(cvs);
     23 	setMuteParams(mutes);
     24 	setSoloByColumns(soloByColumns);
     25 }
     26 
     27 void Matrix88::processAlways(const ProcessArgs& args) {
     28 	if (expanderConnected()) {
     29 		Matrix88ExpanderMessage* te = toExpander();
     30 		te->baseID = _id;
     31 		te->position = 1;
     32 	}
     33 }
     34 
     35 struct Matrix88Widget : KnobMatrixModuleWidget {
     36 	static constexpr int hp = 22;
     37 
     38 	Matrix88Widget(Matrix88* module) {
     39 		setModule(module);
     40 		box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT);
     41 		setPanel(box.size, "Matrix88");
     42 		createScrews();
     43 
     44 		// generated by svg_widgets.rb
     45 		auto mix11ParamPosition = Vec(53.7, 32.2);
     46 		auto mix21ParamPosition = Vec(53.7, 69.2);
     47 		auto mix31ParamPosition = Vec(53.7, 106.2);
     48 		auto mix41ParamPosition = Vec(53.7, 143.2);
     49 		auto mix51ParamPosition = Vec(53.7, 180.2);
     50 		auto mix61ParamPosition = Vec(53.7, 217.2);
     51 		auto mix71ParamPosition = Vec(53.7, 254.2);
     52 		auto mix81ParamPosition = Vec(53.7, 291.2);
     53 		auto mix12ParamPosition = Vec(88.7, 32.2);
     54 		auto mix22ParamPosition = Vec(88.7, 69.2);
     55 		auto mix32ParamPosition = Vec(88.7, 106.2);
     56 		auto mix42ParamPosition = Vec(88.7, 143.2);
     57 		auto mix52ParamPosition = Vec(88.7, 180.2);
     58 		auto mix62ParamPosition = Vec(88.7, 217.2);
     59 		auto mix72ParamPosition = Vec(88.7, 254.2);
     60 		auto mix82ParamPosition = Vec(88.7, 291.2);
     61 		auto mix13ParamPosition = Vec(123.7, 32.2);
     62 		auto mix23ParamPosition = Vec(123.7, 69.2);
     63 		auto mix33ParamPosition = Vec(123.7, 106.2);
     64 		auto mix43ParamPosition = Vec(123.7, 143.2);
     65 		auto mix53ParamPosition = Vec(123.7, 180.2);
     66 		auto mix63ParamPosition = Vec(123.7, 217.2);
     67 		auto mix73ParamPosition = Vec(123.7, 254.2);
     68 		auto mix83ParamPosition = Vec(123.7, 291.2);
     69 		auto mix14ParamPosition = Vec(158.7, 32.2);
     70 		auto mix24ParamPosition = Vec(158.7, 69.2);
     71 		auto mix34ParamPosition = Vec(158.7, 106.2);
     72 		auto mix44ParamPosition = Vec(158.7, 143.2);
     73 		auto mix54ParamPosition = Vec(158.7, 180.2);
     74 		auto mix64ParamPosition = Vec(158.7, 217.2);
     75 		auto mix74ParamPosition = Vec(158.7, 254.2);
     76 		auto mix84ParamPosition = Vec(158.7, 291.2);
     77 		auto mix15ParamPosition = Vec(193.7, 32.2);
     78 		auto mix25ParamPosition = Vec(193.7, 69.2);
     79 		auto mix35ParamPosition = Vec(193.7, 106.2);
     80 		auto mix45ParamPosition = Vec(193.7, 143.2);
     81 		auto mix55ParamPosition = Vec(193.7, 180.2);
     82 		auto mix65ParamPosition = Vec(193.7, 217.2);
     83 		auto mix75ParamPosition = Vec(193.7, 254.2);
     84 		auto mix85ParamPosition = Vec(193.7, 291.2);
     85 		auto mix16ParamPosition = Vec(228.7, 32.2);
     86 		auto mix26ParamPosition = Vec(228.7, 69.2);
     87 		auto mix36ParamPosition = Vec(228.7, 106.2);
     88 		auto mix46ParamPosition = Vec(228.7, 143.2);
     89 		auto mix56ParamPosition = Vec(228.7, 180.2);
     90 		auto mix66ParamPosition = Vec(228.7, 217.2);
     91 		auto mix76ParamPosition = Vec(228.7, 254.2);
     92 		auto mix86ParamPosition = Vec(228.7, 291.2);
     93 		auto mix17ParamPosition = Vec(263.7, 32.2);
     94 		auto mix27ParamPosition = Vec(263.7, 69.2);
     95 		auto mix37ParamPosition = Vec(263.7, 106.2);
     96 		auto mix47ParamPosition = Vec(263.7, 143.2);
     97 		auto mix57ParamPosition = Vec(263.7, 180.2);
     98 		auto mix67ParamPosition = Vec(263.7, 217.2);
     99 		auto mix77ParamPosition = Vec(263.7, 254.2);
    100 		auto mix87ParamPosition = Vec(263.7, 291.2);
    101 		auto mix18ParamPosition = Vec(298.7, 32.2);
    102 		auto mix28ParamPosition = Vec(298.7, 69.2);
    103 		auto mix38ParamPosition = Vec(298.7, 106.2);
    104 		auto mix48ParamPosition = Vec(298.7, 143.2);
    105 		auto mix58ParamPosition = Vec(298.7, 180.2);
    106 		auto mix68ParamPosition = Vec(298.7, 217.2);
    107 		auto mix78ParamPosition = Vec(298.7, 254.2);
    108 		auto mix88ParamPosition = Vec(298.7, 291.2);
    109 
    110 		auto in1InputPosition = Vec(10.5, 30.0);
    111 		auto in2InputPosition = Vec(10.5, 67.0);
    112 		auto in3InputPosition = Vec(10.5, 104.0);
    113 		auto in4InputPosition = Vec(10.5, 141.0);
    114 		auto in5InputPosition = Vec(10.5, 178.0);
    115 		auto in6InputPosition = Vec(10.5, 215.0);
    116 		auto in7InputPosition = Vec(10.5, 252.0);
    117 		auto in8InputPosition = Vec(10.5, 289.0);
    118 
    119 		auto out1OutputPosition = Vec(51.5, 328.0);
    120 		auto out2OutputPosition = Vec(86.5, 328.0);
    121 		auto out3OutputPosition = Vec(121.5, 328.0);
    122 		auto out4OutputPosition = Vec(156.5, 328.0);
    123 		auto out5OutputPosition = Vec(191.5, 328.0);
    124 		auto out6OutputPosition = Vec(226.5, 328.0);
    125 		auto out7OutputPosition = Vec(261.5, 328.0);
    126 		auto out8OutputPosition = Vec(296.5, 328.0);
    127 		// end generated by svg_widgets.rb
    128 
    129 		createKnob(mix11ParamPosition, module, Matrix88::MIX11_PARAM);
    130 		createKnob(mix21ParamPosition, module, Matrix88::MIX21_PARAM);
    131 		createKnob(mix31ParamPosition, module, Matrix88::MIX31_PARAM);
    132 		createKnob(mix41ParamPosition, module, Matrix88::MIX41_PARAM);
    133 		createKnob(mix51ParamPosition, module, Matrix88::MIX51_PARAM);
    134 		createKnob(mix61ParamPosition, module, Matrix88::MIX61_PARAM);
    135 		createKnob(mix71ParamPosition, module, Matrix88::MIX71_PARAM);
    136 		createKnob(mix81ParamPosition, module, Matrix88::MIX81_PARAM);
    137 		createKnob(mix12ParamPosition, module, Matrix88::MIX12_PARAM);
    138 		createKnob(mix22ParamPosition, module, Matrix88::MIX22_PARAM);
    139 		createKnob(mix32ParamPosition, module, Matrix88::MIX32_PARAM);
    140 		createKnob(mix42ParamPosition, module, Matrix88::MIX42_PARAM);
    141 		createKnob(mix52ParamPosition, module, Matrix88::MIX52_PARAM);
    142 		createKnob(mix62ParamPosition, module, Matrix88::MIX62_PARAM);
    143 		createKnob(mix72ParamPosition, module, Matrix88::MIX72_PARAM);
    144 		createKnob(mix82ParamPosition, module, Matrix88::MIX82_PARAM);
    145 		createKnob(mix13ParamPosition, module, Matrix88::MIX13_PARAM);
    146 		createKnob(mix23ParamPosition, module, Matrix88::MIX23_PARAM);
    147 		createKnob(mix33ParamPosition, module, Matrix88::MIX33_PARAM);
    148 		createKnob(mix43ParamPosition, module, Matrix88::MIX43_PARAM);
    149 		createKnob(mix53ParamPosition, module, Matrix88::MIX53_PARAM);
    150 		createKnob(mix63ParamPosition, module, Matrix88::MIX63_PARAM);
    151 		createKnob(mix73ParamPosition, module, Matrix88::MIX73_PARAM);
    152 		createKnob(mix83ParamPosition, module, Matrix88::MIX83_PARAM);
    153 		createKnob(mix14ParamPosition, module, Matrix88::MIX14_PARAM);
    154 		createKnob(mix24ParamPosition, module, Matrix88::MIX24_PARAM);
    155 		createKnob(mix34ParamPosition, module, Matrix88::MIX34_PARAM);
    156 		createKnob(mix44ParamPosition, module, Matrix88::MIX44_PARAM);
    157 		createKnob(mix54ParamPosition, module, Matrix88::MIX54_PARAM);
    158 		createKnob(mix64ParamPosition, module, Matrix88::MIX64_PARAM);
    159 		createKnob(mix74ParamPosition, module, Matrix88::MIX74_PARAM);
    160 		createKnob(mix84ParamPosition, module, Matrix88::MIX84_PARAM);
    161 		createKnob(mix15ParamPosition, module, Matrix88::MIX15_PARAM);
    162 		createKnob(mix25ParamPosition, module, Matrix88::MIX25_PARAM);
    163 		createKnob(mix35ParamPosition, module, Matrix88::MIX35_PARAM);
    164 		createKnob(mix45ParamPosition, module, Matrix88::MIX45_PARAM);
    165 		createKnob(mix55ParamPosition, module, Matrix88::MIX55_PARAM);
    166 		createKnob(mix65ParamPosition, module, Matrix88::MIX65_PARAM);
    167 		createKnob(mix75ParamPosition, module, Matrix88::MIX75_PARAM);
    168 		createKnob(mix85ParamPosition, module, Matrix88::MIX85_PARAM);
    169 		createKnob(mix16ParamPosition, module, Matrix88::MIX16_PARAM);
    170 		createKnob(mix26ParamPosition, module, Matrix88::MIX26_PARAM);
    171 		createKnob(mix36ParamPosition, module, Matrix88::MIX36_PARAM);
    172 		createKnob(mix46ParamPosition, module, Matrix88::MIX46_PARAM);
    173 		createKnob(mix56ParamPosition, module, Matrix88::MIX56_PARAM);
    174 		createKnob(mix66ParamPosition, module, Matrix88::MIX66_PARAM);
    175 		createKnob(mix76ParamPosition, module, Matrix88::MIX76_PARAM);
    176 		createKnob(mix86ParamPosition, module, Matrix88::MIX86_PARAM);
    177 		createKnob(mix17ParamPosition, module, Matrix88::MIX17_PARAM);
    178 		createKnob(mix27ParamPosition, module, Matrix88::MIX27_PARAM);
    179 		createKnob(mix37ParamPosition, module, Matrix88::MIX37_PARAM);
    180 		createKnob(mix47ParamPosition, module, Matrix88::MIX47_PARAM);
    181 		createKnob(mix57ParamPosition, module, Matrix88::MIX57_PARAM);
    182 		createKnob(mix67ParamPosition, module, Matrix88::MIX67_PARAM);
    183 		createKnob(mix77ParamPosition, module, Matrix88::MIX77_PARAM);
    184 		createKnob(mix87ParamPosition, module, Matrix88::MIX87_PARAM);
    185 		createKnob(mix18ParamPosition, module, Matrix88::MIX18_PARAM);
    186 		createKnob(mix28ParamPosition, module, Matrix88::MIX28_PARAM);
    187 		createKnob(mix38ParamPosition, module, Matrix88::MIX38_PARAM);
    188 		createKnob(mix48ParamPosition, module, Matrix88::MIX48_PARAM);
    189 		createKnob(mix58ParamPosition, module, Matrix88::MIX58_PARAM);
    190 		createKnob(mix68ParamPosition, module, Matrix88::MIX68_PARAM);
    191 		createKnob(mix78ParamPosition, module, Matrix88::MIX78_PARAM);
    192 		createKnob(mix88ParamPosition, module, Matrix88::MIX88_PARAM);
    193 
    194 		addInput(createInput<Port24>(in1InputPosition, module, Matrix88::IN1_INPUT));
    195 		addInput(createInput<Port24>(in2InputPosition, module, Matrix88::IN2_INPUT));
    196 		addInput(createInput<Port24>(in3InputPosition, module, Matrix88::IN3_INPUT));
    197 		addInput(createInput<Port24>(in4InputPosition, module, Matrix88::IN4_INPUT));
    198 		addInput(createInput<Port24>(in5InputPosition, module, Matrix88::IN5_INPUT));
    199 		addInput(createInput<Port24>(in6InputPosition, module, Matrix88::IN6_INPUT));
    200 		addInput(createInput<Port24>(in7InputPosition, module, Matrix88::IN7_INPUT));
    201 		addInput(createInput<Port24>(in8InputPosition, module, Matrix88::IN8_INPUT));
    202 
    203 		addOutput(createOutput<Port24>(out1OutputPosition, module, Matrix88::OUT1_OUTPUT));
    204 		addOutput(createOutput<Port24>(out2OutputPosition, module, Matrix88::OUT2_OUTPUT));
    205 		addOutput(createOutput<Port24>(out3OutputPosition, module, Matrix88::OUT3_OUTPUT));
    206 		addOutput(createOutput<Port24>(out4OutputPosition, module, Matrix88::OUT4_OUTPUT));
    207 		addOutput(createOutput<Port24>(out5OutputPosition, module, Matrix88::OUT5_OUTPUT));
    208 		addOutput(createOutput<Port24>(out6OutputPosition, module, Matrix88::OUT6_OUTPUT));
    209 		addOutput(createOutput<Port24>(out7OutputPosition, module, Matrix88::OUT7_OUTPUT));
    210 		addOutput(createOutput<Port24>(out8OutputPosition, module, Matrix88::OUT8_OUTPUT));
    211 	}
    212 };
    213 
    214 Model* modelMatrix88 = bogaudio::createModel<Matrix88, Matrix88Widget>("Bogaudio-Matrix88", "MATRIX88", "8x8 matrix mixer", "Mixer", "Polyphonic");