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.

78 lines
1.6KB

  1. #include "DS.hpp"
  2. namespace rack_plugin_SubmarineFree {
  3. struct NG_112 : DS_Module {
  4. static const int deviceCount = 12;
  5. enum ParamIds {
  6. NUM_PARAMS
  7. };
  8. enum InputIds {
  9. INPUT_1,
  10. INPUT_2,
  11. INPUT_3,
  12. INPUT_4,
  13. INPUT_5,
  14. INPUT_6,
  15. INPUT_7,
  16. INPUT_8,
  17. INPUT_9,
  18. INPUT_10,
  19. INPUT_11,
  20. INPUT_12,
  21. NUM_INPUTS
  22. };
  23. enum OutputIds {
  24. OUTPUT_1,
  25. OUTPUT_2,
  26. OUTPUT_3,
  27. OUTPUT_4,
  28. OUTPUT_5,
  29. OUTPUT_6,
  30. OUTPUT_7,
  31. OUTPUT_8,
  32. OUTPUT_9,
  33. OUTPUT_10,
  34. OUTPUT_11,
  35. OUTPUT_12,
  36. NUM_OUTPUTS
  37. };
  38. enum LightIds {
  39. NUM_LIGHTS
  40. };
  41. NG_112() : DS_Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {}
  42. void step() override;
  43. };
  44. void NG_112::step() {
  45. for (int i = 0; i < deviceCount; i++) {
  46. outputs[OUTPUT_1 + i].value = (inputs[INPUT_1 + i].value < midpoint())?voltage1:voltage0;
  47. }
  48. }
  49. struct NG112 : ModuleWidget {
  50. NG112(NG_112 *module) : ModuleWidget(module) {
  51. setPanel(SVG::load(assetPlugin(plugin, "res/NG-112.svg")));
  52. for (int i = 0; i < NG_112::deviceCount; i++) {
  53. int offset = 29 * i;
  54. addInput(Port::create<sub_port_blue>(Vec(4,19 + offset), Port::INPUT, module, NG_112::INPUT_1 + i));
  55. addOutput(Port::create<sub_port_blue>(Vec(62,19 + offset), Port::OUTPUT, module, NG_112::OUTPUT_1 + i));
  56. }
  57. }
  58. void appendContextMenu(Menu *menu) override {
  59. ((DS_Module *)module)->appendContextMenu(menu);
  60. }
  61. };
  62. } // namespace rack_plugin_SubmarineFree
  63. using namespace rack_plugin_SubmarineFree;
  64. RACK_PLUGIN_MODEL_INIT(SubmarineFree, NG112) {
  65. Model *modelNG112 = Model::create<NG_112, NG112>("SubmarineFree", "NG-112", "NG-112 NOT Gates", LOGIC_TAG, MULTIPLE_TAG);
  66. return modelNG112;
  67. }