#include "DADSRH.hpp" struct DADSRHWidget : ModuleWidget { static constexpr int hp = 10; DADSRHWidget(DADSRH* 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/DADSRH.svg"))); addChild(panel); } addChild(Widget::create(Vec(0, 0))); addChild(Widget::create(Vec(box.size.x - 15, 0))); addChild(Widget::create(Vec(0, 365))); addChild(Widget::create(Vec(box.size.x - 15, 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 triggerInputPosition = Vec(115.0, 40.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, DADSRH::DELAY_PARAM, 0.0, 1.0, 0.0)); addParam(ParamWidget::create(attackParamPosition, module, DADSRH::ATTACK_PARAM, 0.0, 1.0, 0.12)); addParam(ParamWidget::create(decayParamPosition, module, DADSRH::DECAY_PARAM, 0.0, 1.0, 0.32)); addParam(ParamWidget::create(sustainParamPosition, module, DADSRH::SUSTAIN_PARAM, 0.0, 1.0, 0.5)); addParam(ParamWidget::create(releaseParamPosition, module, DADSRH::RELEASE_PARAM, 0.0, 1.0, 0.32)); addParam(ParamWidget::create(holdParamPosition, module, DADSRH::HOLD_PARAM, 0.0, 1.0, 0.45)); addParam(ParamWidget::create(attackShapeParamPosition, module, DADSRH::ATTACK_SHAPE_PARAM, 1.0, 3.0, 1.0)); addParam(ParamWidget::create(decayShapeParamPosition, module, DADSRH::DECAY_SHAPE_PARAM, 1.0, 3.0, 1.0)); addParam(ParamWidget::create(releaseShapeParamPosition, module, DADSRH::RELEASE_SHAPE_PARAM, 1.0, 3.0, 1.0)); addParam(ParamWidget::create(triggerParamPosition, module, DADSRH::TRIGGER_PARAM, 0.0, 1.0, 0.0)); addParam(ParamWidget::create(modeParamPosition, module, DADSRH::MODE_PARAM, 0.0, 1.0, 1.0)); addParam(ParamWidget::create(loopParamPosition, module, DADSRH::LOOP_PARAM, 0.0, 1.0, 1.0)); addParam(ParamWidget::create(speedParamPosition, module, DADSRH::SPEED_PARAM, 0.0, 1.0, 1.0)); addParam(ParamWidget::create(retriggerParamPosition, module, DADSRH::RETRIGGER_PARAM, 0.0, 1.0, 1.0)); addInput(Port::create(triggerInputPosition, Port::INPUT, module, DADSRH::TRIGGER_INPUT)); addOutput(Port::create(envOutputPosition, Port::OUTPUT, module, DADSRH::ENV_OUTPUT)); addOutput(Port::create(invOutputPosition, Port::OUTPUT, module, DADSRH::INV_OUTPUT)); addOutput(Port::create(triggerOutputPosition, Port::OUTPUT, module, DADSRH::TRIGGER_OUTPUT)); addChild(ModuleLightWidget::create>(delayLightPosition, module, DADSRH::DELAY_LIGHT)); addChild(ModuleLightWidget::create>(attackLightPosition, module, DADSRH::ATTACK_LIGHT)); addChild(ModuleLightWidget::create>(decayLightPosition, module, DADSRH::DECAY_LIGHT)); addChild(ModuleLightWidget::create>(sustainLightPosition, module, DADSRH::SUSTAIN_LIGHT)); addChild(ModuleLightWidget::create>(releaseLightPosition, module, DADSRH::RELEASE_LIGHT)); addChild(ModuleLightWidget::create>(attackShape1LightPosition, module, DADSRH::ATTACK_SHAPE1_LIGHT)); addChild(ModuleLightWidget::create>(attackShape2LightPosition, module, DADSRH::ATTACK_SHAPE2_LIGHT)); addChild(ModuleLightWidget::create>(attackShape3LightPosition, module, DADSRH::ATTACK_SHAPE3_LIGHT)); addChild(ModuleLightWidget::create>(decayShape1LightPosition, module, DADSRH::DECAY_SHAPE1_LIGHT)); addChild(ModuleLightWidget::create>(decayShape2LightPosition, module, DADSRH::DECAY_SHAPE2_LIGHT)); addChild(ModuleLightWidget::create>(decayShape3LightPosition, module, DADSRH::DECAY_SHAPE3_LIGHT)); addChild(ModuleLightWidget::create>(releaseShape1LightPosition, module, DADSRH::RELEASE_SHAPE1_LIGHT)); addChild(ModuleLightWidget::create>(releaseShape2LightPosition, module, DADSRH::RELEASE_SHAPE2_LIGHT)); addChild(ModuleLightWidget::create>(releaseShape3LightPosition, module, DADSRH::RELEASE_SHAPE3_LIGHT)); } void appendContextMenu(Menu* menu) override { DADSRH* dadsrh = dynamic_cast(module); assert(dadsrh); menu->addChild(new MenuLabel()); menu->addChild(new TriggerOnLoadMenuItem(dadsrh, "Resume Loop on Load")); } }; RACK_PLUGIN_MODEL_INIT(Bogaudio, DADSRH) { Model *modelDADSRH = createModel("Bogaudio-DADSRH", "DADSR(H)", "advanced envelope", ENVELOPE_GENERATOR_TAG); return modelDADSRH; }