// This file is part of the 64k demo project. // It defines the tracker system for music composition. #pragma once #include "audio/gen.h" #include "generated/assets.h" #include struct TrackerEvent { float unit_time; // Unit-less time within pattern (0.0 to pattern.unit_length) uint16_t sample_id; float volume; float pan; }; struct TrackerPattern { const TrackerEvent* events; uint32_t num_events; float unit_length; // Pattern duration in units (typically 1.0 for 4-beat patterns) }; struct TrackerPatternTrigger { float unit_time; // Unit-less time when pattern triggers uint16_t pattern_id; // Modifiers could be added here }; struct TrackerScore { const TrackerPatternTrigger* triggers; uint32_t num_triggers; float bpm; // BPM is used only for playback scaling (1 unit = 4 beats) }; // Global music data generated by tracker_compiler extern const NoteParams g_tracker_samples[]; extern const uint32_t g_tracker_samples_count; extern const AssetId g_tracker_sample_assets[]; extern const TrackerPattern g_tracker_patterns[]; extern const uint32_t g_tracker_patterns_count; extern const TrackerScore g_tracker_score; void tracker_init(); void tracker_update(float music_time_sec); void tracker_reset(); // Reset tracker state (for tests/seeking)