PgmrX.cpp (5348B)
1 2 #include "PgmrX.hpp" 3 4 void PgmrX::processAlways(const ProcessArgs& args) { 5 int position = 0; 6 int baseID = 0; 7 if (baseConnected()) { 8 PgmrExpanderMessage* bm = fromBase(); 9 baseID = bm->baseID; 10 position = bm->position; 11 _rangeOffset = bm->rangeOffset; 12 _rangeScale = bm->rangeScale; 13 } 14 setBaseIDAndPosition(baseID, position); 15 if (_position < 1) { 16 for (int i = 0; i < 4; ++i) { 17 _localElements[i]->selectedLight.value = 0.0f; 18 } 19 } 20 21 if (expanderConnected()) { 22 PgmrExpanderMessage* te = toExpander(); 23 te->baseID = _baseID; 24 te->position = _position > 0 ? _position + 1 : 0; 25 te->rangeOffset = _rangeOffset; 26 te->rangeScale = _rangeScale; 27 } 28 } 29 30 struct PgmrXWidget : BGModuleWidget { 31 static constexpr int hp = 12; 32 33 PgmrXWidget(PgmrX* module) { 34 setModule(module); 35 box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT); 36 setPanel(box.size, "PgmrX"); 37 createScrews(); 38 39 // generated by svg_widgets.rb 40 auto cva1ParamPosition = Vec(9.5, 40.5); 41 auto cvb1ParamPosition = Vec(9.5, 94.5); 42 auto cvc1ParamPosition = Vec(9.5, 148.5); 43 auto cvd1ParamPosition = Vec(9.5, 202.5); 44 auto select1ParamPosition = Vec(13.5, 267.0); 45 auto cva2ParamPosition = Vec(54.5, 40.5); 46 auto cvb2ParamPosition = Vec(54.5, 94.5); 47 auto cvc2ParamPosition = Vec(54.5, 148.5); 48 auto cvd2ParamPosition = Vec(54.5, 202.5); 49 auto select2ParamPosition = Vec(58.5, 267.0); 50 auto cva3ParamPosition = Vec(99.5, 40.5); 51 auto cvb3ParamPosition = Vec(99.5, 94.5); 52 auto cvc3ParamPosition = Vec(99.5, 148.5); 53 auto cvd3ParamPosition = Vec(99.5, 202.5); 54 auto select3ParamPosition = Vec(103.5, 267.0); 55 auto cva4ParamPosition = Vec(144.5, 40.5); 56 auto cvb4ParamPosition = Vec(144.5, 94.5); 57 auto cvc4ParamPosition = Vec(144.5, 148.5); 58 auto cvd4ParamPosition = Vec(144.5, 202.5); 59 auto select4ParamPosition = Vec(148.5, 267.0); 60 61 auto select1InputPosition = Vec(10.5, 290.0); 62 auto select2InputPosition = Vec(55.5, 290.0); 63 auto select3InputPosition = Vec(100.5, 290.0); 64 auto select4InputPosition = Vec(145.5, 290.0); 65 66 auto select1OutputPosition = Vec(10.5, 330.0); 67 auto select2OutputPosition = Vec(55.5, 330.0); 68 auto select3OutputPosition = Vec(100.5, 330.0); 69 auto select4OutputPosition = Vec(145.5, 330.0); 70 71 auto select1LightPosition = Vec(19.3, 255.0); 72 auto select2LightPosition = Vec(64.3, 255.0); 73 auto select3LightPosition = Vec(109.3, 255.0); 74 auto select4LightPosition = Vec(154.3, 255.0); 75 // end generated by svg_widgets.rb 76 77 addParam(createParam<Knob26>(cva1ParamPosition, module, PgmrX::CVA1_PARAM)); 78 addParam(createParam<Knob26>(cvb1ParamPosition, module, PgmrX::CVB1_PARAM)); 79 addParam(createParam<Knob26>(cvc1ParamPosition, module, PgmrX::CVC1_PARAM)); 80 addParam(createParam<Knob26>(cvd1ParamPosition, module, PgmrX::CVD1_PARAM)); 81 addParam(createParam<Button18>(select1ParamPosition, module, PgmrX::SELECT1_PARAM)); 82 addParam(createParam<Knob26>(cva2ParamPosition, module, PgmrX::CVA2_PARAM)); 83 addParam(createParam<Knob26>(cvb2ParamPosition, module, PgmrX::CVB2_PARAM)); 84 addParam(createParam<Knob26>(cvc2ParamPosition, module, PgmrX::CVC2_PARAM)); 85 addParam(createParam<Knob26>(cvd2ParamPosition, module, PgmrX::CVD2_PARAM)); 86 addParam(createParam<Button18>(select2ParamPosition, module, PgmrX::SELECT2_PARAM)); 87 addParam(createParam<Knob26>(cva3ParamPosition, module, PgmrX::CVA3_PARAM)); 88 addParam(createParam<Knob26>(cvb3ParamPosition, module, PgmrX::CVB3_PARAM)); 89 addParam(createParam<Knob26>(cvc3ParamPosition, module, PgmrX::CVC3_PARAM)); 90 addParam(createParam<Knob26>(cvd3ParamPosition, module, PgmrX::CVD3_PARAM)); 91 addParam(createParam<Button18>(select3ParamPosition, module, PgmrX::SELECT3_PARAM)); 92 addParam(createParam<Knob26>(cva4ParamPosition, module, PgmrX::CVA4_PARAM)); 93 addParam(createParam<Knob26>(cvb4ParamPosition, module, PgmrX::CVB4_PARAM)); 94 addParam(createParam<Knob26>(cvc4ParamPosition, module, PgmrX::CVC4_PARAM)); 95 addParam(createParam<Knob26>(cvd4ParamPosition, module, PgmrX::CVD4_PARAM)); 96 addParam(createParam<Button18>(select4ParamPosition, module, PgmrX::SELECT4_PARAM)); 97 98 addInput(createInput<Port24>(select1InputPosition, module, PgmrX::SELECT1_INPUT)); 99 addInput(createInput<Port24>(select2InputPosition, module, PgmrX::SELECT2_INPUT)); 100 addInput(createInput<Port24>(select3InputPosition, module, PgmrX::SELECT3_INPUT)); 101 addInput(createInput<Port24>(select4InputPosition, module, PgmrX::SELECT4_INPUT)); 102 103 addOutput(createOutput<Port24>(select1OutputPosition, module, PgmrX::SELECT1_OUTPUT)); 104 addOutput(createOutput<Port24>(select2OutputPosition, module, PgmrX::SELECT2_OUTPUT)); 105 addOutput(createOutput<Port24>(select3OutputPosition, module, PgmrX::SELECT3_OUTPUT)); 106 addOutput(createOutput<Port24>(select4OutputPosition, module, PgmrX::SELECT4_OUTPUT)); 107 108 addChild(createLight<BGSmallLight<GreenLight>>(select1LightPosition, module, PgmrX::SELECT1_LIGHT)); 109 addChild(createLight<BGSmallLight<GreenLight>>(select2LightPosition, module, PgmrX::SELECT2_LIGHT)); 110 addChild(createLight<BGSmallLight<GreenLight>>(select3LightPosition, module, PgmrX::SELECT3_LIGHT)); 111 addChild(createLight<BGSmallLight<GreenLight>>(select4LightPosition, module, PgmrX::SELECT4_LIGHT)); 112 } 113 }; 114 115 Model* modelPgmrX = createModel<PgmrX, PgmrXWidget>("Bogaudio-PgmrX", "PGMRX", "4-step chainable expander for PGMR", "Sequencer", "Expander", "Polyphonic");