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.

79 lines
2.5KB

  1. #include "common.hpp"
  2. #ifdef LPTEST_MODULE
  3. #include "lpTestModule.hpp"
  4. #include <string.h>
  5. namespace rack_plugin_TheXOR {
  6. void LaunchpadTest::step()
  7. {
  8. v_in = inputs[IN_V].value;
  9. lights[LP_CONNECTED].value = params[LaunchpadTest::BTN].value > 0 ? 1.0 : 0.0;
  10. outputs[KNOB_OUT].value = params[KNOB].value;
  11. outputs[BTN_OUT].value = inputs[BTN].value;
  12. outputs[SW_OUT].value = params[SW].value;
  13. drv->ProcessLaunchpad();
  14. }
  15. LaunchpadTestWidget::LaunchpadTestWidget(LaunchpadTest *module) : ModuleWidget(module)
  16. {
  17. box.size = Vec(13 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT);
  18. {
  19. SVGPanel *panel = new SVGPanel();
  20. panel->box.size = box.size;
  21. panel->setBackground(SVG::load(assetPlugin(plugin, "res/modules/test.svg")));
  22. addChild(panel);
  23. }
  24. addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
  25. addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
  26. addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
  27. addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
  28. int y = 40;
  29. SigDisplayWidget *display = new SigDisplayWidget(5, 2);
  30. display->box.pos = Vec(60, y);
  31. display->box.size = Vec(50 + 53, 24);
  32. display->value = &module->v_in;
  33. addChild(display);
  34. addInput(Port::create<PJ301RPort>(Vec(10, y), Port::INPUT, module, LaunchpadTest::IN_V));
  35. y += 60;
  36. ParamWidget *pctrl = ParamWidget::create<PatternBtn>(Vec(10, y), module, LaunchpadTest::BTN, 0.0, 1.0, 0.0);
  37. LaunchpadLed offColor;
  38. LaunchpadLed onColor;
  39. offColor.r_color = 20;
  40. onColor.r_color = 3;
  41. LaunchpadSwitch *sw1 = new LaunchpadSwitch(0, LaunchpadKey::R1C1, offColor, onColor);
  42. module->drv->Add(sw1, pctrl);
  43. addParam(pctrl);
  44. addOutput(Port::create<PJ301GPort>(Vec(150, y), Port::OUTPUT, module, LaunchpadTest::BTN_OUT));
  45. y += 60;
  46. LaunchpadKnob *pknob = new LaunchpadKnob(0, ILaunchpadPro::RC2Key(6, 6), LaunchpadLed::Rgb(20, 10, 10), LaunchpadLed::Rgb(60, 40, 40));
  47. ParamWidget *pEna = ParamWidget::create<Davies1900hBlackKnob>(Vec(10, y), module, LaunchpadTest::KNOB, 0.0, 5.0, 0.25);
  48. module->drv->Add(pknob, pEna);
  49. addParam(pEna);
  50. addOutput(Port::create<PJ301GPort>(Vec(150, y), Port::OUTPUT, module, LaunchpadTest::KNOB_OUT));
  51. y += 60;
  52. pEna = ParamWidget::create<BefacoSwitch>(Vec(10, y), module, LaunchpadTest::SW, 0.0, 2.0, 1.0);
  53. addParam(pEna);
  54. addOutput(Port::create<PJ301GPort>(Vec(150, y), Port::OUTPUT, module, LaunchpadTest::SW_OUT));
  55. #ifdef DEBUG
  56. info("RDY");
  57. #endif
  58. }
  59. } // namespace rack_plugin_TheXOR
  60. #endif