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.

109 lines
6.3KB

  1. #include "DADSRH.hpp"
  2. struct DADSRHWidget : ModuleWidget {
  3. static constexpr int hp = 10;
  4. DADSRHWidget(DADSRH* 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/DADSRH.svg")));
  10. addChild(panel);
  11. }
  12. addChild(Widget::create<ScrewSilver>(Vec(0, 0)));
  13. addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 15, 0)));
  14. addChild(Widget::create<ScrewSilver>(Vec(0, 365)));
  15. addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 15, 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 triggerInputPosition = Vec(115.0, 40.0);
  32. auto envOutputPosition = Vec(115.0, 191.0);
  33. auto invOutputPosition = Vec(115.0, 228.0);
  34. auto triggerOutputPosition = Vec(115.0, 265.0);
  35. auto delayLightPosition = Vec(12.0, 76.0);
  36. auto attackLightPosition = Vec(12.0, 123.0);
  37. auto decayLightPosition = Vec(12.0, 179.0);
  38. auto sustainLightPosition = Vec(12.0, 235.0);
  39. auto releaseLightPosition = Vec(12.0, 291.0);
  40. auto attackShape1LightPosition = Vec(77.0, 96.0);
  41. auto attackShape2LightPosition = Vec(77.0, 106.0);
  42. auto attackShape3LightPosition = Vec(77.0, 116.0);
  43. auto decayShape1LightPosition = Vec(77.0, 152.5);
  44. auto decayShape2LightPosition = Vec(77.0, 162.5);
  45. auto decayShape3LightPosition = Vec(77.0, 172.5);
  46. auto releaseShape1LightPosition = Vec(77.0, 264.5);
  47. auto releaseShape2LightPosition = Vec(77.0, 274.5);
  48. auto releaseShape3LightPosition = Vec(77.0, 284.5);
  49. // end generated by svg_widgets.rb
  50. addParam(ParamWidget::create<Knob38>(delayParamPosition, module, DADSRH::DELAY_PARAM, 0.0, 1.0, 0.0));
  51. addParam(ParamWidget::create<Knob38>(attackParamPosition, module, DADSRH::ATTACK_PARAM, 0.0, 1.0, 0.12));
  52. addParam(ParamWidget::create<Knob38>(decayParamPosition, module, DADSRH::DECAY_PARAM, 0.0, 1.0, 0.32));
  53. addParam(ParamWidget::create<Knob38>(sustainParamPosition, module, DADSRH::SUSTAIN_PARAM, 0.0, 1.0, 0.5));
  54. addParam(ParamWidget::create<Knob38>(releaseParamPosition, module, DADSRH::RELEASE_PARAM, 0.0, 1.0, 0.32));
  55. addParam(ParamWidget::create<Knob38>(holdParamPosition, module, DADSRH::HOLD_PARAM, 0.0, 1.0, 0.45));
  56. addParam(ParamWidget::create<StatefulButton9>(attackShapeParamPosition, module, DADSRH::ATTACK_SHAPE_PARAM, 1.0, 3.0, 1.0));
  57. addParam(ParamWidget::create<StatefulButton9>(decayShapeParamPosition, module, DADSRH::DECAY_SHAPE_PARAM, 1.0, 3.0, 1.0));
  58. addParam(ParamWidget::create<StatefulButton9>(releaseShapeParamPosition, module, DADSRH::RELEASE_SHAPE_PARAM, 1.0, 3.0, 1.0));
  59. addParam(ParamWidget::create<Button18>(triggerParamPosition, module, DADSRH::TRIGGER_PARAM, 0.0, 1.0, 0.0));
  60. addParam(ParamWidget::create<SliderSwitch2State14>(modeParamPosition, module, DADSRH::MODE_PARAM, 0.0, 1.0, 1.0));
  61. addParam(ParamWidget::create<SliderSwitch2State14>(loopParamPosition, module, DADSRH::LOOP_PARAM, 0.0, 1.0, 1.0));
  62. addParam(ParamWidget::create<SliderSwitch2State14>(speedParamPosition, module, DADSRH::SPEED_PARAM, 0.0, 1.0, 1.0));
  63. addParam(ParamWidget::create<SliderSwitch2State14>(retriggerParamPosition, module, DADSRH::RETRIGGER_PARAM, 0.0, 1.0, 1.0));
  64. addInput(Port::create<Port24>(triggerInputPosition, Port::INPUT, module, DADSRH::TRIGGER_INPUT));
  65. addOutput(Port::create<Port24>(envOutputPosition, Port::OUTPUT, module, DADSRH::ENV_OUTPUT));
  66. addOutput(Port::create<Port24>(invOutputPosition, Port::OUTPUT, module, DADSRH::INV_OUTPUT));
  67. addOutput(Port::create<Port24>(triggerOutputPosition, Port::OUTPUT, module, DADSRH::TRIGGER_OUTPUT));
  68. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(delayLightPosition, module, DADSRH::DELAY_LIGHT));
  69. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(attackLightPosition, module, DADSRH::ATTACK_LIGHT));
  70. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(decayLightPosition, module, DADSRH::DECAY_LIGHT));
  71. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(sustainLightPosition, module, DADSRH::SUSTAIN_LIGHT));
  72. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(releaseLightPosition, module, DADSRH::RELEASE_LIGHT));
  73. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(attackShape1LightPosition, module, DADSRH::ATTACK_SHAPE1_LIGHT));
  74. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(attackShape2LightPosition, module, DADSRH::ATTACK_SHAPE2_LIGHT));
  75. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(attackShape3LightPosition, module, DADSRH::ATTACK_SHAPE3_LIGHT));
  76. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(decayShape1LightPosition, module, DADSRH::DECAY_SHAPE1_LIGHT));
  77. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(decayShape2LightPosition, module, DADSRH::DECAY_SHAPE2_LIGHT));
  78. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(decayShape3LightPosition, module, DADSRH::DECAY_SHAPE3_LIGHT));
  79. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(releaseShape1LightPosition, module, DADSRH::RELEASE_SHAPE1_LIGHT));
  80. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(releaseShape2LightPosition, module, DADSRH::RELEASE_SHAPE2_LIGHT));
  81. addChild(ModuleLightWidget::create<TinyLight<GreenLight>>(releaseShape3LightPosition, module, DADSRH::RELEASE_SHAPE3_LIGHT));
  82. }
  83. void appendContextMenu(Menu* menu) override {
  84. DADSRH* dadsrh = dynamic_cast<DADSRH*>(module);
  85. assert(dadsrh);
  86. menu->addChild(new MenuLabel());
  87. menu->addChild(new TriggerOnLoadMenuItem(dadsrh, "Resume Loop on Load"));
  88. }
  89. };
  90. RACK_PLUGIN_MODEL_INIT(Bogaudio, DADSRH) {
  91. Model *modelDADSRH = createModel<DADSRH, DADSRHWidget>("Bogaudio-DADSRH", "DADSR(H)", "advanced envelope", ENVELOPE_GENERATOR_TAG);
  92. return modelDADSRH;
  93. }