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.

87 lines
2.7KB

  1. #include "mental.hpp"
  2. namespace rack_plugin_mental {
  3. struct MentalMults : Module {
  4. enum ParamIds {
  5. NUM_PARAMS
  6. };
  7. enum InputIds {
  8. INPUT_1,
  9. INPUT_2,
  10. NUM_INPUTS
  11. };
  12. enum OutputIds {
  13. OUTPUT_1,
  14. OUTPUT_2,
  15. OUTPUT_3,
  16. OUTPUT_4,
  17. OUTPUT_5,
  18. OUTPUT_2_1,
  19. OUTPUT_2_2,
  20. OUTPUT_2_3,
  21. OUTPUT_2_4,
  22. OUTPUT_2_5,
  23. NUM_OUTPUTS
  24. };
  25. MentalMults() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) {}
  26. void step() override;
  27. };
  28. void MentalMults::step() {
  29. float signal_in_1 = inputs[INPUT_1].value;
  30. outputs[OUTPUT_1].value = signal_in_1;
  31. outputs[OUTPUT_2].value = signal_in_1;
  32. outputs[OUTPUT_3].value = signal_in_1;
  33. outputs[OUTPUT_4].value = signal_in_1;
  34. outputs[OUTPUT_5].value = signal_in_1;
  35. float signal_in_2 = inputs[INPUT_2].value;
  36. outputs[OUTPUT_2_1].value = signal_in_2;
  37. outputs[OUTPUT_2_2].value = signal_in_2;
  38. outputs[OUTPUT_2_3].value = signal_in_2;
  39. outputs[OUTPUT_2_4].value = signal_in_2;
  40. outputs[OUTPUT_2_5].value = signal_in_2;
  41. }
  42. /////////////////////////////////////////////////////////////////////////////////////////
  43. struct MentalMultsWidget : ModuleWidget {
  44. MentalMultsWidget(MentalMults *module);
  45. };
  46. MentalMultsWidget::MentalMultsWidget(MentalMults *module) : ModuleWidget(module)
  47. {
  48. setPanel(SVG::load(assetPlugin(plugin, "res/MentalMults.svg")));
  49. addInput(Port::create<InPort>(Vec(3, 22), Port::INPUT, module, MentalMults::INPUT_1));
  50. addInput(Port::create<InPort>(Vec(3, 190), Port::INPUT, module, MentalMults::INPUT_2));
  51. addOutput(Port::create<OutPort>(Vec(3, 58), Port::OUTPUT, module, MentalMults::OUTPUT_1));
  52. addOutput(Port::create<OutPort>(Vec(3, 83), Port::OUTPUT, module, MentalMults::OUTPUT_2));
  53. addOutput(Port::create<OutPort>(Vec(3, 108), Port::OUTPUT, module, MentalMults::OUTPUT_3));
  54. addOutput(Port::create<OutPort>(Vec(3, 133), Port::OUTPUT, module, MentalMults::OUTPUT_4));
  55. addOutput(Port::create<OutPort>(Vec(3, 158), Port::OUTPUT, module, MentalMults::OUTPUT_5));
  56. addOutput(Port::create<OutPort>(Vec(3, 230), Port::OUTPUT, module, MentalMults::OUTPUT_2_1));
  57. addOutput(Port::create<OutPort>(Vec(3, 255), Port::OUTPUT, module, MentalMults::OUTPUT_2_2));
  58. addOutput(Port::create<OutPort>(Vec(3, 280), Port::OUTPUT, module, MentalMults::OUTPUT_2_3));
  59. addOutput(Port::create<OutPort>(Vec(3, 305), Port::OUTPUT, module, MentalMults::OUTPUT_2_4));
  60. addOutput(Port::create<OutPort>(Vec(3, 330), Port::OUTPUT, module, MentalMults::OUTPUT_2_5));
  61. }
  62. } // namespace rack_plugin_mental
  63. using namespace rack_plugin_mental;
  64. RACK_PLUGIN_MODEL_INIT(mental, MentalMults) {
  65. Model *modelMentalMults = Model::create<MentalMults, MentalMultsWidget>("mental", "MentalMults", "Mults", DUAL_TAG, MULTIPLE_TAG);
  66. return modelMentalMults;
  67. }