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.

129 lines
1.9KB

  1. #pragma once
  2. #include "common.hpp"
  3. #include <sstream>
  4. #include <iomanip>
  5. #include <algorithm>
  6. #include "z8kSequencer.hpp"
  7. namespace rack_plugin_TheXOR {
  8. ////////////////////
  9. // module widgets
  10. ////////////////////
  11. struct Z8K;
  12. struct Z8KWidget : SequencerWidget
  13. {
  14. public:
  15. Z8KWidget(Z8K *module);
  16. };
  17. struct Z8K : Module
  18. {
  19. enum ParamIds
  20. {
  21. VOLTAGE_1,
  22. NUM_PARAMS = VOLTAGE_1 + 16
  23. };
  24. enum InputIds
  25. {
  26. RESET_1,
  27. RESET_A = RESET_1 + 4,
  28. RESET_VERT = RESET_A + 4,
  29. RESET_HORIZ,
  30. DIR_1,
  31. DIR_A = DIR_1 + 4,
  32. DIR_VERT = DIR_A + 4,
  33. DIR_HORIZ,
  34. CLOCK_1,
  35. CLOCK_A = CLOCK_1 + 4,
  36. CLOCK_VERT = CLOCK_A + 4,
  37. CLOCK_HORIZ,
  38. NUM_INPUTS
  39. };
  40. enum OutputIds
  41. {
  42. CV_1,
  43. CV_A = CV_1 + 4,
  44. CV_VERT = CV_A + 4,
  45. CV_HORIZ,
  46. ACTIVE_STEP,
  47. NUM_OUTPUTS = ACTIVE_STEP + 16
  48. };
  49. enum LightIds
  50. {
  51. LED_ROW,
  52. LED_COL = LED_ROW + 16,
  53. LED_VERT = LED_COL + 16,
  54. LED_HORIZ = LED_VERT + 16,
  55. NUM_LIGHTS = LED_HORIZ + 16
  56. };
  57. enum SequencerIds
  58. {
  59. SEQ_1,
  60. SEQ_A = SEQ_1 + 4,
  61. SEQ_VERT = SEQ_A + 4,
  62. SEQ_HORIZ,
  63. NUM_SEQUENCERS
  64. };
  65. Z8K() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS)
  66. {
  67. /*
  68. #ifdef LAUNCHPAD
  69. drv = new LaunchpadBindingDriver(this, Scene4, 1);
  70. drv->SetAutoPageKey(LaunchpadKey::SESSION, 0);
  71. #endif*/
  72. #ifdef OSCTEST_MODULE
  73. oscDrv = new OSCDriver(this, 4);
  74. #endif
  75. on_loaded();
  76. }
  77. #ifdef DIGITAL_EXT
  78. ~Z8K()
  79. {
  80. /*#if defined(LAUNCHPAD)
  81. delete drv;
  82. #endif*/
  83. #if defined(OSCTEST_MODULE)
  84. delete oscDrv;
  85. #endif
  86. }
  87. #endif
  88. void step() override;
  89. void reset() override { load(); }
  90. void fromJson(json_t *root) override { Module::fromJson(root); on_loaded(); }
  91. json_t *toJson() override
  92. {
  93. json_t *rootJ = json_object();
  94. return rootJ;
  95. }
  96. #ifdef DIGITAL_EXT
  97. float connected;
  98. #endif
  99. /*#ifdef LAUNCHPAD
  100. LaunchpadBindingDriver *drv;
  101. #endif*/
  102. #if defined(OSCTEST_MODULE)
  103. OSCDriver *oscDrv;
  104. #endif
  105. private:
  106. void on_loaded();
  107. void load();
  108. z8kSequencer seq[10];
  109. };
  110. } // namespace rack_plugin_TheXOR