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.

85 lines
2.9KB

  1. #include "Manual.hpp"
  2. void Manual::onReset() {
  3. _trigger.reset();
  4. _pulse.process(10.0);
  5. }
  6. void Manual::step() {
  7. bool high = _trigger.process(params[TRIGGER_PARAM].value) || _trigger.isHigh() || (_firstStep && _triggerOnLoad && _shouldTriggerOnLoad);
  8. if (high) {
  9. _pulse.trigger(0.001);
  10. _pulse.process(engineGetSampleTime());
  11. }
  12. else {
  13. high = _pulse.process(engineGetSampleTime());
  14. }
  15. float out = high ? 5.0 : 0.0;
  16. outputs[OUT1_OUTPUT].value = out;
  17. outputs[OUT2_OUTPUT].value = out;
  18. outputs[OUT3_OUTPUT].value = out;
  19. outputs[OUT4_OUTPUT].value = out;
  20. outputs[OUT5_OUTPUT].value = out;
  21. outputs[OUT6_OUTPUT].value = out;
  22. outputs[OUT7_OUTPUT].value = out;
  23. outputs[OUT8_OUTPUT].value = out;
  24. _firstStep = false;
  25. }
  26. struct ManualWidget : ModuleWidget {
  27. static constexpr int hp = 3;
  28. ManualWidget(Manual* module) : ModuleWidget(module) {
  29. box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT);
  30. {
  31. SVGPanel *panel = new SVGPanel();
  32. panel->box.size = box.size;
  33. panel->setBackground(SVG::load(assetPlugin(plugin, "res/Manual.svg")));
  34. addChild(panel);
  35. }
  36. addChild(Widget::create<ScrewSilver>(Vec(0, 0)));
  37. addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 15, 365)));
  38. // generated by svg_widgets.rb
  39. auto triggerParamPosition = Vec(13.5, 22.0);
  40. auto out1OutputPosition = Vec(10.5, 57.0);
  41. auto out2OutputPosition = Vec(10.5, 87.0);
  42. auto out3OutputPosition = Vec(10.5, 117.0);
  43. auto out4OutputPosition = Vec(10.5, 147.0);
  44. auto out5OutputPosition = Vec(10.5, 177.0);
  45. auto out6OutputPosition = Vec(10.5, 207.0);
  46. auto out7OutputPosition = Vec(10.5, 237.0);
  47. auto out8OutputPosition = Vec(10.5, 267.0);
  48. // end generated by svg_widgets.rb
  49. addParam(ParamWidget::create<Button18>(triggerParamPosition, module, Manual::TRIGGER_PARAM, 0.0, 1.0, 0.0));
  50. addOutput(Port::create<Port24>(out1OutputPosition, Port::OUTPUT, module, Manual::OUT1_OUTPUT));
  51. addOutput(Port::create<Port24>(out2OutputPosition, Port::OUTPUT, module, Manual::OUT2_OUTPUT));
  52. addOutput(Port::create<Port24>(out3OutputPosition, Port::OUTPUT, module, Manual::OUT3_OUTPUT));
  53. addOutput(Port::create<Port24>(out4OutputPosition, Port::OUTPUT, module, Manual::OUT4_OUTPUT));
  54. addOutput(Port::create<Port24>(out5OutputPosition, Port::OUTPUT, module, Manual::OUT5_OUTPUT));
  55. addOutput(Port::create<Port24>(out6OutputPosition, Port::OUTPUT, module, Manual::OUT6_OUTPUT));
  56. addOutput(Port::create<Port24>(out7OutputPosition, Port::OUTPUT, module, Manual::OUT7_OUTPUT));
  57. addOutput(Port::create<Port24>(out8OutputPosition, Port::OUTPUT, module, Manual::OUT8_OUTPUT));
  58. }
  59. void appendContextMenu(Menu* menu) override {
  60. Manual* manual = dynamic_cast<Manual*>(module);
  61. assert(manual);
  62. menu->addChild(new MenuLabel());
  63. menu->addChild(new TriggerOnLoadMenuItem(manual, "Trigger on Load"));
  64. }
  65. };
  66. RACK_PLUGIN_MODEL_INIT(Bogaudio, Manual) {
  67. Model *modelManual = createModel<Manual, ManualWidget>("Bogaudio-Manual", "Manual", "manual gates/triggers");
  68. return modelManual;
  69. }