#include "DADSRHPlus.hpp" struct DADSRHPlusWidget : ModuleWidget { static constexpr int hp = 15; DADSRHPlusWidget(DADSRHPlus* module) : ModuleWidget(module) { box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT); { SVGPanel *panel = new SVGPanel(); panel->box.size = box.size; panel->setBackground(SVG::load(assetPlugin(plugin, "res/DADSRHPlus.svg"))); addChild(panel); } 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))); // generated by svg_widgets.rb auto delayParamPosition = Vec(27.08, 33.08); auto attackParamPosition = Vec(27.08, 89.08); auto decayParamPosition = Vec(27.08, 145.08); auto sustainParamPosition = Vec(27.08, 201.08); auto releaseParamPosition = Vec(27.08, 257.08); auto holdParamPosition = Vec(82.38, 313.08); auto attackShapeParamPosition = Vec(77.02, 124.02); auto decayShapeParamPosition = Vec(77.02, 180.52); auto releaseShapeParamPosition = Vec(77.02, 292.52); auto triggerParamPosition = Vec(90.04, 43.04); auto modeParamPosition = Vec(120.0, 95.0); auto loopParamPosition = Vec(120.0, 145.0); auto speedParamPosition = Vec(20.0, 321.0); auto retriggerParamPosition = Vec(55.0, 321.0); auto delayInputPosition = Vec(152.0, 40.0); auto attackInputPosition = Vec(152.0, 96.0); auto decayInputPosition = Vec(152.0, 152.0); auto sustainInputPosition = Vec(152.0, 208.0); auto releaseInputPosition = Vec(152.0, 264.0); auto holdInputPosition = Vec(152.0, 320.0); auto triggerInputPosition = Vec(115.0, 40.0); auto delayOutputPosition = Vec(189.0, 40.0); auto attackOutputPosition = Vec(189.0, 96.0); auto decayOutputPosition = Vec(189.0, 152.0); auto sustainOutputPosition = Vec(189.0, 208.0); auto releaseOutputPosition = Vec(189.0, 264.0); auto envOutputPosition = Vec(115.0, 191.0); auto invOutputPosition = Vec(115.0, 228.0); auto triggerOutputPosition = Vec(115.0, 265.0); auto delayLightPosition = Vec(12.0, 76.0); auto attackLightPosition = Vec(12.0, 123.0); auto decayLightPosition = Vec(12.0, 179.0); auto sustainLightPosition = Vec(12.0, 235.0); auto releaseLightPosition = Vec(12.0, 291.0); auto attackShape1LightPosition = Vec(77.0, 96.0); auto attackShape2LightPosition = Vec(77.0, 106.0); auto attackShape3LightPosition = Vec(77.0, 116.0); auto decayShape1LightPosition = Vec(77.0, 152.5); auto decayShape2LightPosition = Vec(77.0, 162.5); auto decayShape3LightPosition = Vec(77.0, 172.5); auto releaseShape1LightPosition = Vec(77.0, 264.5); auto releaseShape2LightPosition = Vec(77.0, 274.5); auto releaseShape3LightPosition = Vec(77.0, 284.5); // end generated by svg_widgets.rb addParam(ParamWidget::create(delayParamPosition, module, DADSRHPlus::DELAY_PARAM, 0.0, 1.0, 0.0)); addParam(ParamWidget::create(attackParamPosition, module, DADSRHPlus::ATTACK_PARAM, 0.0, 1.0, 0.12)); addParam(ParamWidget::create(decayParamPosition, module, DADSRHPlus::DECAY_PARAM, 0.0, 1.0, 0.32)); addParam(ParamWidget::create(sustainParamPosition, module, DADSRHPlus::SUSTAIN_PARAM, 0.0, 1.0, 0.5)); addParam(ParamWidget::create(releaseParamPosition, module, DADSRHPlus::RELEASE_PARAM, 0.0, 1.0, 0.32)); addParam(ParamWidget::create(holdParamPosition, module, DADSRHPlus::HOLD_PARAM, 0.0, 1.0, 0.45)); addParam(ParamWidget::create(attackShapeParamPosition, module, DADSRHPlus::ATTACK_SHAPE_PARAM, 1.0, 3.0, 1.0)); addParam(ParamWidget::create(decayShapeParamPosition, module, DADSRHPlus::DECAY_SHAPE_PARAM, 1.0, 3.0, 1.0)); addParam(ParamWidget::create(releaseShapeParamPosition, module, DADSRHPlus::RELEASE_SHAPE_PARAM, 1.0, 3.0, 1.0)); addParam(ParamWidget::create(triggerParamPosition, module, DADSRHPlus::TRIGGER_PARAM, 0.0, 1.0, 0.0)); addParam(ParamWidget::create(modeParamPosition, module, DADSRHPlus::MODE_PARAM, 0.0, 1.0, 1.0)); addParam(ParamWidget::create(loopParamPosition, module, DADSRHPlus::LOOP_PARAM, 0.0, 1.0, 1.0)); addParam(ParamWidget::create(speedParamPosition, module, DADSRHPlus::SPEED_PARAM, 0.0, 1.0, 1.0)); addParam(ParamWidget::create(retriggerParamPosition, module, DADSRHPlus::RETRIGGER_PARAM, 0.0, 1.0, 1.0)); addInput(Port::create(delayInputPosition, Port::INPUT, module, DADSRHPlus::DELAY_INPUT)); addInput(Port::create(attackInputPosition, Port::INPUT, module, DADSRHPlus::ATTACK_INPUT)); addInput(Port::create(decayInputPosition, Port::INPUT, module, DADSRHPlus::DECAY_INPUT)); addInput(Port::create(sustainInputPosition, Port::INPUT, module, DADSRHPlus::SUSTAIN_INPUT)); addInput(Port::create(releaseInputPosition, Port::INPUT, module, DADSRHPlus::RELEASE_INPUT)); addInput(Port::create(holdInputPosition, Port::INPUT, module, DADSRHPlus::HOLD_INPUT)); addInput(Port::create(triggerInputPosition, Port::INPUT, module, DADSRHPlus::TRIGGER_INPUT)); addOutput(Port::create(delayOutputPosition, Port::OUTPUT, module, DADSRHPlus::DELAY_OUTPUT)); addOutput(Port::create(attackOutputPosition, Port::OUTPUT, module, DADSRHPlus::ATTACK_OUTPUT)); addOutput(Port::create(decayOutputPosition, Port::OUTPUT, module, DADSRHPlus::DECAY_OUTPUT)); addOutput(Port::create(sustainOutputPosition, Port::OUTPUT, module, DADSRHPlus::SUSTAIN_OUTPUT)); addOutput(Port::create(releaseOutputPosition, Port::OUTPUT, module, DADSRHPlus::RELEASE_OUTPUT)); addOutput(Port::create(envOutputPosition, Port::OUTPUT, module, DADSRHPlus::ENV_OUTPUT)); addOutput(Port::create(invOutputPosition, Port::OUTPUT, module, DADSRHPlus::INV_OUTPUT)); addOutput(Port::create(triggerOutputPosition, Port::OUTPUT, module, DADSRHPlus::TRIGGER_OUTPUT)); addChild(ModuleLightWidget::create>(delayLightPosition, module, DADSRHPlus::DELAY_LIGHT)); addChild(ModuleLightWidget::create>(attackLightPosition, module, DADSRHPlus::ATTACK_LIGHT)); addChild(ModuleLightWidget::create>(decayLightPosition, module, DADSRHPlus::DECAY_LIGHT)); addChild(ModuleLightWidget::create>(sustainLightPosition, module, DADSRHPlus::SUSTAIN_LIGHT)); addChild(ModuleLightWidget::create>(releaseLightPosition, module, DADSRHPlus::RELEASE_LIGHT)); addChild(ModuleLightWidget::create>(attackShape1LightPosition, module, DADSRHPlus::ATTACK_SHAPE1_LIGHT)); addChild(ModuleLightWidget::create>(attackShape2LightPosition, module, DADSRHPlus::ATTACK_SHAPE2_LIGHT)); addChild(ModuleLightWidget::create>(attackShape3LightPosition, module, DADSRHPlus::ATTACK_SHAPE3_LIGHT)); addChild(ModuleLightWidget::create>(decayShape1LightPosition, module, DADSRHPlus::DECAY_SHAPE1_LIGHT)); addChild(ModuleLightWidget::create>(decayShape2LightPosition, module, DADSRHPlus::DECAY_SHAPE2_LIGHT)); addChild(ModuleLightWidget::create>(decayShape3LightPosition, module, DADSRHPlus::DECAY_SHAPE3_LIGHT)); addChild(ModuleLightWidget::create>(releaseShape1LightPosition, module, DADSRHPlus::RELEASE_SHAPE1_LIGHT)); addChild(ModuleLightWidget::create>(releaseShape2LightPosition, module, DADSRHPlus::RELEASE_SHAPE2_LIGHT)); addChild(ModuleLightWidget::create>(releaseShape3LightPosition, module, DADSRHPlus::RELEASE_SHAPE3_LIGHT)); } void appendContextMenu(Menu* menu) override { DADSRHPlus* dadsrhPlus = dynamic_cast(module); assert(dadsrhPlus); menu->addChild(new MenuLabel()); menu->addChild(new TriggerOnLoadMenuItem(dadsrhPlus, "Resume Loop on Load")); } }; RACK_PLUGIN_MODEL_INIT(Bogaudio, DADSRHPlus) { Model *modelDADSRHPlus = createModel("Bogaudio-DADSRHPlus", "DADSR(H)+", "advanced envelope", ENVELOPE_GENERATOR_TAG); return modelDADSRHPlus; }