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.

109 lines
1.5KB

  1. #pragma once
  2. #include "bogaudio.hpp"
  3. #include "shaper_core.hpp"
  4. extern Model* modelShaper;
  5. namespace bogaudio {
  6. struct Shaper : 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. NUM_INPUTS
  23. };
  24. enum OutputIds {
  25. SIGNAL_OUTPUT,
  26. ENV_OUTPUT,
  27. INV_OUTPUT,
  28. TRIGGER_OUTPUT,
  29. NUM_OUTPUTS
  30. };
  31. enum LightIds {
  32. ATTACK_LIGHT,
  33. ON_LIGHT,
  34. DECAY_LIGHT,
  35. OFF_LIGHT,
  36. NUM_LIGHTS
  37. };
  38. ShaperCore _core;
  39. Shaper() : TriggerOnLoadModule(
  40. NUM_PARAMS,
  41. NUM_INPUTS,
  42. NUM_OUTPUTS,
  43. NUM_LIGHTS
  44. )
  45. , _core(
  46. params[ATTACK_PARAM],
  47. params[ON_PARAM],
  48. params[DECAY_PARAM],
  49. params[OFF_PARAM],
  50. params[ENV_PARAM],
  51. params[SIGNAL_PARAM],
  52. params[TRIGGER_PARAM],
  53. params[SPEED_PARAM],
  54. params[LOOP_PARAM],
  55. inputs[SIGNAL_INPUT],
  56. inputs[TRIGGER_INPUT],
  57. NULL,
  58. NULL,
  59. NULL,
  60. NULL,
  61. NULL,
  62. NULL,
  63. outputs[SIGNAL_OUTPUT],
  64. outputs[ENV_OUTPUT],
  65. outputs[INV_OUTPUT],
  66. outputs[TRIGGER_OUTPUT],
  67. NULL,
  68. NULL,
  69. NULL,
  70. NULL,
  71. lights[ATTACK_LIGHT],
  72. lights[ON_LIGHT],
  73. lights[DECAY_LIGHT],
  74. lights[OFF_LIGHT],
  75. _triggerOnLoad,
  76. _shouldTriggerOnLoad
  77. )
  78. {
  79. onReset();
  80. }
  81. void onReset() override {
  82. _core.reset();
  83. }
  84. void step() override {
  85. _core.step();
  86. }
  87. bool shouldTriggerOnNextLoad() override {
  88. return _core._stage != _core.STOPPED_STAGE;
  89. }
  90. };
  91. } // namespace bogaudio