diff options
Diffstat (limited to 'src/main.cc')
| -rw-r--r-- | src/main.cc | 14 |
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) |
