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.

31 lines
856B

  1. #ifndef effect_fade_h_
  2. #define effect_fade_h_
  3. #include "AudioStream.h"
  4. class AudioEffectFade : public AudioStream
  5. {
  6. public:
  7. AudioEffectFade(void)
  8. : AudioStream(1, inputQueueArray), position(0xFFFFFFFF) {}
  9. void fadeIn(uint32_t milliseconds) {
  10. uint32_t samples = (uint32_t)(milliseconds * 441u + 5u) / 10u;
  11. //Serial.printf("fadeIn, %u samples\n", samples);
  12. fadeBegin(0xFFFFFFFFu / samples, 1);
  13. }
  14. void fadeOut(uint32_t milliseconds) {
  15. uint32_t samples = (uint32_t)(milliseconds * 441u + 5u) / 10u;
  16. //Serial.printf("fadeOut, %u samples\n", samples);
  17. fadeBegin(0xFFFFFFFFu / samples, 0);
  18. }
  19. virtual void update(void);
  20. private:
  21. void fadeBegin(uint32_t newrate, uint8_t dir);
  22. uint32_t position; // 0 = off, 0xFFFFFFFF = on
  23. uint32_t rate;
  24. uint8_t direction; // 0 = fading out, 1 = fading in
  25. audio_block_t *inputQueueArray[1];
  26. };
  27. #endif