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");