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.

66 lines
2.4KB

  1. #include "Switch.hpp"
  2. void bogaudio::Switch::onReset() {
  3. _trigger.reset();
  4. }
  5. void bogaudio::Switch::step() {
  6. _trigger.process(params[GATE_PARAM].value + inputs[GATE_INPUT].value);
  7. if (_trigger.isHigh()) {
  8. outputs[OUT1_OUTPUT].value = inputs[HIGH1_INPUT].value;
  9. outputs[OUT2_OUTPUT].value = inputs[HIGH2_INPUT].value;
  10. }
  11. else {
  12. outputs[OUT1_OUTPUT].value = inputs[LOW1_INPUT].value;
  13. outputs[OUT2_OUTPUT].value = inputs[LOW2_INPUT].value;
  14. }
  15. }
  16. struct SwitchWidget : ModuleWidget {
  17. static constexpr int hp = 3;
  18. SwitchWidget(bogaudio::Switch* module) : ModuleWidget(module) {
  19. box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT);
  20. {
  21. SVGPanel *panel = new SVGPanel();
  22. panel->box.size = box.size;
  23. panel->setBackground(SVG::load(assetPlugin(plugin, "res/Switch.svg")));
  24. addChild(panel);
  25. }
  26. addChild(Widget::create<ScrewSilver>(Vec(0, 0)));
  27. addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 15, 365)));
  28. // generated by svg_widgets.rb
  29. auto gateParamPosition = Vec(13.5, 22.0);
  30. auto gateInputPosition = Vec(10.5, 44.0);
  31. auto high1InputPosition = Vec(10.5, 90.0);
  32. auto low1InputPosition = Vec(10.5, 126.0);
  33. auto high2InputPosition = Vec(10.5, 209.0);
  34. auto low2InputPosition = Vec(10.5, 245.0);
  35. auto out1OutputPosition = Vec(10.5, 164.0);
  36. auto out2OutputPosition = Vec(10.5, 283.0);
  37. // end generated by svg_widgets.rb
  38. addParam(ParamWidget::create<Button18>(gateParamPosition, module, bogaudio::Switch::GATE_PARAM, 0.0, 1.0, 0.0));
  39. addInput(Port::create<Port24>(gateInputPosition, Port::INPUT, module, bogaudio::Switch::GATE_INPUT));
  40. addInput(Port::create<Port24>(high1InputPosition, Port::INPUT, module, bogaudio::Switch::HIGH1_INPUT));
  41. addInput(Port::create<Port24>(low1InputPosition, Port::INPUT, module, bogaudio::Switch::LOW1_INPUT));
  42. addInput(Port::create<Port24>(high2InputPosition, Port::INPUT, module, bogaudio::Switch::HIGH2_INPUT));
  43. addInput(Port::create<Port24>(low2InputPosition, Port::INPUT, module, bogaudio::Switch::LOW2_INPUT));
  44. addOutput(Port::create<Port24>(out1OutputPosition, Port::OUTPUT, module, bogaudio::Switch::OUT1_OUTPUT));
  45. addOutput(Port::create<Port24>(out2OutputPosition, Port::OUTPUT, module, bogaudio::Switch::OUT2_OUTPUT));
  46. }
  47. };
  48. RACK_PLUGIN_MODEL_INIT(Bogaudio, Switch) {
  49. Model *modelSwitch = createModel<Switch, SwitchWidget>("Bogaudio-Switch", "Switch", "signal router", SWITCH_TAG);
  50. return modelSwitch;
  51. }