summaryrefslogtreecommitdiff
path: root/src/audio/tracker.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/tracker.h')
-rw-r--r--src/audio/tracker.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/audio/tracker.h b/src/audio/tracker.h
new file mode 100644
index 0000000..d97b483
--- /dev/null
+++ b/src/audio/tracker.h
@@ -0,0 +1,42 @@
+// This file is part of the 64k demo project.
+// It defines the tracker system for music composition.
+
+#pragma once
+
+#include "audio/gen.h"
+#include <cstdint>
+
+struct TrackerEvent {
+ float beat;
+ uint16_t sample_id;
+ float volume;
+ float pan;
+};
+
+struct TrackerPattern {
+ const TrackerEvent* events;
+ uint32_t num_events;
+ float num_beats;
+};
+
+struct TrackerPatternTrigger {
+ float time_sec;
+ uint16_t pattern_id;
+ // Modifiers could be added here
+};
+
+struct TrackerScore {
+ const TrackerPatternTrigger* triggers;
+ uint32_t num_triggers;
+ float bpm;
+};
+
+// Global music data generated by tracker_compiler
+extern const NoteParams g_tracker_samples[];
+extern const uint32_t g_tracker_samples_count;
+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 time_sec);