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.

97 lines
3.1KB

  1. //**************************************************************************************
  2. //Multiple 2x5 module for VCV Rack by Alfredo Santamaria - AS - https://github.com/AScustomWorks/AS
  3. //
  4. //**************************************************************************************
  5. #include "AS.hpp"
  6. struct Merge2_5 : Module {
  7. enum ParamIds {
  8. NUM_PARAMS
  9. };
  10. enum InputIds {
  11. INPUT11,
  12. INPUT12,
  13. INPUT13,
  14. INPUT14,
  15. INPUT15,
  16. INPUT21,
  17. INPUT22,
  18. INPUT23,
  19. INPUT24,
  20. INPUT25,
  21. NUM_INPUTS
  22. };
  23. enum OutputIds {
  24. OUTPUT1,
  25. OUTPUT2,
  26. NUM_OUTPUTS
  27. };
  28. Merge2_5() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) {}
  29. void step() override;
  30. };
  31. void Merge2_5::step() {
  32. float IN11 = inputs[INPUT11].value;
  33. float IN12 = inputs[INPUT12].value;
  34. float IN13 = inputs[INPUT13].value;
  35. float IN14 = inputs[INPUT14].value;
  36. float IN15 = inputs[INPUT15].value;
  37. float IN21 = inputs[INPUT21].value;
  38. float IN22 = inputs[INPUT22].value;
  39. float IN23 = inputs[INPUT23].value;
  40. float IN24 = inputs[INPUT24].value;
  41. float IN25 = inputs[INPUT25].value;
  42. // Set outputs
  43. outputs[OUTPUT1].value = IN11 + IN12 + IN13 + IN14 + IN15;
  44. outputs[OUTPUT2].value = IN21 + IN22 + IN23 + IN24 + IN25;
  45. }
  46. struct Merge2_5Widget : ModuleWidget
  47. {
  48. Merge2_5Widget(Merge2_5 *module);
  49. };
  50. Merge2_5Widget::Merge2_5Widget(Merge2_5 *module) : ModuleWidget(module) {
  51. setPanel(SVG::load(assetPlugin(plugin, "res/Merge2_5.svg")));
  52. //SCREWS
  53. addChild(Widget::create<as_HexScrew>(Vec(RACK_GRID_WIDTH, 0)));
  54. addChild(Widget::create<as_HexScrew>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
  55. addChild(Widget::create<as_HexScrew>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
  56. addChild(Widget::create<as_HexScrew>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
  57. //INPUTS
  58. addInput(Port::create<as_PJ301MPort>(Vec(8, 75), Port::INPUT, module, Merge2_5::INPUT11));
  59. addInput(Port::create<as_PJ301MPort>(Vec(43, 75), Port::INPUT, module, Merge2_5::INPUT21));
  60. addInput(Port::create<as_PJ301MPort>(Vec(8, 120), Port::INPUT, module, Merge2_5::INPUT12));
  61. addInput(Port::create<as_PJ301MPort>(Vec(43, 120), Port::INPUT, module, Merge2_5::INPUT22));
  62. addInput(Port::create<as_PJ301MPort>(Vec(8, 165), Port::INPUT, module, Merge2_5::INPUT13));
  63. addInput(Port::create<as_PJ301MPort>(Vec(43, 165), Port::INPUT, module, Merge2_5::INPUT23));
  64. addInput(Port::create<as_PJ301MPort>(Vec(8, 210), Port::INPUT, module, Merge2_5::INPUT14));
  65. addInput(Port::create<as_PJ301MPort>(Vec(43, 210), Port::INPUT, module, Merge2_5::INPUT24));
  66. addInput(Port::create<as_PJ301MPort>(Vec(8, 255), Port::INPUT, module, Merge2_5::INPUT15));
  67. addInput(Port::create<as_PJ301MPort>(Vec(43, 255), Port::INPUT, module, Merge2_5::INPUT25));
  68. //OUTPUTS
  69. addOutput(Port::create<as_PJ301MPort>(Vec(8, 310), Port::OUTPUT, module, Merge2_5::OUTPUT1));
  70. addOutput(Port::create<as_PJ301MPort>(Vec(43, 310), Port::OUTPUT, module, Merge2_5::OUTPUT2));
  71. }
  72. RACK_PLUGIN_MODEL_INIT(AS, Merge2_5) {
  73. Model *modelMerge2_5 = Model::create<Merge2_5, Merge2_5Widget>("AS", "Merge2_5", "Merge 2 x 5", MULTIPLE_TAG, UTILITY_TAG);
  74. return modelMerge2_5;
  75. }