Matrix44.cpp (3924B)
1 2 #include "Matrix44.hpp" 3 4 void Matrix44::elementsChanged() { 5 // base-class caller holds lock on _elements. 6 Input** cvs = NULL; 7 Param** mutes = NULL; 8 bool* soloByColumns = NULL; 9 if (_elements.size() > 1) { 10 auto e = _elements[1]; 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 Matrix44::processAlways(const ProcessArgs& args) { 28 if (expanderConnected()) { 29 Matrix44ExpanderMessage* te = toExpander(); 30 te->baseID = _id; 31 te->position = 1; 32 } 33 } 34 35 struct Matrix44Widget : KnobMatrixModuleWidget { 36 static constexpr int hp = 10; 37 38 Matrix44Widget(Matrix44* module) { 39 setModule(module); 40 box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT); 41 setPanel(box.size, "Matrix44"); 42 createScrews(); 43 44 // generated by svg_widgets.rb 45 auto mix11ParamPosition = Vec(17.2, 58.7); 46 auto mix21ParamPosition = Vec(17.2, 115.2); 47 auto mix31ParamPosition = Vec(17.2, 171.2); 48 auto mix41ParamPosition = Vec(17.2, 227.2); 49 auto mix12ParamPosition = Vec(49.2, 58.7); 50 auto mix22ParamPosition = Vec(49.2, 115.2); 51 auto mix32ParamPosition = Vec(49.2, 171.2); 52 auto mix42ParamPosition = Vec(49.2, 227.2); 53 auto mix13ParamPosition = Vec(81.2, 58.7); 54 auto mix23ParamPosition = Vec(81.2, 115.2); 55 auto mix33ParamPosition = Vec(81.2, 171.2); 56 auto mix43ParamPosition = Vec(81.2, 227.2); 57 auto mix14ParamPosition = Vec(113.2, 58.7); 58 auto mix24ParamPosition = Vec(113.2, 115.2); 59 auto mix34ParamPosition = Vec(113.2, 171.2); 60 auto mix44ParamPosition = Vec(113.2, 227.2); 61 62 auto in1InputPosition = Vec(15.0, 274.0); 63 auto in2InputPosition = Vec(47.0, 274.0); 64 auto in3InputPosition = Vec(79.0, 274.0); 65 auto in4InputPosition = Vec(111.0, 274.0); 66 67 auto out1OutputPosition = Vec(15.0, 318.0); 68 auto out2OutputPosition = Vec(47.0, 318.0); 69 auto out3OutputPosition = Vec(79.0, 318.0); 70 auto out4OutputPosition = Vec(111.0, 318.0); 71 // end generated by svg_widgets.rb 72 73 createKnob(mix11ParamPosition, module, Matrix44::MIX11_PARAM); 74 createKnob(mix21ParamPosition, module, Matrix44::MIX21_PARAM); 75 createKnob(mix31ParamPosition, module, Matrix44::MIX31_PARAM); 76 createKnob(mix41ParamPosition, module, Matrix44::MIX41_PARAM); 77 createKnob(mix12ParamPosition, module, Matrix44::MIX12_PARAM); 78 createKnob(mix22ParamPosition, module, Matrix44::MIX22_PARAM); 79 createKnob(mix32ParamPosition, module, Matrix44::MIX32_PARAM); 80 createKnob(mix42ParamPosition, module, Matrix44::MIX42_PARAM); 81 createKnob(mix13ParamPosition, module, Matrix44::MIX13_PARAM); 82 createKnob(mix23ParamPosition, module, Matrix44::MIX23_PARAM); 83 createKnob(mix33ParamPosition, module, Matrix44::MIX33_PARAM); 84 createKnob(mix43ParamPosition, module, Matrix44::MIX43_PARAM); 85 createKnob(mix14ParamPosition, module, Matrix44::MIX14_PARAM); 86 createKnob(mix24ParamPosition, module, Matrix44::MIX24_PARAM); 87 createKnob(mix34ParamPosition, module, Matrix44::MIX34_PARAM); 88 createKnob(mix44ParamPosition, module, Matrix44::MIX44_PARAM); 89 90 addInput(createInput<Port24>(in1InputPosition, module, Matrix44::IN1_INPUT)); 91 addInput(createInput<Port24>(in2InputPosition, module, Matrix44::IN2_INPUT)); 92 addInput(createInput<Port24>(in3InputPosition, module, Matrix44::IN3_INPUT)); 93 addInput(createInput<Port24>(in4InputPosition, module, Matrix44::IN4_INPUT)); 94 95 addOutput(createOutput<Port24>(out1OutputPosition, module, Matrix44::OUT1_OUTPUT)); 96 addOutput(createOutput<Port24>(out2OutputPosition, module, Matrix44::OUT2_OUTPUT)); 97 addOutput(createOutput<Port24>(out3OutputPosition, module, Matrix44::OUT3_OUTPUT)); 98 addOutput(createOutput<Port24>(out4OutputPosition, module, Matrix44::OUT4_OUTPUT)); 99 } 100 }; 101 102 Model* modelMatrix44 = createModel<Matrix44, Matrix44Widget>("Bogaudio-Matrix44", "MATRIX44", "4x4 matrix mixer", "Mixer", "Polyphonic");