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.

116 lines
1.8KB

  1. #pragma once
  2. #include "bogaudio.hpp"
  3. #include "shaper_core.hpp"
  4. extern Model* modelShaperPlus;
  5. namespace bogaudio {
  6. struct ShaperPlus : TriggerOnLoadModule {
  7. enum ParamIds {
  8. ATTACK_PARAM,
  9. ON_PARAM,
  10. DECAY_PARAM,
  11. OFF_PARAM,
  12. ENV_PARAM,
  13. SIGNAL_PARAM,
  14. TRIGGER_PARAM,
  15. SPEED_PARAM,
  16. LOOP_PARAM,
  17. NUM_PARAMS
  18. };
  19. enum InputIds {
  20. SIGNAL_INPUT,
  21. TRIGGER_INPUT,
  22. ATTACK_INPUT,
  23. ON_INPUT,
  24. DECAY_INPUT,
  25. OFF_INPUT,
  26. ENV_INPUT,
  27. SIGNALCV_INPUT,
  28. NUM_INPUTS
  29. };
  30. enum OutputIds {
  31. SIGNAL_OUTPUT,
  32. ENV_OUTPUT,
  33. INV_OUTPUT,
  34. TRIGGER_OUTPUT,
  35. ATTACK_OUTPUT,
  36. ON_OUTPUT,
  37. DECAY_OUTPUT,
  38. OFF_OUTPUT,
  39. NUM_OUTPUTS
  40. };
  41. enum LightIds {
  42. ATTACK_LIGHT,
  43. ON_LIGHT,
  44. DECAY_LIGHT,
  45. OFF_LIGHT,
  46. NUM_LIGHTS
  47. };
  48. ShaperCore _core;
  49. ShaperPlus() : TriggerOnLoadModule(
  50. NUM_PARAMS,
  51. NUM_INPUTS,
  52. NUM_OUTPUTS,
  53. NUM_LIGHTS
  54. )
  55. , _core(
  56. params[ATTACK_PARAM],
  57. params[ON_PARAM],
  58. params[DECAY_PARAM],
  59. params[OFF_PARAM],
  60. params[ENV_PARAM],
  61. params[SIGNAL_PARAM],
  62. params[TRIGGER_PARAM],
  63. params[SPEED_PARAM],
  64. params[LOOP_PARAM],
  65. inputs[SIGNAL_INPUT],
  66. inputs[TRIGGER_INPUT],
  67. &inputs[ATTACK_INPUT],
  68. &inputs[ON_INPUT],
  69. &inputs[DECAY_INPUT],
  70. &inputs[OFF_INPUT],
  71. &inputs[ENV_INPUT],
  72. &inputs[SIGNALCV_INPUT],
  73. outputs[SIGNAL_OUTPUT],
  74. outputs[ENV_OUTPUT],
  75. outputs[INV_OUTPUT],
  76. outputs[TRIGGER_OUTPUT],
  77. &outputs[ATTACK_OUTPUT],
  78. &outputs[ON_OUTPUT],
  79. &outputs[DECAY_OUTPUT],
  80. &outputs[OFF_OUTPUT],
  81. lights[ATTACK_LIGHT],
  82. lights[ON_LIGHT],
  83. lights[DECAY_LIGHT],
  84. lights[OFF_LIGHT],
  85. _triggerOnLoad,
  86. _shouldTriggerOnLoad
  87. )
  88. {
  89. onReset();
  90. }
  91. void onReset() override {
  92. _core.reset();
  93. }
  94. void step() override {
  95. _core.step();
  96. }
  97. bool shouldTriggerOnNextLoad() override {
  98. return _core._stage != _core.STOPPED_STAGE;
  99. }
  100. };
  101. } // namespace bogaudio