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.

117 lines
5.2KB

  1. #include "plugin.hpp"
  2. struct Streams : Module {
  3. enum ParamIds {
  4. BUTTON_1_PARAM,
  5. BUTTON_2_PARAM,
  6. SHAPE_1_PARAM,
  7. SHAPE_2_PARAM,
  8. MOD_1_PARAM,
  9. MOD_2_PARAM,
  10. METER_PARAM,
  11. KNOB_1_PARAM,
  12. LEVEL_MOD_1_PARAM,
  13. LEVEL_MOD_2_PARAM,
  14. KNOB_2_PARAM,
  15. NUM_PARAMS
  16. };
  17. enum InputIds {
  18. EXCITE_1_INPUT,
  19. IN_1_INPUT,
  20. IN_2_INPUT,
  21. EXCITE_2_INPUT,
  22. LEVEL_1_INPUT,
  23. LEVEL_2_INPUT,
  24. NUM_INPUTS
  25. };
  26. enum OutputIds {
  27. OUT_1_OUTPUT,
  28. OUT_2_OUTPUT,
  29. NUM_OUTPUTS
  30. };
  31. enum LightIds {
  32. METER_1_LIGHT,
  33. CIRCLE2329_LIGHT,
  34. CIRCLE2323_LIGHT,
  35. CIRCLE2331_LIGHT,
  36. CIRCLE2325_LIGHT,
  37. CIRCLE2333_LIGHT,
  38. CIRCLE2327_LIGHT,
  39. CIRCLE2335_LIGHT,
  40. NUM_LIGHTS
  41. };
  42. Streams() {
  43. config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
  44. configParam(BUTTON_1_PARAM, 0.f, 1.f, 0.f, "");
  45. configParam(BUTTON_2_PARAM, 0.f, 1.f, 0.f, "");
  46. configParam(SHAPE_1_PARAM, 0.f, 1.f, 0.5f, "");
  47. configParam(SHAPE_2_PARAM, 0.f, 1.f, 0.5f, "");
  48. configParam(MOD_1_PARAM, 0.f, 1.f, 0.5f, "");
  49. configParam(MOD_2_PARAM, 0.f, 1.f, 0.5f, "");
  50. configParam(METER_PARAM, 0.f, 1.f, 0.f, "");
  51. configParam(KNOB_1_PARAM, 0.f, 1.f, 0.5f, "");
  52. configParam(LEVEL_MOD_1_PARAM, 0.f, 1.f, 0.5f, "");
  53. configParam(LEVEL_MOD_2_PARAM, 0.f, 1.f, 0.5f, "");
  54. configParam(KNOB_2_PARAM, 0.f, 1.f, 0.5f, "");
  55. }
  56. void process(const ProcessArgs& args) override {
  57. lights[METER_1_LIGHT].setBrightness(1);
  58. lights[CIRCLE2329_LIGHT].setBrightness(1);
  59. lights[CIRCLE2323_LIGHT].setBrightness(1);
  60. lights[CIRCLE2331_LIGHT].setBrightness(1);
  61. lights[CIRCLE2325_LIGHT].setBrightness(1);
  62. lights[CIRCLE2333_LIGHT].setBrightness(1);
  63. lights[CIRCLE2327_LIGHT].setBrightness(1);
  64. lights[CIRCLE2335_LIGHT].setBrightness(1);
  65. }
  66. };
  67. struct StreamsWidget : ModuleWidget {
  68. StreamsWidget(Streams* module) {
  69. setModule(module);
  70. setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/Streams.svg")));
  71. addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
  72. addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
  73. addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
  74. addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
  75. addParam(createParamCentered<TL1105>(mm2px(Vec(24.715, 15.025)), module, Streams::BUTTON_1_PARAM));
  76. addParam(createParamCentered<TL1105>(mm2px(Vec(36.135, 15.025)), module, Streams::BUTTON_2_PARAM));
  77. addParam(createParamCentered<Rogan1PSWhite>(mm2px(Vec(11.065, 21.055)), module, Streams::SHAPE_1_PARAM));
  78. addParam(createParamCentered<Rogan1PSWhite>(mm2px(Vec(49.785, 21.055)), module, Streams::SHAPE_2_PARAM));
  79. addParam(createParamCentered<Rogan1PSWhite>(mm2px(Vec(11.065, 44.555)), module, Streams::MOD_1_PARAM));
  80. addParam(createParamCentered<Rogan1PSWhite>(mm2px(Vec(49.785, 44.555)), module, Streams::MOD_2_PARAM));
  81. addParam(createParamCentered<TL1105>(mm2px(Vec(30.425, 46.775)), module, Streams::METER_PARAM));
  82. addParam(createParamCentered<Trimpot>(mm2px(Vec(30.425, 60.745)), module, Streams::KNOB_1_PARAM));
  83. addParam(createParamCentered<Rogan1PSRed>(mm2px(Vec(11.065, 68.045)), module, Streams::LEVEL_MOD_1_PARAM));
  84. addParam(createParamCentered<Rogan1PSGreen>(mm2px(Vec(49.785, 68.045)), module, Streams::LEVEL_MOD_2_PARAM));
  85. addParam(createParamCentered<Trimpot>(mm2px(Vec(30.425, 75.345)), module, Streams::KNOB_2_PARAM));
  86. addInput(createInputCentered<PJ301MPort>(mm2px(Vec(8.506, 96.615)), module, Streams::EXCITE_1_INPUT));
  87. addInput(createInputCentered<PJ301MPort>(mm2px(Vec(23.116, 96.615)), module, Streams::IN_1_INPUT));
  88. addInput(createInputCentered<PJ301MPort>(mm2px(Vec(37.726, 96.615)), module, Streams::IN_2_INPUT));
  89. addInput(createInputCentered<PJ301MPort>(mm2px(Vec(52.335, 96.615)), module, Streams::EXCITE_2_INPUT));
  90. addInput(createInputCentered<PJ301MPort>(mm2px(Vec(8.506, 111.225)), module, Streams::LEVEL_1_INPUT));
  91. addInput(createInputCentered<PJ301MPort>(mm2px(Vec(52.335, 111.225)), module, Streams::LEVEL_2_INPUT));
  92. addOutput(createOutputCentered<PJ301MPort>(mm2px(Vec(23.116, 111.225)), module, Streams::OUT_1_OUTPUT));
  93. addOutput(createOutputCentered<PJ301MPort>(mm2px(Vec(37.726, 111.225)), module, Streams::OUT_2_OUTPUT));
  94. addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(24.715, 22.005)), module, Streams::METER_1_LIGHT));
  95. addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(36.135, 22.005)), module, Streams::CIRCLE2329_LIGHT));
  96. addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(24.715, 27.725)), module, Streams::CIRCLE2323_LIGHT));
  97. addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(36.135, 27.725)), module, Streams::CIRCLE2331_LIGHT));
  98. addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(24.715, 33.445)), module, Streams::CIRCLE2325_LIGHT));
  99. addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(36.135, 33.445)), module, Streams::CIRCLE2333_LIGHT));
  100. addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(24.715, 39.166)), module, Streams::CIRCLE2327_LIGHT));
  101. addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(36.135, 39.166)), module, Streams::CIRCLE2335_LIGHT));
  102. }
  103. };
  104. Model* modelStreams = createModel<Streams, StreamsWidget>("Streams");