diff options
Diffstat (limited to 'src/main.cc')
| -rw-r--r-- | src/main.cc | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/main.cc b/src/main.cc index 4542824..02a59c5 100644 --- a/src/main.cc +++ b/src/main.cc @@ -12,8 +12,8 @@ #include "audio/wav_dump_backend.h" #endif #include "generated/assets.h" // Include generated asset header +#include "gpu/demo_effects.h" // For GetDemoDuration() #include "gpu/gpu.h" -#include "gpu/demo_effects.h" // For GetDemoDuration() #include "platform.h" #include "util/math.h" #include <cmath> @@ -121,7 +121,7 @@ int main(int argc, char** argv) { // 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 float g_tempo_scale = 1.0f; // 1.0 = normal speed static double g_last_physical_time = 0.0; double last_beat_time = 0.0; @@ -137,19 +137,19 @@ int main(int argc, char** argv) { // Phase 6 (25s+): Steady 1.0x (reset after deceleration) const float prev_tempo = g_tempo_scale; if (t < 10.0) { - g_tempo_scale = 1.0f; // Steady at start + g_tempo_scale = 1.0f; // Steady at start } else if (t < 15.0) { // Phase 3: Linear acceleration const float progress = (float)(t - 10.0) / 5.0f; - g_tempo_scale = 1.0f + progress * 1.0f; // 1.0 → 2.0 + g_tempo_scale = 1.0f + progress * 1.0f; // 1.0 → 2.0 } else if (t < 20.0) { - g_tempo_scale = 1.0f; // Reset to normal + g_tempo_scale = 1.0f; // Reset to normal } else if (t < 25.0) { // Phase 5: Linear deceleration const float progress = (float)(t - 20.0) / 5.0f; - g_tempo_scale = 1.0f - progress * 0.5f; // 1.0 → 0.5 + g_tempo_scale = 1.0f - progress * 0.5f; // 1.0 → 0.5 } else { - g_tempo_scale = 1.0f; // Reset to normal + g_tempo_scale = 1.0f; // Reset to normal } #if !defined(STRIP_ALL) @@ -189,8 +189,9 @@ int main(int argc, char** argv) { g_audio_engine.update(g_music_time); // Fill ring buffer with upcoming audio (look-ahead rendering) - // CRITICAL: Scale dt by tempo to render enough audio during acceleration/deceleration - // At 2.0x tempo, we consume 2x audio per physical second, so we must render 2x per frame + // CRITICAL: Scale dt by tempo to render enough audio during + // acceleration/deceleration At 2.0x tempo, we consume 2x audio per physical + // second, so we must render 2x per frame audio_render_ahead(g_music_time, dt * g_tempo_scale); }; @@ -214,7 +215,7 @@ int main(int argc, char** argv) { // PRE-FILL: Fill ring buffer with initial 200ms before starting audio device // This prevents underrun on first callback g_audio_engine.update(g_music_time); - audio_render_ahead(g_music_time, 1.0f / 60.0f); // Fill buffer with lookahead + audio_render_ahead(g_music_time, 1.0f / 60.0f); // Fill buffer with lookahead // Start audio (or render to WAV file) audio_start(); @@ -266,14 +267,14 @@ int main(int argc, char** argv) { // Calculate beat information for synchronization float beat_time = (float)current_time * g_tracker_score.bpm / 60.0f; int beat_number = (int)beat_time; - float beat = fmodf(beat_time, 1.0f); // Fractional part (0.0 to 1.0) + float beat = fmodf(beat_time, 1.0f); // Fractional part (0.0 to 1.0) #if !defined(STRIP_ALL) // Print beat/time info periodically for identifying sync points static float last_print_time = -1.0f; - if (current_time - last_print_time >= 0.5f) { // Print every 0.5 seconds - printf("[T=%.2f, Beat=%d, Frac=%.2f, Peak=%.2f]\n", - (float)current_time, beat_number, beat, visual_peak); + if (current_time - last_print_time >= 0.5f) { // Print every 0.5 seconds + printf("[T=%.2f, Beat=%d, Frac=%.2f, Peak=%.2f]\n", (float)current_time, + beat_number, beat, visual_peak); last_print_time = (float)current_time; } #endif /* !defined(STRIP_ALL) */ |
