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.

81 lines
2.1KB

  1. #include "dBiz.hpp"
  2. namespace rack_plugin_dBiz {
  3. struct Multiple : Module {
  4. enum ParamIds {
  5. NUM_PARAMS
  6. };
  7. enum InputIds {
  8. A_INPUT,
  9. B_INPUT,
  10. NUM_INPUTS
  11. };
  12. enum OutputIds {
  13. A1_OUTPUT,
  14. A2_OUTPUT,
  15. A3_OUTPUT,
  16. B1_OUTPUT,
  17. B2_OUTPUT,
  18. B3_OUTPUT,
  19. NUM_OUTPUTS
  20. };
  21. Multiple() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) {
  22. }
  23. void step() override;
  24. };
  25. void Multiple::step()
  26. {
  27. float in1 = inputs[A_INPUT].normalize(0.0);
  28. float in2 = inputs[B_INPUT].normalize(0.0);
  29. outputs[A1_OUTPUT].value = in1;
  30. outputs[A2_OUTPUT].value = in1;
  31. outputs[A3_OUTPUT].value = in1;
  32. outputs[B1_OUTPUT].value = in2;
  33. outputs[B2_OUTPUT].value = in2;
  34. outputs[B3_OUTPUT].value = in2;
  35. }
  36. struct MultipleWidget : ModuleWidget
  37. {
  38. MultipleWidget(Multiple *module) : ModuleWidget(module)
  39. {
  40. box.size = Vec(15 * 2, 380);
  41. {
  42. Panel *panel = new LightPanel();
  43. panel->backgroundImage = Image::load("plugins/dBiz/res/Multiple.png");
  44. panel->box.size = box.size;
  45. addChild(panel);
  46. }
  47. addChild(Widget::create<ScrewSilver>(Vec(15, 0)));
  48. addChild(Widget::create<ScrewSilver>(Vec(15, 365)));
  49. addInput (Port::create<PJ301MIPort>(Vec(3, 18), Port::INPUT, module, Multiple::A_INPUT));
  50. addOutput(Port::create<PJ301MOPort>(Vec(3, 58), Port::OUTPUT, module, Multiple::A1_OUTPUT));
  51. addOutput(Port::create<PJ301MOPort>(Vec(3, 98), Port::OUTPUT, module, Multiple::A2_OUTPUT));
  52. addOutput(Port::create<PJ301MOPort>(Vec(3, 138), Port::OUTPUT, module, Multiple::A3_OUTPUT));
  53. addInput (Port::create<PJ301MIPort>(Vec(3, 178), Port::INPUT, module, Multiple::B_INPUT));
  54. addOutput(Port::create<PJ301MOPort>(Vec(3, 218), Port::OUTPUT, module, Multiple::B1_OUTPUT));
  55. addOutput(Port::create<PJ301MOPort>(Vec(3, 258), Port::OUTPUT, module, Multiple::B2_OUTPUT));
  56. addOutput(Port::create<PJ301MOPort>(Vec(3, 298), Port::OUTPUT, module, Multiple::B3_OUTPUT));
  57. }
  58. };
  59. } // namespace rack_plugin_dBiz
  60. using namespace rack_plugin_dBiz;
  61. RACK_PLUGIN_MODEL_INIT(dBiz, Multiple) {
  62. Model *modelMultiple = Model::create<Multiple, MultipleWidget>("dBiz", "Multiple", "Multiple", MULTIPLE_TAG);
  63. return modelMultiple;
  64. }