BogaudioModules

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

Mult.cpp (2254B)


      1 
      2 #include "Mult.hpp"
      3 
      4 void Mult::processAll(const ProcessArgs& args) {
      5 	int n = inputs[INA_INPUT].getChannels();
      6 	float* out = inputs[INA_INPUT].getVoltages();
      7 	outputs[OUTA1_OUTPUT].setChannels(n);
      8 	outputs[OUTA1_OUTPUT].writeVoltages(out);
      9 	outputs[OUTA2_OUTPUT].setChannels(n);
     10 	outputs[OUTA2_OUTPUT].writeVoltages(out);
     11 	outputs[OUTA3_OUTPUT].setChannels(n);
     12 	outputs[OUTA3_OUTPUT].writeVoltages(out);
     13 
     14 	if (inputs[INB_INPUT].isConnected()) {
     15 		n = inputs[INB_INPUT].getChannels();
     16 		out = inputs[INB_INPUT].getVoltages();
     17 	}
     18 	outputs[OUTB1_OUTPUT].setChannels(n);
     19 	outputs[OUTB1_OUTPUT].writeVoltages(out);
     20 	outputs[OUTB2_OUTPUT].setChannels(n);
     21 	outputs[OUTB2_OUTPUT].writeVoltages(out);
     22 	outputs[OUTB3_OUTPUT].setChannels(n);
     23 	outputs[OUTB3_OUTPUT].writeVoltages(out);
     24 }
     25 
     26 struct MultWidget : BGModuleWidget {
     27 	static constexpr int hp = 3;
     28 
     29 	MultWidget(Mult* module) {
     30 		setModule(module);
     31 		box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT);
     32 		setPanel(box.size, "Mult");
     33 		createScrews();
     34 
     35 		// generated by svg_widgets.rb
     36 		auto inaInputPosition = Vec(10.5, 21.0);
     37 		auto inbInputPosition = Vec(10.5, 181.0);
     38 
     39 		auto outa1OutputPosition = Vec(10.5, 62.0);
     40 		auto outa2OutputPosition = Vec(10.5, 92.0);
     41 		auto outa3OutputPosition = Vec(10.5, 122.0);
     42 		auto outb1OutputPosition = Vec(10.5, 222.0);
     43 		auto outb2OutputPosition = Vec(10.5, 252.0);
     44 		auto outb3OutputPosition = Vec(10.5, 282.0);
     45 		// end generated by svg_widgets.rb
     46 
     47 		addInput(createInput<Port24>(inaInputPosition, module, Mult::INA_INPUT));
     48 		addInput(createInput<Port24>(inbInputPosition, module, Mult::INB_INPUT));
     49 
     50 		addOutput(createOutput<Port24>(outa1OutputPosition, module, Mult::OUTA1_OUTPUT));
     51 		addOutput(createOutput<Port24>(outa2OutputPosition, module, Mult::OUTA2_OUTPUT));
     52 		addOutput(createOutput<Port24>(outa3OutputPosition, module, Mult::OUTA3_OUTPUT));
     53 		addOutput(createOutput<Port24>(outb1OutputPosition, module, Mult::OUTB1_OUTPUT));
     54 		addOutput(createOutput<Port24>(outb2OutputPosition, module, Mult::OUTB2_OUTPUT));
     55 		addOutput(createOutput<Port24>(outb3OutputPosition, module, Mult::OUTB3_OUTPUT));
     56 	}
     57 };
     58 
     59 Model* modelMult = bogaudio::createModel<Mult, MultWidget>("Bogaudio-Mult", "MULT", "1:6 or dual 1:3 multiple/splitter", "Multiple", "Polyphonic");