tracker.h 904 B

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