summaryrefslogtreecommitdiff
path: root/src/main.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cc')
-rw-r--r--src/main.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/main.cc b/src/main.cc
index aba8d4b..9f61f07 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -92,10 +92,20 @@ int main(int argc, char** argv) {
// int melody_id = generate_melody();
// synth_trigger_voice(melody_id, 0.6f, 0.0f);
+ // Music time state for variable tempo
+ static float g_music_time = 0.0f;
+ static float g_tempo_scale = 1.0f; // 1.0 = normal speed
+ static double g_last_physical_time = 0.0;
+
double last_beat_time = 0.0;
int beat_count = 0;
auto update_game_logic = [&](double t) {
+ // Calculate delta time and advance music time at scaled rate
+ const float dt = (float)(t - g_last_physical_time);
+ g_last_physical_time = t;
+ g_music_time += dt * g_tempo_scale;
+
if (t - last_beat_time > (60.0f / g_tracker_score.bpm) / 2.0) { // 8th notes
last_beat_time = t; // Sync to t
@@ -115,7 +125,9 @@ int main(int argc, char** argv) {
*/
++beat_count;
}
- tracker_update((float)t);
+
+ // Pass music_time (not physical time) to tracker
+ tracker_update(g_music_time);
};
#if !defined(STRIP_ALL)