summaryrefslogtreecommitdiff
path: root/src/audio
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-15 16:41:08 +0100
committerskal <pascal.massimino@gmail.com>2026-02-15 16:41:08 +0100
commit3a3eca975f15d1e025d6c46c6de253d2abaa7170 (patch)
tree766b9684a4075681c571b06caae1262f30910381 /src/audio
parent6e7aa374b6e0e5ebda2f3525c130ce0cc1cd72cb (diff)
fix(audio): WAV dump drift improvements, acceptable state
WAV dump changes: - Bypass ring buffer, render directly with synth_render() - Frame accumulator eliminates truncation errors - Skip pre-fill and fix seek for WAV dump mode - Result: No glitches, -150ms drift at 64b (acceptable) Timeline editor: - Fix waveform tooltip position calculation - Increase beat bar visibility (0.5 opacity) Cleanup: - Remove all drift debugging code from audio.cc and tracker.cc Status: Acceptable for now, further investigation needed. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'src/audio')
-rw-r--r--src/audio/audio.cc17
-rw-r--r--src/audio/tracker.cc8
2 files changed, 0 insertions, 25 deletions
diff --git a/src/audio/audio.cc b/src/audio/audio.cc
index f5bc4ab..ba76a28 100644
--- a/src/audio/audio.cc
+++ b/src/audio/audio.cc
@@ -108,10 +108,6 @@ void audio_render_ahead(float music_time, float dt, float target_fill) {
if (chunk_frames <= 0)
return;
- static int64_t g_total_render_calls = 0;
- static int64_t g_total_frames_rendered = 0;
- const int64_t frames_before = g_ring_buffer.get_total_written() / RING_BUFFER_CHANNELS;
-
// Keep rendering small chunks until buffer is full enough
while (true) {
// First, try to flush any pending samples from previous partial writes
@@ -228,19 +224,6 @@ void audio_render_ahead(float music_time, float dt, float target_fill) {
}
}
}
-
- // DEBUG: Track actual frames rendered vs expected
- const int64_t frames_after = g_ring_buffer.get_total_written() / RING_BUFFER_CHANNELS;
- const int64_t actual_rendered = frames_after - frames_before;
- g_total_render_calls++;
- g_total_frames_rendered += actual_rendered;
-
- if (g_total_render_calls % 600 == 0) { // Every 10 seconds at 60fps
- const float expected_frames = g_total_render_calls * (float)(chunk_frames);
- const float drift_ms = (expected_frames - g_total_frames_rendered) / RING_BUFFER_SAMPLE_RATE * 1000.0f;
- printf("[RENDER_DRIFT] calls=%lld expect=%.1f actual=%lld drift=%.2fms\n",
- g_total_render_calls, expected_frames, g_total_frames_rendered, drift_ms);
- }
}
float audio_get_playback_time() {
diff --git a/src/audio/tracker.cc b/src/audio/tracker.cc
index 00c31e9..37f0683 100644
--- a/src/audio/tracker.cc
+++ b/src/audio/tracker.cc
@@ -324,14 +324,6 @@ void tracker_update(float music_time_sec, float dt_music_sec) {
}
}
- // DEBUG: Track kick/snare timing for drift investigation
- if (event.sample_id == 0 || event.sample_id == 1) { // Assuming kick=0, snare=1
- const char* name = (event.sample_id == 0) ? "KICK " : "SNARE";
- const float delta_ms = (event_music_time - music_time_sec) * 1000.0f;
- printf("[DRIFT] %s: music=%.4f expect=%.4f delta=%.2fms offset=%d\n",
- name, music_time_sec, event_music_time, delta_ms, sample_offset);
- }
-
trigger_note_event(event, sample_offset, volume_mult);
active.next_event_idx++;
}