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.

176 lines
4.4KB

  1. //**************************************************************************************
  2. //2x8 Multimple Module for VCV Rack by Autodafe http://www.autodafe.net
  3. //
  4. //**************************************************************************************
  5. #include "Autodafe.hpp"
  6. namespace rack_plugin_Autodafe {
  7. struct Multiple28 : Module {
  8. enum ParamIds {
  9. NUM_PARAMS
  10. };
  11. enum InputIds {
  12. INPUT1,
  13. INPUT2,
  14. NUM_INPUTS
  15. };
  16. enum OutputIds {
  17. OUT11,
  18. OUT12,
  19. OUT13,
  20. OUT14,
  21. OUT15,
  22. OUT16,
  23. OUT17,
  24. OUT18,
  25. OUT21,
  26. OUT22,
  27. OUT23,
  28. OUT24,
  29. OUT25,
  30. OUT26,
  31. OUT27,
  32. OUT28,
  33. NUM_OUTPUTS
  34. };
  35. Multiple28();
  36. void step();
  37. };
  38. Multiple28::Multiple28() {
  39. params.resize(NUM_PARAMS);
  40. inputs.resize(NUM_INPUTS);
  41. outputs.resize(NUM_OUTPUTS);
  42. }
  43. void Multiple28::step() {
  44. float IN1 = inputs[INPUT1].value;
  45. float IN2 = inputs[INPUT2].value;
  46. // Set outputs
  47. //first column
  48. if (outputs[OUT11].active) {
  49. outputs[OUT11].value = IN1;
  50. }
  51. if (outputs[OUT12].active) {
  52. outputs[OUT12].value = IN1;
  53. }
  54. if (outputs[OUT13].active) {
  55. outputs[OUT13].value = IN1;
  56. }
  57. if (outputs[OUT14].active) {
  58. outputs[OUT14].value = IN1;
  59. }
  60. if (outputs[OUT15].active) {
  61. outputs[OUT15].value = IN1;
  62. }
  63. if (outputs[OUT16].active) {
  64. outputs[OUT16].value = IN1;
  65. }
  66. if (outputs[OUT17].active) {
  67. outputs[OUT17].value = IN1;
  68. }
  69. if (outputs[OUT18].active) {
  70. outputs[OUT18].value = IN1;
  71. }
  72. //SECOND COLUMN
  73. if (outputs[OUT21].active) {
  74. outputs[OUT21].value = IN2;
  75. }
  76. if (outputs[OUT22].active) {
  77. outputs[OUT22].value = IN2;
  78. }
  79. if (outputs[OUT23].active) {
  80. outputs[OUT23].value = IN2;
  81. }
  82. if (outputs[OUT24].active) {
  83. outputs[OUT24].value = IN2;
  84. }
  85. if (outputs[OUT25].active) {
  86. outputs[OUT25].value = IN2;
  87. }
  88. if (outputs[OUT26].active) {
  89. outputs[OUT26].value = IN2;
  90. }
  91. if (outputs[OUT27].active) {
  92. outputs[OUT27].value = IN2;
  93. }
  94. if (outputs[OUT28].active) {
  95. outputs[OUT28].value = IN2;
  96. }
  97. }
  98. struct Multiple28Widget : ModuleWidget {
  99. Multiple28Widget(Multiple28 *module);
  100. };
  101. Multiple28Widget::Multiple28Widget(Multiple28 *module) : ModuleWidget(module) {
  102. box.size = Vec(15*6, 380);
  103. {
  104. SVGPanel *panel = new SVGPanel();
  105. panel->box.size = box.size;
  106. panel->setBackground(SVG::load(assetPlugin(plugin, "res/Multiple28.svg")));
  107. addChild(panel);
  108. }
  109. addChild(createScrew<ScrewSilver>(Vec(5, 0)));
  110. addChild(createScrew<ScrewSilver>(Vec(5, 365)));
  111. addChild(createScrew<ScrewSilver>(Vec(70, 0)));
  112. addChild(createScrew<ScrewSilver>(Vec(70, 365)));
  113. addInput(createInput<PJ3410Port>(Vec(10, 20), module, Multiple28::INPUT1));
  114. addInput(createInput<PJ3410Port>(Vec(50, 20), module, Multiple28::INPUT2));
  115. addOutput(createOutput<PJ3410Port>(Vec(10, 60), module, Multiple28::OUT11));
  116. addOutput(createOutput<PJ3410Port>(Vec(10, 95), module, Multiple28::OUT12));
  117. addOutput(createOutput<PJ3410Port>(Vec(10, 130), module, Multiple28::OUT13));
  118. addOutput(createOutput<PJ3410Port>(Vec(10, 165), module, Multiple28::OUT14));
  119. addOutput(createOutput<PJ3410Port>(Vec(10, 200), module, Multiple28::OUT15));
  120. addOutput(createOutput<PJ3410Port>(Vec(10, 235), module, Multiple28::OUT16));
  121. addOutput(createOutput<PJ3410Port>(Vec(10, 270), module, Multiple28::OUT17));
  122. addOutput(createOutput<PJ3410Port>(Vec(10, 305), module, Multiple28::OUT18));
  123. addOutput(createOutput<PJ3410Port>(Vec(50, 60), module, Multiple28::OUT21));
  124. addOutput(createOutput<PJ3410Port>(Vec(50, 95), module, Multiple28::OUT22));
  125. addOutput(createOutput<PJ3410Port>(Vec(50, 130), module, Multiple28::OUT23));
  126. addOutput(createOutput<PJ3410Port>(Vec(50, 165), module, Multiple28::OUT24));
  127. addOutput(createOutput<PJ3410Port>(Vec(50, 200), module, Multiple28::OUT25));
  128. addOutput(createOutput<PJ3410Port>(Vec(50, 235), module, Multiple28::OUT26));
  129. addOutput(createOutput<PJ3410Port>(Vec(50, 270), module, Multiple28::OUT27));
  130. addOutput(createOutput<PJ3410Port>(Vec(50, 305), module, Multiple28::OUT28));
  131. }
  132. } // namespace rack_plugin_Autodafe
  133. using namespace rack_plugin_Autodafe;
  134. RACK_PLUGIN_MODEL_INIT(Autodafe, Multiple28) {
  135. return Model::create<Multiple28, Multiple28Widget>("Autodafe", "Multiple 2x8", "Multiple 2x8", UTILITY_TAG);
  136. }