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.

94 lines
1.7KB

  1. #pragma once
  2. namespace rack_plugin_TheXOR {
  3. struct Spiralone : Module
  4. {
  5. enum ParamIds
  6. {
  7. M_RESET,
  8. VOLTAGE_1,
  9. MODE_1 = VOLTAGE_1 + TOTAL_STEPS,
  10. LENGHT_1 = MODE_1 + NUM_SEQUENCERS,
  11. STRIDE_1 = LENGHT_1 + NUM_SEQUENCERS,
  12. XPOSE_1 = STRIDE_1 + NUM_SEQUENCERS,
  13. NUM_PARAMS = XPOSE_1 + NUM_SEQUENCERS
  14. };
  15. enum InputIds
  16. {
  17. RESET_1,
  18. INLENGHT_1 = RESET_1 + NUM_SEQUENCERS,
  19. INSTRIDE_1 = INLENGHT_1 + NUM_SEQUENCERS,
  20. INXPOSE_1 = INSTRIDE_1 + NUM_SEQUENCERS,
  21. CLOCK_1 = INXPOSE_1 + NUM_SEQUENCERS,
  22. NUM_INPUTS = CLOCK_1 + NUM_SEQUENCERS
  23. };
  24. enum OutputIds
  25. {
  26. CV_1,
  27. GATE_1 = CV_1 + NUM_SEQUENCERS,
  28. NUM_OUTPUTS = GATE_1 + NUM_SEQUENCERS
  29. };
  30. enum LightIds
  31. {
  32. LED_SEQUENCE_1,
  33. NUM_LIGHTS = (LED_SEQUENCE_1 + TOTAL_STEPS) * NUM_SEQUENCERS
  34. };
  35. Spiralone() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS)
  36. {
  37. #ifdef LAUNCHPAD
  38. drv = new LaunchpadBindingDriver(this, Scene5, 1);
  39. #endif
  40. #ifdef OSCTEST_MODULE
  41. oscDrv = new OSCDriver(this, 5);
  42. #endif
  43. on_loaded();
  44. }
  45. #ifdef DIGITAL_EXT
  46. ~Spiralone()
  47. {
  48. #if defined(LAUNCHPAD)
  49. delete drv;
  50. #endif
  51. #if defined(OSCTEST_MODULE)
  52. delete oscDrv;
  53. #endif
  54. }
  55. #endif
  56. void step() override;
  57. void reset() override { load(); }
  58. void fromJson(json_t *root) override { Module::fromJson(root); on_loaded(); }
  59. json_t *toJson() override
  60. {
  61. json_t *rootJ = json_object();
  62. return rootJ;
  63. }
  64. #ifdef DIGITAL_EXT
  65. float connected;
  66. #endif
  67. #ifdef LAUNCHPAD
  68. LaunchpadBindingDriver *drv;
  69. #endif
  70. #if defined(OSCTEST_MODULE)
  71. OSCDriver *oscDrv;
  72. #endif
  73. private:
  74. void on_loaded();
  75. void load();
  76. spiraloneSequencer sequencer[NUM_SEQUENCERS];
  77. SchmittTrigger masterReset;
  78. };
  79. } // namespace rack_plugin_TheXOR