sound.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. #ifndef sound_h
  2. #define sound_h
  3. #include <furi.h>
  4. #include <furi_hal.h>
  5. #include <stdint.h>
  6. #include "doom_music_player_worker.h"
  7. //static const char dspistol[] = "AnyConv:d=,o=,b=120:408,40p,40p,40p,40p,405,40p,40p,40p,405,30p.,30p.,30p.,13p";
  8. static const char dsintro[] =
  9. "Doom:d=32,o=4,b=56:f,f,f5,f,f,d#5,f,f,c#5,f,f,b,f,f,c5,c#5,f,f,f5,f,f,d#5,f,f,c#5,f,f,8b.,f,f,f5,f,f,d#5,f,f,c#5,f,f,b,f,f,c5,c#5,f,f,f5,f,f,d#5,f,f,c#5,f,f,8b.,a#,a#,a#5,a#,a#,g#5,a#,a#,f#5,a#,a#,e5,a#,a#,f5,f#5,a#,a#,a#5,a#,a#,g#5,a#,a#,f#5,a#,a#,8e5";
  10. //static const char dsgetpow[] = "dsgetpow:d=,o=,b=120:407,40p,30.6,407,40p,406,40p,407,40p,40p,407,30p.,407";
  11. //static const char dsnoway[] = "dsnoway:d=,o=,b=120:407,30.4";
  12. #define MUSIC_PLAYER_SEMITONE_HISTORY_SIZE 4
  13. static const float MUSIC_PLAYER_VOLUMES[] = {0, .25, .5, .75, 1};
  14. typedef struct {
  15. uint8_t semitone_history[MUSIC_PLAYER_SEMITONE_HISTORY_SIZE];
  16. uint8_t duration_history[MUSIC_PLAYER_SEMITONE_HISTORY_SIZE];
  17. uint8_t volume;
  18. uint8_t semitone;
  19. uint8_t dots;
  20. uint8_t duration;
  21. float position;
  22. } MusicPlayerModel;
  23. typedef struct {
  24. MusicPlayerModel* model;
  25. MusicPlayerWorker* worker;
  26. FuriMutex* model_mutex;
  27. } MusicPlayer;
  28. #endif