tracker.h 932 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #pragma once
  2. #include "tracker_notes.h"
  3. #include "tracker_song.h"
  4. typedef enum {
  5. TrackerPositionChanged,
  6. TrackerEndOfSong,
  7. TrackerShutDown,
  8. } TrackerMessageType;
  9. typedef struct {
  10. TrackerMessageType type;
  11. union tracker_message_data {
  12. struct {
  13. uint8_t order_list_index;
  14. uint8_t row;
  15. } position;
  16. } data;
  17. } TrackerMessage;
  18. typedef void (*TrackerMessageCallback)(const TrackerMessage* message, void* context);
  19. typedef struct Tracker Tracker;
  20. Tracker* tracker_alloc();
  21. void tracker_free(Tracker* tracker);
  22. void tracker_set_message_callback(Tracker* tracker, TrackerMessageCallback callback, void* context);
  23. void tracker_set_song(Tracker* tracker, const Song* song);
  24. void tracker_set_order_index(Tracker* tracker, uint8_t order_index);
  25. void tracker_set_row(Tracker* tracker, uint8_t row);
  26. void tracker_start(Tracker* tracker);
  27. void tracker_stop(Tracker* tracker);