BogaudioModules

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

AddrSeqX.cpp (3333B)


      1 
      2 #include "AddrSeqX.hpp"
      3 
      4 void AddrSeqX::processAlways(const ProcessArgs& args) {
      5 	int position = 0;
      6 	int baseID = 0;
      7 	if (baseConnected()) {
      8 		AddrSeqExpanderMessage* 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]->light.value = 0.0f;
     18 		}
     19 	}
     20 
     21 	if (expanderConnected()) {
     22 		AddrSeqExpanderMessage* 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 AddrSeqXWidget : BGModuleWidget {
     31 	static constexpr int hp = 3;
     32 
     33 	AddrSeqXWidget(AddrSeqX* module) {
     34 		setModule(module);
     35 		box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT);
     36 		setPanel(box.size, "AddrSeqX");
     37 		createScrews();
     38 
     39 		// generated by svg_widgets.rb
     40 		auto out1ParamPosition = Vec(14.5, 36.0);
     41 		auto out2ParamPosition = Vec(14.5, 77.3);
     42 		auto out3ParamPosition = Vec(14.5, 118.6);
     43 		auto out4ParamPosition = Vec(14.5, 159.9);
     44 		auto out5ParamPosition = Vec(14.5, 201.1);
     45 		auto out6ParamPosition = Vec(14.5, 242.4);
     46 		auto out7ParamPosition = Vec(14.5, 283.7);
     47 		auto out8ParamPosition = Vec(14.5, 325.0);
     48 
     49 		auto out1LightPosition = Vec(22.5, 58.5);
     50 		auto out2LightPosition = Vec(22.5, 99.8);
     51 		auto out3LightPosition = Vec(22.5, 141.1);
     52 		auto out4LightPosition = Vec(22.5, 182.4);
     53 		auto out5LightPosition = Vec(22.5, 223.6);
     54 		auto out6LightPosition = Vec(22.5, 264.9);
     55 		auto out7LightPosition = Vec(22.5, 306.2);
     56 		auto out8LightPosition = Vec(22.5, 347.5);
     57 		// end generated by svg_widgets.rb
     58 
     59 		addParam(createParam<Knob16>(out1ParamPosition, module, AddrSeqX::OUT1_PARAM));
     60 		addParam(createParam<Knob16>(out2ParamPosition, module, AddrSeqX::OUT2_PARAM));
     61 		addParam(createParam<Knob16>(out3ParamPosition, module, AddrSeqX::OUT3_PARAM));
     62 		addParam(createParam<Knob16>(out4ParamPosition, module, AddrSeqX::OUT4_PARAM));
     63 		addParam(createParam<Knob16>(out5ParamPosition, module, AddrSeqX::OUT5_PARAM));
     64 		addParam(createParam<Knob16>(out6ParamPosition, module, AddrSeqX::OUT6_PARAM));
     65 		addParam(createParam<Knob16>(out7ParamPosition, module, AddrSeqX::OUT7_PARAM));
     66 		addParam(createParam<Knob16>(out8ParamPosition, module, AddrSeqX::OUT8_PARAM));
     67 
     68 		addChild(createLight<BGSmallLight<GreenLight>>(out1LightPosition, module, AddrSeqX::OUT1_LIGHT));
     69 		addChild(createLight<BGSmallLight<GreenLight>>(out2LightPosition, module, AddrSeqX::OUT2_LIGHT));
     70 		addChild(createLight<BGSmallLight<GreenLight>>(out3LightPosition, module, AddrSeqX::OUT3_LIGHT));
     71 		addChild(createLight<BGSmallLight<GreenLight>>(out4LightPosition, module, AddrSeqX::OUT4_LIGHT));
     72 		addChild(createLight<BGSmallLight<GreenLight>>(out5LightPosition, module, AddrSeqX::OUT5_LIGHT));
     73 		addChild(createLight<BGSmallLight<GreenLight>>(out6LightPosition, module, AddrSeqX::OUT6_LIGHT));
     74 		addChild(createLight<BGSmallLight<GreenLight>>(out7LightPosition, module, AddrSeqX::OUT7_LIGHT));
     75 		addChild(createLight<BGSmallLight<GreenLight>>(out8LightPosition, module, AddrSeqX::OUT8_LIGHT));
     76 	}
     77 };
     78 
     79 Model* modelAddrSeqX = createModel<AddrSeqX, AddrSeqXWidget>("Bogaudio-AddrSeqX", "ASX", "8-step chainable expander for ADDR-SEQ", "Sequencer", "Expander", "Polyphonic");