diff --git a/src/ABC.cpp b/src/ABC.cpp index 6b14c7d..89e2ff4 100644 --- a/src/ABC.cpp +++ b/src/ABC.cpp @@ -72,35 +72,31 @@ void ABC::step() { } -ABCWidget::ABCWidget() { - ABC *module = new ABC(); - setModule(module); - box.size = Vec(15*6, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/ABC.svg"))); - addChild(panel); +struct ABCWidget : ModuleWidget { + ABCWidget(ABC *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/ABC.svg"))); + + addChild(Widget::create(Vec(15, 0))); + addChild(Widget::create(Vec(15, 365))); + + addParam(ParamWidget::create(Vec(45, 37), module, ABC::B1_LEVEL_PARAM, -1.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(45, 107), module, ABC::C1_LEVEL_PARAM, -1.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(45, 204), module, ABC::B2_LEVEL_PARAM, -1.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(45, 274), module, ABC::C2_LEVEL_PARAM, -1.0, 1.0, 0.0)); + + addInput(Port::create(Vec(7, 28), Port::INPUT, module, ABC::A1_INPUT)); + addInput(Port::create(Vec(7, 70), Port::INPUT, module, ABC::B1_INPUT)); + addInput(Port::create(Vec(7, 112), Port::INPUT, module, ABC::C1_INPUT)); + addOutput(Port::create(Vec(7, 154), Port::OUTPUT, module, ABC::OUT1_OUTPUT)); + addInput(Port::create(Vec(7, 195), Port::INPUT, module, ABC::A2_INPUT)); + addInput(Port::create(Vec(7, 237), Port::INPUT, module, ABC::B2_INPUT)); + addInput(Port::create(Vec(7, 279), Port::INPUT, module, ABC::C2_INPUT)); + addOutput(Port::create(Vec(7, 321), Port::OUTPUT, module, ABC::OUT2_OUTPUT)); + + addChild(ModuleLightWidget::create>(Vec(37, 162), module, ABC::OUT1_POS_LIGHT)); + addChild(ModuleLightWidget::create>(Vec(37, 329), module, ABC::OUT2_POS_LIGHT)); } +}; - addChild(Widget::create(Vec(15, 0))); - addChild(Widget::create(Vec(15, 365))); - - addParam(ParamWidget::create(Vec(45, 37), module, ABC::B1_LEVEL_PARAM, -1.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(45, 107), module, ABC::C1_LEVEL_PARAM, -1.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(45, 204), module, ABC::B2_LEVEL_PARAM, -1.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(45, 274), module, ABC::C2_LEVEL_PARAM, -1.0, 1.0, 0.0)); - - addInput(Port::create(Vec(7, 28), Port::INPUT, module, ABC::A1_INPUT)); - addInput(Port::create(Vec(7, 70), Port::INPUT, module, ABC::B1_INPUT)); - addInput(Port::create(Vec(7, 112), Port::INPUT, module, ABC::C1_INPUT)); - addOutput(Port::create(Vec(7, 154), Port::OUTPUT, module, ABC::OUT1_OUTPUT)); - addInput(Port::create(Vec(7, 195), Port::INPUT, module, ABC::A2_INPUT)); - addInput(Port::create(Vec(7, 237), Port::INPUT, module, ABC::B2_INPUT)); - addInput(Port::create(Vec(7, 279), Port::INPUT, module, ABC::C2_INPUT)); - addOutput(Port::create(Vec(7, 321), Port::OUTPUT, module, ABC::OUT2_OUTPUT)); - - addChild(ModuleLightWidget::create>(Vec(37, 162), module, ABC::OUT1_POS_LIGHT)); - addChild(ModuleLightWidget::create>(Vec(37, 329), module, ABC::OUT2_POS_LIGHT)); -} + +Model *modelABC = Model::create("Befaco", "ABC", "A*B+C", RING_MODULATOR_TAG, ATTENUATOR_TAG, DUAL_TAG); diff --git a/src/Befaco.cpp b/src/Befaco.cpp index fba57b5..33e1fda 100644 --- a/src/Befaco.cpp +++ b/src/Befaco.cpp @@ -8,13 +8,13 @@ void init(rack::Plugin *p) { p->slug = TOSTRING(SLUG); p->version = TOSTRING(VERSION); - p->addModel(createModel("Befaco", "EvenVCO", "EvenVCO", OSCILLATOR_TAG)); - p->addModel(createModel("Befaco", "Rampage", "Rampage", FUNCTION_GENERATOR_TAG, LOGIC_TAG, SLEW_LIMITER_TAG, ENVELOPE_FOLLOWER_TAG, DUAL_TAG)); - p->addModel(createModel("Befaco", "ABC", "A*B+C", RING_MODULATOR_TAG, ATTENUATOR_TAG, DUAL_TAG)); - p->addModel(createModel("Befaco", "SpringReverb", "Spring Reverb", REVERB_TAG, DUAL_TAG)); - p->addModel(createModel("Befaco", "Mixer", "Mixer", MIXER_TAG)); - p->addModel(createModel("Befaco", "SlewLimiter", "Slew Limiter", SLEW_LIMITER_TAG, ENVELOPE_FOLLOWER_TAG)); - p->addModel(createModel("Befaco", "DualAtenuverter", "Dual Atenuverter", ATTENUATOR_TAG, DUAL_TAG)); + p->addModel(modelEvenVCO); + p->addModel(modelRampage); + p->addModel(modelABC); + p->addModel(modelSpringReverb); + p->addModel(modelMixer); + p->addModel(modelSlewLimiter); + p->addModel(modelDualAtenuverter); springReverbInit(); } diff --git a/src/Befaco.hpp b/src/Befaco.hpp index d7478fc..d61604a 100644 --- a/src/Befaco.hpp +++ b/src/Befaco.hpp @@ -6,6 +6,15 @@ using namespace rack; extern Plugin *plugin; +extern Model *modelEvenVCO; +extern Model *modelRampage; +extern Model *modelABC; +extern Model *modelSpringReverb; +extern Model *modelMixer; +extern Model *modelSlewLimiter; +extern Model *modelDualAtenuverter; + + struct Knurlie : SVGScrew { Knurlie() { sw->svg = SVG::load(assetPlugin(plugin, "res/Knurlie.svg")); @@ -15,35 +24,3 @@ struct Knurlie : SVGScrew { }; void springReverbInit(); - -//////////////////// -// module widgets -//////////////////// - -struct EvenVCOWidget : ModuleWidget { - EvenVCOWidget(); -}; - -struct RampageWidget : ModuleWidget { - RampageWidget(); -}; - -struct ABCWidget : ModuleWidget { - ABCWidget(); -}; - -struct SpringReverbWidget : ModuleWidget { - SpringReverbWidget(); -}; - -struct MixerWidget : ModuleWidget { - MixerWidget(); -}; - -struct SlewLimiterWidget : ModuleWidget { - SlewLimiterWidget(); -}; - -struct DualAtenuverterWidget : ModuleWidget { - DualAtenuverterWidget(); -}; diff --git a/src/DualAtenuverter.cpp b/src/DualAtenuverter.cpp index 307e045..4d71684 100644 --- a/src/DualAtenuverter.cpp +++ b/src/DualAtenuverter.cpp @@ -47,32 +47,28 @@ void DualAtenuverter::step() { } -DualAtenuverterWidget::DualAtenuverterWidget() { - DualAtenuverter *module = new DualAtenuverter(); - setModule(module); - box.size = Vec(15*5, 380); +struct DualAtenuverterWidget : ModuleWidget { + DualAtenuverterWidget(DualAtenuverter *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/DualAtenuverter.svg"))); - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/DualAtenuverter.svg"))); - addChild(panel); - } + addChild(Widget::create(Vec(15, 0))); + addChild(Widget::create(Vec(15, 365))); - addChild(Widget::create(Vec(15, 0))); - addChild(Widget::create(Vec(15, 365))); + addParam(ParamWidget::create(Vec(20, 33), module, DualAtenuverter::ATEN1_PARAM, -1.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(20, 91), module, DualAtenuverter::OFFSET1_PARAM, -10.0, 10.0, 0.0)); + addParam(ParamWidget::create(Vec(20, 201), module, DualAtenuverter::ATEN2_PARAM, -1.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(20, 260), module, DualAtenuverter::OFFSET2_PARAM, -10.0, 10.0, 0.0)); - addParam(ParamWidget::create(Vec(20, 33), module, DualAtenuverter::ATEN1_PARAM, -1.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(20, 91), module, DualAtenuverter::OFFSET1_PARAM, -10.0, 10.0, 0.0)); - addParam(ParamWidget::create(Vec(20, 201), module, DualAtenuverter::ATEN2_PARAM, -1.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(20, 260), module, DualAtenuverter::OFFSET2_PARAM, -10.0, 10.0, 0.0)); + addInput(Port::create(Vec(7, 152), Port::INPUT, module, DualAtenuverter::IN1_INPUT)); + addOutput(Port::create(Vec(43, 152), Port::OUTPUT, module, DualAtenuverter::OUT1_OUTPUT)); - addInput(Port::create(Vec(7, 152), Port::INPUT, module, DualAtenuverter::IN1_INPUT)); - addOutput(Port::create(Vec(43, 152), Port::OUTPUT, module, DualAtenuverter::OUT1_OUTPUT)); + addInput(Port::create(Vec(7, 319), Port::INPUT, module, DualAtenuverter::IN2_INPUT)); + addOutput(Port::create(Vec(43, 319), Port::OUTPUT, module, DualAtenuverter::OUT2_OUTPUT)); - addInput(Port::create(Vec(7, 319), Port::INPUT, module, DualAtenuverter::IN2_INPUT)); - addOutput(Port::create(Vec(43, 319), Port::OUTPUT, module, DualAtenuverter::OUT2_OUTPUT)); + addChild(ModuleLightWidget::create>(Vec(33, 143), module, DualAtenuverter::OUT1_POS_LIGHT)); + addChild(ModuleLightWidget::create>(Vec(33, 311), module, DualAtenuverter::OUT2_POS_LIGHT)); + } +}; - addChild(ModuleLightWidget::create>(Vec(33, 143), module, DualAtenuverter::OUT1_POS_LIGHT)); - addChild(ModuleLightWidget::create>(Vec(33, 311), module, DualAtenuverter::OUT2_POS_LIGHT)); -} + +Model *modelDualAtenuverter = Model::create("Befaco", "DualAtenuverter", "Dual Atenuverter", ATTENUATOR_TAG, DUAL_TAG); diff --git a/src/EvenVCO.cpp b/src/EvenVCO.cpp index 5e7b29a..de79380 100644 --- a/src/EvenVCO.cpp +++ b/src/EvenVCO.cpp @@ -131,37 +131,33 @@ void EvenVCO::step() { } -EvenVCOWidget::EvenVCOWidget() { - EvenVCO *module = new EvenVCO(); - setModule(module); - box.size = Vec(15*8, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/EvenVCO.svg"))); - addChild(panel); +struct EvenVCOWidget : ModuleWidget { + EvenVCOWidget(EvenVCO *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/EvenVCO.svg"))); + + addChild(Widget::create(Vec(15, 0))); + addChild(Widget::create(Vec(15, 365))); + addChild(Widget::create(Vec(15*6, 0))); + addChild(Widget::create(Vec(15*6, 365))); + + addParam(ParamWidget::create(Vec(22, 32), module, EvenVCO::OCTAVE_PARAM, -5.0, 4.0, 0.0)); + addParam(ParamWidget::create(Vec(73, 131), module, EvenVCO::TUNE_PARAM, -7.0, 7.0, 0.0)); + addParam(ParamWidget::create(Vec(16, 230), module, EvenVCO::PWM_PARAM, -1.0, 1.0, 0.0)); + + addInput(Port::create(Vec(8, 120), Port::INPUT, module, EvenVCO::PITCH1_INPUT)); + addInput(Port::create(Vec(19, 157), Port::INPUT, module, EvenVCO::PITCH2_INPUT)); + addInput(Port::create(Vec(48, 183), Port::INPUT, module, EvenVCO::FM_INPUT)); + addInput(Port::create(Vec(86, 189), Port::INPUT, module, EvenVCO::SYNC_INPUT)); + + addInput(Port::create(Vec(72, 236), Port::INPUT, module, EvenVCO::PWM_INPUT)); + + addOutput(Port::create(Vec(10, 283), Port::OUTPUT, module, EvenVCO::TRI_OUTPUT)); + addOutput(Port::create(Vec(87, 283), Port::OUTPUT, module, EvenVCO::SINE_OUTPUT)); + addOutput(Port::create(Vec(48, 306), Port::OUTPUT, module, EvenVCO::EVEN_OUTPUT)); + addOutput(Port::create(Vec(10, 327), Port::OUTPUT, module, EvenVCO::SAW_OUTPUT)); + addOutput(Port::create(Vec(87, 327), Port::OUTPUT, module, EvenVCO::SQUARE_OUTPUT)); } +}; - addChild(Widget::create(Vec(15, 0))); - addChild(Widget::create(Vec(15, 365))); - addChild(Widget::create(Vec(15*6, 0))); - addChild(Widget::create(Vec(15*6, 365))); - - addParam(ParamWidget::create(Vec(22, 32), module, EvenVCO::OCTAVE_PARAM, -5.0, 4.0, 0.0)); - addParam(ParamWidget::create(Vec(73, 131), module, EvenVCO::TUNE_PARAM, -7.0, 7.0, 0.0)); - addParam(ParamWidget::create(Vec(16, 230), module, EvenVCO::PWM_PARAM, -1.0, 1.0, 0.0)); - - addInput(Port::create(Vec(8, 120), Port::INPUT, module, EvenVCO::PITCH1_INPUT)); - addInput(Port::create(Vec(19, 157), Port::INPUT, module, EvenVCO::PITCH2_INPUT)); - addInput(Port::create(Vec(48, 183), Port::INPUT, module, EvenVCO::FM_INPUT)); - addInput(Port::create(Vec(86, 189), Port::INPUT, module, EvenVCO::SYNC_INPUT)); - - addInput(Port::create(Vec(72, 236), Port::INPUT, module, EvenVCO::PWM_INPUT)); - addOutput(Port::create(Vec(10, 283), Port::OUTPUT, module, EvenVCO::TRI_OUTPUT)); - addOutput(Port::create(Vec(87, 283), Port::OUTPUT, module, EvenVCO::SINE_OUTPUT)); - addOutput(Port::create(Vec(48, 306), Port::OUTPUT, module, EvenVCO::EVEN_OUTPUT)); - addOutput(Port::create(Vec(10, 327), Port::OUTPUT, module, EvenVCO::SAW_OUTPUT)); - addOutput(Port::create(Vec(87, 327), Port::OUTPUT, module, EvenVCO::SQUARE_OUTPUT)); -} +Model *modelEvenVCO = Model::create("Befaco", "EvenVCO", "EvenVCO", OSCILLATOR_TAG); diff --git a/src/Mixer.cpp b/src/Mixer.cpp index a9c30cb..6fcbd86 100644 --- a/src/Mixer.cpp +++ b/src/Mixer.cpp @@ -46,34 +46,30 @@ void Mixer::step() { } -MixerWidget::MixerWidget() { - Mixer *module = new Mixer(); - setModule(module); - box.size = Vec(15*5, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/Mixer.svg"))); - addChild(panel); - } +struct MixerWidget : ModuleWidget { + MixerWidget(Mixer *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/Mixer.svg"))); - addChild(Widget::create(Vec(15, 0))); - addChild(Widget::create(Vec(15, 365))); + addChild(Widget::create(Vec(15, 0))); + addChild(Widget::create(Vec(15, 365))); - addParam(ParamWidget::create(Vec(19, 32), module, Mixer::CH1_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(19, 85), module, Mixer::CH2_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(19, 137), module, Mixer::CH3_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(19, 190), module, Mixer::CH4_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(19, 32), module, Mixer::CH1_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(19, 85), module, Mixer::CH2_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(19, 137), module, Mixer::CH3_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(19, 190), module, Mixer::CH4_PARAM, 0.0, 1.0, 0.0)); - addInput(Port::create(Vec(7, 242), Port::INPUT, module, Mixer::IN1_INPUT)); - addInput(Port::create(Vec(43, 242), Port::INPUT, module, Mixer::IN2_INPUT)); + addInput(Port::create(Vec(7, 242), Port::INPUT, module, Mixer::IN1_INPUT)); + addInput(Port::create(Vec(43, 242), Port::INPUT, module, Mixer::IN2_INPUT)); - addInput(Port::create(Vec(7, 281), Port::INPUT, module, Mixer::IN3_INPUT)); - addInput(Port::create(Vec(43, 281), Port::INPUT, module, Mixer::IN4_INPUT)); + addInput(Port::create(Vec(7, 281), Port::INPUT, module, Mixer::IN3_INPUT)); + addInput(Port::create(Vec(43, 281), Port::INPUT, module, Mixer::IN4_INPUT)); - addOutput(Port::create(Vec(7, 324), Port::OUTPUT, module, Mixer::OUT1_OUTPUT)); - addOutput(Port::create(Vec(43, 324), Port::OUTPUT, module, Mixer::OUT2_OUTPUT)); + addOutput(Port::create(Vec(7, 324), Port::OUTPUT, module, Mixer::OUT1_OUTPUT)); + addOutput(Port::create(Vec(43, 324), Port::OUTPUT, module, Mixer::OUT2_OUTPUT)); - addChild(ModuleLightWidget::create>(Vec(32.7, 310), module, Mixer::OUT_POS_LIGHT)); -} + addChild(ModuleLightWidget::create>(Vec(32.7, 310), module, Mixer::OUT_POS_LIGHT)); + } +}; + + +Model *modelMixer = Model::create("Befaco", "Mixer", "Mixer", MIXER_TAG); diff --git a/src/Rampage.cpp b/src/Rampage.cpp index 47ef4ea..2f1d116 100644 --- a/src/Rampage.cpp +++ b/src/Rampage.cpp @@ -168,69 +168,65 @@ void Rampage::step() { } -RampageWidget::RampageWidget() { - Rampage *module = new Rampage(); - setModule(module); - box.size = Vec(15*18, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/Rampage.svg"))); - addChild(panel); +struct RampageWidget : ModuleWidget { + RampageWidget(Rampage *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/Rampage.svg"))); + + addChild(Widget::create(Vec(15, 0))); + addChild(Widget::create(Vec(box.size.x-30, 0))); + addChild(Widget::create(Vec(15, 365))); + addChild(Widget::create(Vec(box.size.x-30, 365))); + + addInput(Port::create(Vec(14, 30), Port::INPUT, module, Rampage::IN_A_INPUT)); + addInput(Port::create(Vec(52, 37), Port::INPUT, module, Rampage::TRIGG_A_INPUT)); + addInput(Port::create(Vec(8, 268), Port::INPUT, module, Rampage::RISE_CV_A_INPUT)); + addInput(Port::create(Vec(67, 268), Port::INPUT, module, Rampage::FALL_CV_A_INPUT)); + addInput(Port::create(Vec(38, 297), Port::INPUT, module, Rampage::EXP_CV_A_INPUT)); + addInput(Port::create(Vec(102, 290), Port::INPUT, module, Rampage::CYCLE_A_INPUT)); + addInput(Port::create(Vec(229, 30), Port::INPUT, module, Rampage::IN_B_INPUT)); + addInput(Port::create(Vec(192, 37), Port::INPUT, module, Rampage::TRIGG_B_INPUT)); + addInput(Port::create(Vec(176, 268), Port::INPUT, module, Rampage::RISE_CV_B_INPUT)); + addInput(Port::create(Vec(237, 268), Port::INPUT, module, Rampage::FALL_CV_B_INPUT)); + addInput(Port::create(Vec(207, 297), Port::INPUT, module, Rampage::EXP_CV_B_INPUT)); + addInput(Port::create(Vec(143, 290), Port::INPUT, module, Rampage::CYCLE_B_INPUT)); + + addParam(ParamWidget::create(Vec(94, 32), module, Rampage::RANGE_A_PARAM, 0.0, 2.0, 0.0)); + addParam(ParamWidget::create(Vec(27, 90), module, Rampage::SHAPE_A_PARAM, -1.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(72, 82), module, Rampage::TRIGG_A_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(16, 135), module, Rampage::RISE_A_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(57, 135), module, Rampage::FALL_A_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(101, 238), module, Rampage::CYCLE_A_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(147, 32), module, Rampage::RANGE_B_PARAM, 0.0, 2.0, 0.0)); + addParam(ParamWidget::create(Vec(217, 90), module, Rampage::SHAPE_B_PARAM, -1.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(170, 82), module, Rampage::TRIGG_B_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(197, 135), module, Rampage::RISE_B_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(238, 135), module, Rampage::FALL_B_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(141, 238), module, Rampage::CYCLE_B_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(117, 76), module, Rampage::BALANCE_PARAM, 0.0, 1.0, 0.5)); + + addOutput(Port::create(Vec(8, 326), Port::OUTPUT, module, Rampage::RISING_A_OUTPUT)); + addOutput(Port::create(Vec(68, 326), Port::OUTPUT, module, Rampage::FALLING_A_OUTPUT)); + addOutput(Port::create(Vec(104, 326), Port::OUTPUT, module, Rampage::EOC_A_OUTPUT)); + addOutput(Port::create(Vec(102, 195), Port::OUTPUT, module, Rampage::OUT_A_OUTPUT)); + addOutput(Port::create(Vec(177, 326), Port::OUTPUT, module, Rampage::RISING_B_OUTPUT)); + addOutput(Port::create(Vec(237, 326), Port::OUTPUT, module, Rampage::FALLING_B_OUTPUT)); + addOutput(Port::create(Vec(140, 326), Port::OUTPUT, module, Rampage::EOC_B_OUTPUT)); + addOutput(Port::create(Vec(142, 195), Port::OUTPUT, module, Rampage::OUT_B_OUTPUT)); + addOutput(Port::create(Vec(122, 133), Port::OUTPUT, module, Rampage::COMPARATOR_OUTPUT)); + addOutput(Port::create(Vec(89, 157), Port::OUTPUT, module, Rampage::MIN_OUTPUT)); + addOutput(Port::create(Vec(155, 157), Port::OUTPUT, module, Rampage::MAX_OUTPUT)); + + addChild(ModuleLightWidget::create>(Vec(132, 167), module, Rampage::COMPARATOR_LIGHT)); + addChild(ModuleLightWidget::create>(Vec(123, 174), module, Rampage::MIN_LIGHT)); + addChild(ModuleLightWidget::create>(Vec(141, 174), module, Rampage::MAX_LIGHT)); + addChild(ModuleLightWidget::create>(Vec(126, 185), module, Rampage::OUT_A_LIGHT)); + addChild(ModuleLightWidget::create>(Vec(138, 185), module, Rampage::OUT_B_LIGHT)); + addChild(ModuleLightWidget::create>(Vec(18, 312), module, Rampage::RISING_A_LIGHT)); + addChild(ModuleLightWidget::create>(Vec(78, 312), module, Rampage::FALLING_A_LIGHT)); + addChild(ModuleLightWidget::create>(Vec(187, 312), module, Rampage::RISING_B_LIGHT)); + addChild(ModuleLightWidget::create>(Vec(247, 312), module, Rampage::FALLING_B_LIGHT)); } +}; - addChild(Widget::create(Vec(15, 0))); - addChild(Widget::create(Vec(box.size.x-30, 0))); - addChild(Widget::create(Vec(15, 365))); - addChild(Widget::create(Vec(box.size.x-30, 365))); - - addInput(Port::create(Vec(14, 30), Port::INPUT, module, Rampage::IN_A_INPUT)); - addInput(Port::create(Vec(52, 37), Port::INPUT, module, Rampage::TRIGG_A_INPUT)); - addInput(Port::create(Vec(8, 268), Port::INPUT, module, Rampage::RISE_CV_A_INPUT)); - addInput(Port::create(Vec(67, 268), Port::INPUT, module, Rampage::FALL_CV_A_INPUT)); - addInput(Port::create(Vec(38, 297), Port::INPUT, module, Rampage::EXP_CV_A_INPUT)); - addInput(Port::create(Vec(102, 290), Port::INPUT, module, Rampage::CYCLE_A_INPUT)); - addInput(Port::create(Vec(229, 30), Port::INPUT, module, Rampage::IN_B_INPUT)); - addInput(Port::create(Vec(192, 37), Port::INPUT, module, Rampage::TRIGG_B_INPUT)); - addInput(Port::create(Vec(176, 268), Port::INPUT, module, Rampage::RISE_CV_B_INPUT)); - addInput(Port::create(Vec(237, 268), Port::INPUT, module, Rampage::FALL_CV_B_INPUT)); - addInput(Port::create(Vec(207, 297), Port::INPUT, module, Rampage::EXP_CV_B_INPUT)); - addInput(Port::create(Vec(143, 290), Port::INPUT, module, Rampage::CYCLE_B_INPUT)); - - addParam(ParamWidget::create(Vec(94, 32), module, Rampage::RANGE_A_PARAM, 0.0, 2.0, 0.0)); - addParam(ParamWidget::create(Vec(27, 90), module, Rampage::SHAPE_A_PARAM, -1.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(72, 82), module, Rampage::TRIGG_A_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(16, 135), module, Rampage::RISE_A_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(57, 135), module, Rampage::FALL_A_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(101, 238), module, Rampage::CYCLE_A_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(147, 32), module, Rampage::RANGE_B_PARAM, 0.0, 2.0, 0.0)); - addParam(ParamWidget::create(Vec(217, 90), module, Rampage::SHAPE_B_PARAM, -1.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(170, 82), module, Rampage::TRIGG_B_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(197, 135), module, Rampage::RISE_B_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(238, 135), module, Rampage::FALL_B_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(141, 238), module, Rampage::CYCLE_B_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(117, 76), module, Rampage::BALANCE_PARAM, 0.0, 1.0, 0.5)); - - addOutput(Port::create(Vec(8, 326), Port::OUTPUT, module, Rampage::RISING_A_OUTPUT)); - addOutput(Port::create(Vec(68, 326), Port::OUTPUT, module, Rampage::FALLING_A_OUTPUT)); - addOutput(Port::create(Vec(104, 326), Port::OUTPUT, module, Rampage::EOC_A_OUTPUT)); - addOutput(Port::create(Vec(102, 195), Port::OUTPUT, module, Rampage::OUT_A_OUTPUT)); - addOutput(Port::create(Vec(177, 326), Port::OUTPUT, module, Rampage::RISING_B_OUTPUT)); - addOutput(Port::create(Vec(237, 326), Port::OUTPUT, module, Rampage::FALLING_B_OUTPUT)); - addOutput(Port::create(Vec(140, 326), Port::OUTPUT, module, Rampage::EOC_B_OUTPUT)); - addOutput(Port::create(Vec(142, 195), Port::OUTPUT, module, Rampage::OUT_B_OUTPUT)); - addOutput(Port::create(Vec(122, 133), Port::OUTPUT, module, Rampage::COMPARATOR_OUTPUT)); - addOutput(Port::create(Vec(89, 157), Port::OUTPUT, module, Rampage::MIN_OUTPUT)); - addOutput(Port::create(Vec(155, 157), Port::OUTPUT, module, Rampage::MAX_OUTPUT)); - - addChild(ModuleLightWidget::create>(Vec(132, 167), module, Rampage::COMPARATOR_LIGHT)); - addChild(ModuleLightWidget::create>(Vec(123, 174), module, Rampage::MIN_LIGHT)); - addChild(ModuleLightWidget::create>(Vec(141, 174), module, Rampage::MAX_LIGHT)); - addChild(ModuleLightWidget::create>(Vec(126, 185), module, Rampage::OUT_A_LIGHT)); - addChild(ModuleLightWidget::create>(Vec(138, 185), module, Rampage::OUT_B_LIGHT)); - addChild(ModuleLightWidget::create>(Vec(18, 312), module, Rampage::RISING_A_LIGHT)); - addChild(ModuleLightWidget::create>(Vec(78, 312), module, Rampage::FALLING_A_LIGHT)); - addChild(ModuleLightWidget::create>(Vec(187, 312), module, Rampage::RISING_B_LIGHT)); - addChild(ModuleLightWidget::create>(Vec(247, 312), module, Rampage::FALLING_B_LIGHT)); -} + +Model *modelRampage = Model::create("Befaco", "Rampage", "Rampage", FUNCTION_GENERATOR_TAG, LOGIC_TAG, SLEW_LIMITER_TAG, ENVELOPE_FOLLOWER_TAG, DUAL_TAG); diff --git a/src/SlewLimiter.cpp b/src/SlewLimiter.cpp index 3a19dd0..eb5267c 100644 --- a/src/SlewLimiter.cpp +++ b/src/SlewLimiter.cpp @@ -57,29 +57,25 @@ void ::SlewLimiter::step() { } -SlewLimiterWidget::SlewLimiterWidget() { - ::SlewLimiter *module = new ::SlewLimiter(); - setModule(module); - box.size = Vec(15*6, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/SlewLimiter.svg"))); - addChild(panel); - } +struct SlewLimiterWidget : ModuleWidget { + SlewLimiterWidget(SlewLimiter *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/SlewLimiter.svg"))); - addChild(Widget::create(Vec(15, 0))); - addChild(Widget::create(Vec(15, 365))); + addChild(Widget::create(Vec(15, 0))); + addChild(Widget::create(Vec(15, 365))); - addParam(ParamWidget::create(Vec(27, 39), module, ::SlewLimiter::SHAPE_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(27, 39), module, ::SlewLimiter::SHAPE_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(15, 102), module, ::SlewLimiter::RISE_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(60, 102), module, ::SlewLimiter::FALL_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(15, 102), module, ::SlewLimiter::RISE_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(60, 102), module, ::SlewLimiter::FALL_PARAM, 0.0, 1.0, 0.0)); - addInput(Port::create(Vec(10, 273), Port::INPUT, module, ::SlewLimiter::RISE_INPUT)); - addInput(Port::create(Vec(55, 273), Port::INPUT, module, ::SlewLimiter::FALL_INPUT)); + addInput(Port::create(Vec(10, 273), Port::INPUT, module, ::SlewLimiter::RISE_INPUT)); + addInput(Port::create(Vec(55, 273), Port::INPUT, module, ::SlewLimiter::FALL_INPUT)); - addInput(Port::create(Vec(10, 323), Port::INPUT, module, ::SlewLimiter::IN_INPUT)); - addOutput(Port::create(Vec(55, 323), Port::OUTPUT, module, ::SlewLimiter::OUT_OUTPUT)); -} + addInput(Port::create(Vec(10, 323), Port::INPUT, module, ::SlewLimiter::IN_INPUT)); + addOutput(Port::create(Vec(55, 323), Port::OUTPUT, module, ::SlewLimiter::OUT_OUTPUT)); + } +}; + + +Model *modelSlewLimiter = Model::create("Befaco", "SlewLimiter", "Slew Limiter", SLEW_LIMITER_TAG, ENVELOPE_FOLLOWER_TAG); diff --git a/src/SpringReverb.cpp b/src/SpringReverb.cpp index 1c260f6..c3d66a9 100644 --- a/src/SpringReverb.cpp +++ b/src/SpringReverb.cpp @@ -263,45 +263,41 @@ void SpringReverb::step() { } -SpringReverbWidget::SpringReverbWidget() { - SpringReverb *module = new SpringReverb(); - setModule(module); - box.size = Vec(15*8, 380); - - { - SVGPanel *panel = new SVGPanel(); - panel->box.size = box.size; - panel->setBackground(SVG::load(assetPlugin(plugin, "res/SpringReverb.svg"))); - addChild(panel); +struct SpringReverbWidget : ModuleWidget { + SpringReverbWidget(SpringReverb *module) : ModuleWidget(module) { + setPanel(SVG::load(assetPlugin(plugin, "res/SpringReverb.svg"))); + + addChild(Widget::create(Vec(15, 0))); + addChild(Widget::create(Vec(15, 365))); + addChild(Widget::create(Vec(15*6, 0))); + addChild(Widget::create(Vec(15*6, 365))); + + addParam(ParamWidget::create(Vec(22, 29), module, SpringReverb::WET_PARAM, 0.0, 1.0, 0.5)); + + addParam(ParamWidget::create(Vec(12, 116), module, SpringReverb::LEVEL1_PARAM, 0.0, 1.0, 0.0)); + addParam(ParamWidget::create(Vec(93, 116), module, SpringReverb::LEVEL2_PARAM, 0.0, 1.0, 0.0)); + + addParam(ParamWidget::create(Vec(42, 210), module, SpringReverb::HPF_PARAM, 0.0, 1.0, 0.5)); + + addInput(Port::create(Vec(7, 243), Port::INPUT, module, SpringReverb::CV1_INPUT)); + addInput(Port::create(Vec(88, 243), Port::INPUT, module, SpringReverb::CV2_INPUT)); + addInput(Port::create(Vec(27, 281), Port::INPUT, module, SpringReverb::IN1_INPUT)); + addInput(Port::create(Vec(67, 281), Port::INPUT, module, SpringReverb::IN2_INPUT)); + + addOutput(Port::create(Vec(7, 317), Port::OUTPUT, module, SpringReverb::MIX_OUTPUT)); + addInput(Port::create(Vec(47, 324), Port::INPUT, module, SpringReverb::MIX_CV_INPUT)); + addOutput(Port::create(Vec(88, 317), Port::OUTPUT, module, SpringReverb::WET_OUTPUT)); + + addChild(ModuleLightWidget::create>(Vec(55, 269), module, SpringReverb::PEAK_LIGHT)); + addChild(ModuleLightWidget::create>(Vec(55, 113), module, SpringReverb::VU1_LIGHT + 0)); + addChild(ModuleLightWidget::create>(Vec(55, 126), module, SpringReverb::VU1_LIGHT + 1)); + addChild(ModuleLightWidget::create>(Vec(55, 138), module, SpringReverb::VU1_LIGHT + 2)); + addChild(ModuleLightWidget::create>(Vec(55, 150), module, SpringReverb::VU1_LIGHT + 3)); + addChild(ModuleLightWidget::create>(Vec(55, 163), module, SpringReverb::VU1_LIGHT + 4)); + addChild(ModuleLightWidget::create>(Vec(55, 175), module, SpringReverb::VU1_LIGHT + 5)); + addChild(ModuleLightWidget::create>(Vec(55, 188), module, SpringReverb::VU1_LIGHT + 6)); } +}; - addChild(Widget::create(Vec(15, 0))); - addChild(Widget::create(Vec(15, 365))); - addChild(Widget::create(Vec(15*6, 0))); - addChild(Widget::create(Vec(15*6, 365))); - - addParam(ParamWidget::create(Vec(22, 29), module, SpringReverb::WET_PARAM, 0.0, 1.0, 0.5)); - - addParam(ParamWidget::create(Vec(12, 116), module, SpringReverb::LEVEL1_PARAM, 0.0, 1.0, 0.0)); - addParam(ParamWidget::create(Vec(93, 116), module, SpringReverb::LEVEL2_PARAM, 0.0, 1.0, 0.0)); - - addParam(ParamWidget::create(Vec(42, 210), module, SpringReverb::HPF_PARAM, 0.0, 1.0, 0.5)); - - addInput(Port::create(Vec(7, 243), Port::INPUT, module, SpringReverb::CV1_INPUT)); - addInput(Port::create(Vec(88, 243), Port::INPUT, module, SpringReverb::CV2_INPUT)); - addInput(Port::create(Vec(27, 281), Port::INPUT, module, SpringReverb::IN1_INPUT)); - addInput(Port::create(Vec(67, 281), Port::INPUT, module, SpringReverb::IN2_INPUT)); - - addOutput(Port::create(Vec(7, 317), Port::OUTPUT, module, SpringReverb::MIX_OUTPUT)); - addInput(Port::create(Vec(47, 324), Port::INPUT, module, SpringReverb::MIX_CV_INPUT)); - addOutput(Port::create(Vec(88, 317), Port::OUTPUT, module, SpringReverb::WET_OUTPUT)); - addChild(ModuleLightWidget::create>(Vec(55, 269), module, SpringReverb::PEAK_LIGHT)); - addChild(ModuleLightWidget::create>(Vec(55, 113), module, SpringReverb::VU1_LIGHT + 0)); - addChild(ModuleLightWidget::create>(Vec(55, 126), module, SpringReverb::VU1_LIGHT + 1)); - addChild(ModuleLightWidget::create>(Vec(55, 138), module, SpringReverb::VU1_LIGHT + 2)); - addChild(ModuleLightWidget::create>(Vec(55, 150), module, SpringReverb::VU1_LIGHT + 3)); - addChild(ModuleLightWidget::create>(Vec(55, 163), module, SpringReverb::VU1_LIGHT + 4)); - addChild(ModuleLightWidget::create>(Vec(55, 175), module, SpringReverb::VU1_LIGHT + 5)); - addChild(ModuleLightWidget::create>(Vec(55, 188), module, SpringReverb::VU1_LIGHT + 6)); -} +Model *modelSpringReverb = Model::create("Befaco", "SpringReverb", "Spring Reverb", REVERB_TAG, DUAL_TAG);