#include "Bidoo.hpp" #include "BidooComponents.hpp" #include "dsp/digital.hpp" using namespace std; namespace rack_plugin_Bidoo { struct SIGMA : Module { enum ParamIds { NUM_PARAMS }; enum InputIds { IN_INPUT, NUM_INPUTS = IN_INPUT + 18 }; enum OutputIds { OUT_OUTPUT, NUM_OUTPUTS = OUT_OUTPUT + 6 }; enum LightIds { NUM_LIGHTS }; SIGMA() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) { } void step() override; }; void SIGMA::step() { for (int i = 0; i < NUM_OUTPUTS; i++) { outputs[i].value = inputs[3*i].value + inputs[3*i+1].value + inputs[3*i+2].value; } } struct SIGMAWidget : ModuleWidget { SIGMAWidget(SIGMA *module) : ModuleWidget(module) { setPanel(SVG::load(assetPlugin(plugin, "res/SIGMA.svg"))); addChild(Widget::create(Vec(RACK_GRID_WIDTH, 0))); addChild(Widget::create(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); addChild(Widget::create(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); addChild(Widget::create(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); for (int i = 0; i < SIGMA::NUM_OUTPUTS; i++) { addOutput(Port::create(Vec(15.0f+round(i/3)*30.0f, 120.0f+(i%3)*100.0f),Port::OUTPUT, module, i)); } for (int i = 0; i < SIGMA::NUM_INPUTS; i++) { addInput(Port::create(Vec(15.0f+round(i/9)*30.0f, 50.0f+(i%9)*20.0f+round((i%9)/3)*40.0f),Port::INPUT, module, i)); } } }; } // namespace rack_plugin_Bidoo using namespace rack_plugin_Bidoo; RACK_PLUGIN_MODEL_INIT(Bidoo, SIGMA) { Model *modelSIGMA= Model::create("Bidoo", "Σ", "Σ multiprise :)", MULTIPLE_TAG); return modelSIGMA; }