You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
8.1KB

  1. #include "DADSRHPlus.hpp"
  2. struct DADSRHPlusWidget : ModuleWidget {
  3. static constexpr int hp = 15;
  4. DADSRHPlusWidget(DADSRHPlus* module) : ModuleWidget(module) {
  5. box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT);
  6. {
  7. SVGPanel *panel = new SVGPanel();
  8. panel->box.size = box.size;
  9. panel->setBackground(SVG::load(assetPlugin(plugin, "res/DADSRHPlus.svg")));
  10. addChild(panel);
  11. }
  12. addChild(Widget::create<ScrewSilver>(Vec(15, 0)));
  13. addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 30, 0)));
  14. addChild(Widget::create<ScrewSilver>(Vec(15, 365)));
  15. addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 30, 365)));
  16. // generated by svg_widgets.rb
  17. auto delayParamPosition = Vec(27.08, 33.08);
  18. auto attackParamPosition = Vec(27.08, 89.08);
  19. auto decayParamPosition = Vec(27.08, 145.08);
  20. auto sustainParamPosition = Vec(27.08, 201.08);
  21. auto releaseParamPosition = Vec(27.08, 257.08);
  22. auto holdParamPosition = Vec(82.38, 313.08);
  23. auto attackShapeParamPosition = Vec(77.02, 124.02);
  24. auto decayShapeParamPosition = Vec(77.02, 180.52);
  25. auto releaseShapeParamPosition = Vec(77.02, 292.52);
  26. auto triggerParamPosition = Vec(90.04, 43.04);
  27. auto modeParamPosition = Vec(120.0, 95.0);
  28. auto loopParamPosition = Vec(120.0, 145.0);
  29. auto speedParamPosition = Vec(20.0, 321.0);
  30. auto retriggerParamPosition = Vec(55.0, 321.0);
  31. auto delayInputPosition = Vec(152.0, 40.0);
  32. auto attackInputPosition = Vec(152.0, 96.0);
  33. auto decayInputPosition = Vec(152.0, 152.0);
  34. auto sustainInputPosition = Vec(152.0, 208.0);
  35. auto releaseInputPosition = Vec(152.0, 264.0);
  36. auto holdInputPosition = Vec(152.0, 320.0);
  37. auto triggerInputPosition = Vec(115.0, 40.0);
  38. auto delayOutputPosition = Vec(189.0, 40.0);
  39. auto attackOutputPosition = Vec(189.0, 96.0);
  40. auto decayOutputPosition = Vec(189.0, 152.0);
  41. auto sustainOutputPosition = Vec(189.0, 208.0);
  42. auto releaseOutputPosition = Vec(189.0, 264.0);
  43. auto envOutputPosition = Vec(115.0, 191.0);
  44. auto invOutputPosition = Vec(115.0, 228.0);
  45. auto triggerOutputPosition = Vec(115.0, 265.0);
  46. auto delayLightPosition = Vec(12.0, 76.0);
  47. auto attackLightPosition = Vec(12.0, 123.0);
  48. auto decayLightPosition = Vec(12.0, 179.0);
  49. auto sustainLightPosition = Vec(12.0, 235.0);
  50. auto releaseLightPosition = Vec(12.0, 291.0);
  51. auto attackShape1LightPosition = Vec(77.0, 96.0);
  52. auto attackShape2LightPosition = Vec(77.0, 106.0);
  53. auto attackShape3LightPosition = Vec(77.0, 116.0);
  54. auto decayShape1LightPosition = Vec(77.0, 152.5);
  55. auto decayShape2LightPosition = Vec(77.0, 162.5);
  56. auto decayShape3LightPosition = Vec(77.0, 172.5);
  57. auto releaseShape1LightPosition = Vec(77.0, 264.5);
  58. auto releaseShape2LightPosition = Vec(77.0, 274.5);
  59. auto releaseShape3LightPosition = Vec(77.0, 284.5);
  60. // end generated by svg_widgets.rb
  61. addParam(ParamWidget::create<Knob38>(delayParamPosition, module, DADSRHPlus::DELAY_PARAM, 0.0, 1.0, 0.0));
  62. addParam(ParamWidget::create<Knob38>(attackParamPosition, module, DADSRHPlus::ATTACK_PARAM, 0.0, 1.0, 0.12));
  63. addParam(ParamWidget::create<Knob38>(decayParamPosition, module, DADSRHPlus::DECAY_PARAM, 0.0, 1.0, 0.32));
  64. addParam(ParamWidget::create<Knob38>(sustainParamPosition, module, DADSRHPlus::SUSTAIN_PARAM, 0.0, 1.0, 0.5));
  65. addParam(ParamWidget::create<Knob38>(releaseParamPosition, module, DADSRHPlus::RELEASE_PARAM, 0.0, 1.0, 0.32));
  66. addParam(ParamWidget::create<Knob38>(holdParamPosition, module, DADSRHPlus::HOLD_PARAM, 0.0, 1.0, 0.45));
  67. addParam(ParamWidget::create<StatefulButton9>(attackShapeParamPosition, module, DADSRHPlus::ATTACK_SHAPE_PARAM, 1.0, 3.0, 1.0));
  68. addParam(ParamWidget::create<StatefulButton9>(decayShapeParamPosition, module, DADSRHPlus::DECAY_SHAPE_PARAM, 1.0, 3.0, 1.0));
  69. addParam(ParamWidget::create<StatefulButton9>(releaseShapeParamPosition, module, DADSRHPlus::RELEASE_SHAPE_PARAM, 1.0, 3.0, 1.0));
  70. addParam(ParamWidget::create<Button18>(triggerParamPosition, module, DADSRHPlus::TRIGGER_PARAM, 0.0, 1.0, 0.0));
  71. addParam(ParamWidget::create<SliderSwitch2State14>(modeParamPosition, module, DADSRHPlus::MODE_PARAM, 0.0, 1.0, 1.0));
  72. addParam(ParamWidget::create<SliderSwitch2State14>(loopParamPosition, module, DADSRHPlus::LOOP_PARAM, 0.0, 1.0, 1.0));
  73. addParam(ParamWidget::create<SliderSwitch2State14>(speedParamPosition, module, DADSRHPlus::SPEED_PARAM, 0.0, 1.0, 1.0));
  74. addParam(ParamWidget::create<SliderSwitch2State14>(retriggerParamPosition, module, DADSRHPlus::RETRIGGER_PARAM, 0.0, 1.0, 1.0));
  75. addInput(Port::create<Port24>(delayInputPosition, Port::INPUT, module, DADSRHPlus::DELAY_INPUT));
  76. addInput(Port::create<Port24>(attackInputPosition, Port::INPUT, module, DADSRHPlus::ATTACK_INPUT));
  77. addInput(Port::create<Port24>(decayInputPosition, Port::INPUT, module, DADSRHPlus::DECAY_INPUT));
  78. addInput(Port::create<Port24>(sustainInputPosition, Port::INPUT, module, DADSRHPlus::SUSTAIN_INPUT));
  79. addInput(Port::create<Port24>(releaseInputPosition, Port::INPUT, module, DADSRHPlus::RELEASE_INPUT));
  80. addInput(Port::create<Port24>(holdInputPosition, Port::INPUT, module, DADSRHPlus::HOLD_INPUT));
  81. addInput(Port::create<Port24>(triggerInputPosition, Port::INPUT, module, DADSRHPlus::TRIGGER_INPUT));
  82. addOutput(Port::create<Port24>(delayOutputPosition, Port::OUTPUT, module, DADSRHPlus::DELAY_OUTPUT));
  83. addOutput(Port::create<Port24>(attackOutputPosition, Port::OUTPUT, module, DADSRHPlus::ATTACK_OUTPUT));
  84. addOutput(Port::create<Port24>(decayOutputPosition, Port::OUTPUT, module, DADSRHPlus::DECAY_OUTPUT));
  85. addOutput(Port::create<Port24>(sustainOutputPosition, Port::OUTPUT, module, DADSRHPlus::SUSTAIN_OUTPUT));
  86. addOutput(Port::create<Port24>(releaseOutputPosition, Port::OUTPUT, module, DADSRHPlus::RELEASE_OUTPUT));
  87. addOutput(Port::create<Port24>(envOutputPosition, Port::OUTPUT, module, DADSRHPlus::ENV_OUTPUT));
  88. addOutput(Port::create<Port24>(invOutputPosition, Port::OUTPUT, module, DADSRHPlus::INV_OUTPUT));
  89. addOutput(Port::create<Port24>(triggerOutputPosition, Port::OUTPUT, module, DADSRHPlus::TRIGGER_OUTPUT));
  90. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(delayLightPosition, module, DADSRHPlus::DELAY_LIGHT));
  91. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(attackLightPosition, module, DADSRHPlus::ATTACK_LIGHT));
  92. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(decayLightPosition, module, DADSRHPlus::DECAY_LIGHT));
  93. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(sustainLightPosition, module, DADSRHPlus::SUSTAIN_LIGHT));
  94. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(releaseLightPosition, module, DADSRHPlus::RELEASE_LIGHT));
  95. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(attackShape1LightPosition, module, DADSRHPlus::ATTACK_SHAPE1_LIGHT));
  96. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(attackShape2LightPosition, module, DADSRHPlus::ATTACK_SHAPE2_LIGHT));
  97. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(attackShape3LightPosition, module, DADSRHPlus::ATTACK_SHAPE3_LIGHT));
  98. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(decayShape1LightPosition, module, DADSRHPlus::DECAY_SHAPE1_LIGHT));
  99. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(decayShape2LightPosition, module, DADSRHPlus::DECAY_SHAPE2_LIGHT));
  100. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(decayShape3LightPosition, module, DADSRHPlus::DECAY_SHAPE3_LIGHT));
  101. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(releaseShape1LightPosition, module, DADSRHPlus::RELEASE_SHAPE1_LIGHT));
  102. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(releaseShape2LightPosition, module, DADSRHPlus::RELEASE_SHAPE2_LIGHT));
  103. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(releaseShape3LightPosition, module, DADSRHPlus::RELEASE_SHAPE3_LIGHT));
  104. }
  105. void appendContextMenu(Menu* menu) override {
  106. DADSRHPlus* dadsrhPlus = dynamic_cast<DADSRHPlus*>(module);
  107. assert(dadsrhPlus);
  108. menu->addChild(new MenuLabel());
  109. menu->addChild(new TriggerOnLoadMenuItem(dadsrhPlus, "Resume Loop on Load"));
  110. }
  111. };
  112. RACK_PLUGIN_MODEL_INIT(Bogaudio, DADSRHPlus) {
  113. Model *modelDADSRHPlus = createModel<DADSRHPlus, DADSRHPlusWidget>("Bogaudio-DADSRHPlus", "DADSR(H)+", "advanced envelope", ENVELOPE_GENERATOR_TAG);
  114. return modelDADSRHPlus;
  115. }