BogaudioModules

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

TestExpander.cpp (2789B)


      1 
      2 #include "TestExpander.hpp"
      3 
      4 int TestExpanderBase::channels() {
      5 	return inputs[IN_INPUT].getChannels();
      6 }
      7 
      8 void TestExpanderBase::processAll(const ProcessArgs& args) {
      9 	outputs[OUT_OUTPUT].setChannels(_channels);
     10 	lights[COM_LIGHT].value = expanderConnected();
     11 }
     12 
     13 void TestExpanderBase::processChannel(const ProcessArgs& args, int c) {
     14 	if (expanderConnected()) {
     15 		toExpander()->sample[c] = inputs[IN_INPUT].getPolyVoltage(c);
     16 		outputs[OUT_OUTPUT].setVoltage(fromExpander()->sample[c], c);
     17 	}
     18 	else {
     19 		outputs[OUT_OUTPUT].setVoltage(inputs[IN_INPUT].getPolyVoltage(c), c);
     20 	}
     21 }
     22 
     23 struct TestExpanderBaseWidget : BGModuleWidget {
     24 	static constexpr int hp = 3;
     25 
     26 	TestExpanderBaseWidget(TestExpanderBase* module) {
     27 		setModule(module);
     28 		box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT);
     29 		setPanel(box.size, "TestExpanderBase");
     30 		createScrews();
     31 
     32 		// generated by svg_widgets.rb
     33 		auto inInputPosition = Vec(10.5, 263.0);
     34 
     35 		auto outOutputPosition = Vec(10.5, 301.0);
     36 
     37 		auto comLightPosition = Vec(10.0, 245.5);
     38 		// end generated by svg_widgets.rb
     39 
     40 		addInput(createInput<Port24>(inInputPosition, module, TestExpanderBase::IN_INPUT));
     41 
     42 		addOutput(createOutput<Port24>(outOutputPosition, module, TestExpanderBase::OUT_OUTPUT));
     43 
     44 		addChild(createLight<BGSmallLight<GreenLight>>(comLightPosition, module, TestExpanderBase::COM_LIGHT));
     45 	}
     46 };
     47 
     48 Model* modelTestExpanderBase = createModel<TestExpanderBase, TestExpanderBaseWidget>("Bogaudio-TestExpanderBase", "TEB", "expanders test base module");
     49 
     50 
     51 void TestExpanderExtension::processAll(const ProcessArgs& args) {
     52 	outputs[OUT_OUTPUT].setChannels(_channels);
     53 	lights[COM_LIGHT].value = baseConnected();
     54 }
     55 
     56 void TestExpanderExtension::processChannel(const ProcessArgs& args, int c) {
     57 	if (baseConnected()) {
     58 		float sample = fromBase()->sample[c];
     59 		toBase()->sample[c] = -sample;
     60 		outputs[OUT_OUTPUT].setVoltage(sample, c);
     61 	}
     62 	else {
     63 		outputs[OUT_OUTPUT].setVoltage(0.0f, c);
     64 	}
     65 }
     66 
     67 struct TestExpanderExtensionWidget : BGModuleWidget {
     68 	static constexpr int hp = 3;
     69 
     70 	TestExpanderExtensionWidget(TestExpanderExtension* module) {
     71 		setModule(module);
     72 		box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT);
     73 		setPanel(box.size, "TestExpanderExtension");
     74 		createScrews();
     75 
     76 		// generated by svg_widgets.rb
     77 		auto outOutputPosition = Vec(10.5, 301.0);
     78 
     79 		auto comLightPosition = Vec(10.0, 280.5);
     80 		// end generated by svg_widgets.rb
     81 
     82 		addOutput(createOutput<Port24>(outOutputPosition, module, TestExpanderExtension::OUT_OUTPUT));
     83 
     84 		addChild(createLight<BGSmallLight<GreenLight>>(comLightPosition, module, TestExpanderExtension::COM_LIGHT));
     85 	}
     86 };
     87 
     88 Model* modelTestExpanderExtension = createModel<TestExpanderExtension, TestExpanderExtensionWidget>("Bogaudio-TestExpanderExtension", "TEE", "expanders test expander module");