BogaudioModules

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

commit 282d4ab3d9c2acf1c35c5801a93efcc4e151d1b8
parent 435c050fa2dd93b95521ddef56ef8a17a9f8d622
Author: Matt Demanett <matt@demanett.net>
Date:   Wed, 25 Apr 2018 19:49:53 -0400

Multiple module: gotta have one.

Diffstat:
Ares-src/Mult-src.svg | 105+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares/Mult.svg | 0
Asrc/Mult.cpp | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/Mult.hpp | 40++++++++++++++++++++++++++++++++++++++++
Msrc/bogaudio.cpp | 4++++
5 files changed, 205 insertions(+), 0 deletions(-)

diff --git a/res-src/Mult-src.svg b/res-src/Mult-src.svg @@ -0,0 +1,105 @@ +<svg + version="1.1" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="45" + height="380" + viewBox="0 0 45 380" +> + <style> + text { + fill: #333; + font-family: 'Roboto', sans-serif; + font-weight: bold; + } + text.title { + font-family: 'Comfortaa', sans-serif; + font-weight: normal; + } + text.brand { + font-family: 'Audiowide', sans-serif; + font-weight: bold; + } + </style> + + <defs> + <symbol id="input" viewBox="0 0 24px 24px"> + <g transform="translate(12 12)"> + <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0" /> + <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none" /> + </g> + </symbol> + + <symbol id="output" viewBox="0 0 24px 24px"> + <g transform="translate(12 12)"> + <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#f00" fill="#f00" /> + <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#f00" fill="none" /> + </g> + </symbol> + </defs> + + <rect width="100%" height="100%" fill="#ddd" /> + <polyline points="1,1 44,1 44,379 1,379 1,1" stroke="#e4e4e4" stroke-width="0.5" fill="none" /> + <polyline points="0.5,0.5 44.5,0.5 44.5,379.5 0.5,379.5 0.5,0.5" stroke="#ebebeb" stroke-width="0.8" fill="none" /> + <polyline points="0,0 45,0 45,380 0,380 0,0" stroke="#f2f2f2" stroke-width="1" fill="none" /> + + <g transform="rotate(-90) translate(-376 13)"> + <text class="title" font-size="7pt" letter-spacing="2.5px">MULT</text> + <g transform="translate(0 12)"> + <text class="brand" font-size="7pt" letter-spacing="2px">BGA</text> + <rect width="3.0" height="3" fill="#ddd" transform="translate(11.5 -5)" /> + </g> + </g> + + <g transform="translate(0 18)"> + <g transform="translate(0 0)"> + <g transform="translate(5.5 0)"> + <rect width="34" height="10" fill="#fafafa" transform="translate(0 29)" /> + <rect width="34" height="35" rx="5" fill="#fafafa" /> + <use id="INA_INPUT" xlink:href="#input" transform="translate(5 3)" /> + <text font-size="5pt" letter-spacing="2px" transform="translate(7 35)">IN-A</text> + </g> + </g> + + <g transform="translate(0 42)"> + <g transform="translate(5.5 0)"> + <rect width="34" height="10" fill="#bbb" transform="translate(0 -3)" /> + <rect width="34" height="102" rx="5" fill="#bbb" /> + + <g transform="translate(2 2)"> + <use id="OUTA1_OUTPUT" xlink:href="#output" transform="translate(3 0)" /> + <use id="OUTA2_OUTPUT" xlink:href="#output" transform="translate(3 30)" /> + <use id="OUTA3_OUTPUT" xlink:href="#output" transform="translate(3 60)" /> + + <text font-size="5pt" letter-spacing="2px" transform="translate(6.5 95)">OUT</text> + </g> + </g> + </g> + </g> + + <g transform="translate(0 178)"> + <g transform="translate(0 0)"> + <g transform="translate(5.5 0)"> + <rect width="34" height="10" fill="#fafafa" transform="translate(0 29)" /> + <rect width="34" height="35" rx="5" fill="#fafafa" /> + <use id="INB_INPUT" xlink:href="#input" transform="translate(5 3)" /> + <text font-size="5pt" letter-spacing="1px" transform="translate(3 35)">IN-B(A)</text> + </g> + </g> + + <g transform="translate(0 42)"> + <g transform="translate(5.5 0)"> + <rect width="34" height="10" fill="#bbb" transform="translate(0 -3)" /> + <rect width="34" height="102" rx="5" fill="#bbb" /> + + <g transform="translate(2 2)"> + <use id="OUTB1_OUTPUT" xlink:href="#output" transform="translate(3 0)" /> + <use id="OUTB2_OUTPUT" xlink:href="#output" transform="translate(3 30)" /> + <use id="OUTB3_OUTPUT" xlink:href="#output" transform="translate(3 60)" /> + + <text font-size="5pt" letter-spacing="2px" transform="translate(6.5 95)">OUT</text> + </g> + </g> + </g> + </g> +</svg> diff --git a/res/Mult.svg b/res/Mult.svg Binary files differ. diff --git a/src/Mult.cpp b/src/Mult.cpp @@ -0,0 +1,56 @@ + +#include "Mult.hpp" + +void Mult::step() { + float out = inputs[INA_INPUT].value; + outputs[OUTA1_OUTPUT].value = out; + outputs[OUTA2_OUTPUT].value = out; + outputs[OUTA3_OUTPUT].value = out; + + if (inputs[INB_INPUT].active) { + out = inputs[INB_INPUT].value; + } + outputs[OUTB1_OUTPUT].value = out; + outputs[OUTB2_OUTPUT].value = out; + outputs[OUTB3_OUTPUT].value = out; +} + +struct MultWidget : ModuleWidget { + MultWidget(Mult* module) : ModuleWidget(module) { + box.size = Vec(RACK_GRID_WIDTH * 3, RACK_GRID_HEIGHT); + + { + SVGPanel *panel = new SVGPanel(); + panel->box.size = box.size; + panel->setBackground(SVG::load(assetPlugin(plugin, "res/Mult.svg"))); + addChild(panel); + } + + addChild(Widget::create<ScrewSilver>(Vec(0, 0))); + addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 15, 365))); + + // generated by svg_widgets.rb + auto inaInputPosition = Vec(10.5, 21.0); + auto inbInputPosition = Vec(10.5, 181.0); + + auto outa1OutputPosition = Vec(10.5, 62.0); + auto outa2OutputPosition = Vec(10.5, 92.0); + auto outa3OutputPosition = Vec(10.5, 122.0); + auto outb1OutputPosition = Vec(10.5, 222.0); + auto outb2OutputPosition = Vec(10.5, 252.0); + auto outb3OutputPosition = Vec(10.5, 282.0); + // end generated by svg_widgets.rb + + addInput(Port::create<Port24>(inaInputPosition, Port::INPUT, module, Mult::INA_INPUT)); + addInput(Port::create<Port24>(inbInputPosition, Port::INPUT, module, Mult::INB_INPUT)); + + addOutput(Port::create<Port24>(outa1OutputPosition, Port::OUTPUT, module, Mult::OUTA1_OUTPUT)); + addOutput(Port::create<Port24>(outa2OutputPosition, Port::OUTPUT, module, Mult::OUTA2_OUTPUT)); + addOutput(Port::create<Port24>(outa3OutputPosition, Port::OUTPUT, module, Mult::OUTA3_OUTPUT)); + addOutput(Port::create<Port24>(outb1OutputPosition, Port::OUTPUT, module, Mult::OUTB1_OUTPUT)); + addOutput(Port::create<Port24>(outb2OutputPosition, Port::OUTPUT, module, Mult::OUTB2_OUTPUT)); + addOutput(Port::create<Port24>(outb3OutputPosition, Port::OUTPUT, module, Mult::OUTB3_OUTPUT)); + } +}; + +Model* modelMult = Model::create<Mult, MultWidget>("Bogaudio", "Bogaudio-Mult", "MULT", MULTIPLE_TAG); diff --git a/src/Mult.hpp b/src/Mult.hpp @@ -0,0 +1,40 @@ +#pragma once + +#include "bogaudio.hpp" + +extern Model* modelMult; + +namespace bogaudio { + +struct Mult : Module { + enum ParamsIds { + NUM_PARAMS + }; + + enum InputsIds { + INA_INPUT, + INB_INPUT, + NUM_INPUTS + }; + + enum OutputsIds { + OUTA1_OUTPUT, + OUTA2_OUTPUT, + OUTA3_OUTPUT, + OUTB1_OUTPUT, + OUTB2_OUTPUT, + OUTB3_OUTPUT, + NUM_OUTPUTS + }; + + enum LightsIds { + NUM_LIGHTS + }; + + Mult() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) { + } + + virtual void step() override; +}; + +} // namespace bogaudio diff --git a/src/bogaudio.cpp b/src/bogaudio.cpp @@ -19,6 +19,7 @@ #include "Detune.hpp" #include "DGate.hpp" #include "Manual.hpp" +#include "Mult.hpp" #include "Noise.hpp" #include "Offset.hpp" #include "Reftone.hpp" @@ -62,6 +63,9 @@ void init(rack::Plugin *p) { p->addModel(modelDetune); p->addModel(modelDGate); p->addModel(modelManual); +#ifdef EXPERIMENTAL + p->addModel(modelMult); +#endif p->addModel(modelNoise); p->addModel(modelOffset); p->addModel(modelReftone);