//************************************************************************************** //2x8 Multimple Module for VCV Rack by Autodafe http://www.autodafe.net // //************************************************************************************** #include "Autodafe.hpp" namespace rack_plugin_Autodafe { struct Multiple28 : Module { enum ParamIds { NUM_PARAMS }; enum InputIds { INPUT1, INPUT2, NUM_INPUTS }; enum OutputIds { OUT11, OUT12, OUT13, OUT14, OUT15, OUT16, OUT17, OUT18, OUT21, OUT22, OUT23, OUT24, OUT25, OUT26, OUT27, OUT28, NUM_OUTPUTS }; Multiple28(); void step(); }; Multiple28::Multiple28() { params.resize(NUM_PARAMS); inputs.resize(NUM_INPUTS); outputs.resize(NUM_OUTPUTS); } void Multiple28::step() { float IN1 = inputs[INPUT1].value; float IN2 = inputs[INPUT2].value; // Set outputs //first column if (outputs[OUT11].active) { outputs[OUT11].value = IN1; } if (outputs[OUT12].active) { outputs[OUT12].value = IN1; } if (outputs[OUT13].active) { outputs[OUT13].value = IN1; } if (outputs[OUT14].active) { outputs[OUT14].value = IN1; } if (outputs[OUT15].active) { outputs[OUT15].value = IN1; } if (outputs[OUT16].active) { outputs[OUT16].value = IN1; } if (outputs[OUT17].active) { outputs[OUT17].value = IN1; } if (outputs[OUT18].active) { outputs[OUT18].value = IN1; } //SECOND COLUMN if (outputs[OUT21].active) { outputs[OUT21].value = IN2; } if (outputs[OUT22].active) { outputs[OUT22].value = IN2; } if (outputs[OUT23].active) { outputs[OUT23].value = IN2; } if (outputs[OUT24].active) { outputs[OUT24].value = IN2; } if (outputs[OUT25].active) { outputs[OUT25].value = IN2; } if (outputs[OUT26].active) { outputs[OUT26].value = IN2; } if (outputs[OUT27].active) { outputs[OUT27].value = IN2; } if (outputs[OUT28].active) { outputs[OUT28].value = IN2; } } struct Multiple28Widget : ModuleWidget { Multiple28Widget(Multiple28 *module); }; Multiple28Widget::Multiple28Widget(Multiple28 *module) : ModuleWidget(module) { box.size = Vec(15*6, 380); { SVGPanel *panel = new SVGPanel(); panel->box.size = box.size; panel->setBackground(SVG::load(assetPlugin(plugin, "res/Multiple28.svg"))); addChild(panel); } addChild(createScrew(Vec(5, 0))); addChild(createScrew(Vec(5, 365))); addChild(createScrew(Vec(70, 0))); addChild(createScrew(Vec(70, 365))); addInput(createInput(Vec(10, 20), module, Multiple28::INPUT1)); addInput(createInput(Vec(50, 20), module, Multiple28::INPUT2)); addOutput(createOutput(Vec(10, 60), module, Multiple28::OUT11)); addOutput(createOutput(Vec(10, 95), module, Multiple28::OUT12)); addOutput(createOutput(Vec(10, 130), module, Multiple28::OUT13)); addOutput(createOutput(Vec(10, 165), module, Multiple28::OUT14)); addOutput(createOutput(Vec(10, 200), module, Multiple28::OUT15)); addOutput(createOutput(Vec(10, 235), module, Multiple28::OUT16)); addOutput(createOutput(Vec(10, 270), module, Multiple28::OUT17)); addOutput(createOutput(Vec(10, 305), module, Multiple28::OUT18)); addOutput(createOutput(Vec(50, 60), module, Multiple28::OUT21)); addOutput(createOutput(Vec(50, 95), module, Multiple28::OUT22)); addOutput(createOutput(Vec(50, 130), module, Multiple28::OUT23)); addOutput(createOutput(Vec(50, 165), module, Multiple28::OUT24)); addOutput(createOutput(Vec(50, 200), module, Multiple28::OUT25)); addOutput(createOutput(Vec(50, 235), module, Multiple28::OUT26)); addOutput(createOutput(Vec(50, 270), module, Multiple28::OUT27)); addOutput(createOutput(Vec(50, 305), module, Multiple28::OUT28)); } } // namespace rack_plugin_Autodafe using namespace rack_plugin_Autodafe; RACK_PLUGIN_MODEL_INIT(Autodafe, Multiple28) { return Model::create("Autodafe", "Multiple 2x8", "Multiple 2x8", UTILITY_TAG); }