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.

51 lines
937B

  1. #include "rack.hpp"
  2. #include "dsp/digital.hpp"
  3. #include "dsp/ringbuffer.hpp"
  4. #include "SongRollData.hpp"
  5. #include "Transport.hpp"
  6. #include "../ValueChangeTrigger.hpp"
  7. namespace rack_plugin_rcm {
  8. namespace SongRoll {
  9. struct SongRollModule : rack::Module {
  10. enum ParamIds {
  11. NUM_PARAMS
  12. };
  13. enum InputIds {
  14. NUM_INPUTS
  15. };
  16. enum OutputIds {
  17. NUM_OUTPUTS
  18. };
  19. enum LightIds {
  20. NUM_LIGHTS
  21. };
  22. rack::SchmittTrigger clockInputTrigger;
  23. rack::SchmittTrigger resetInputTrigger;
  24. rack::SchmittTrigger runInputTrigger;
  25. ValueChangeTrigger<bool> runInputActive;
  26. rack::RingBuffer<float, 16> clockBuffer;
  27. int clockDelay = 0;
  28. SongRollData songRollData;
  29. Transport transport;
  30. SongRollModule();
  31. void step() override;
  32. void onReset() override;
  33. json_t *toJson() override;
  34. void fromJson(json_t *rootJ) override;
  35. };
  36. }
  37. } // namespace rack_plugin_rcm