BogaudioModules

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

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