diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-15 12:38:48 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-15 12:38:48 +0100 |
| commit | 8cababb75f17c420518cc5e84b66f48a1a1b82d3 (patch) | |
| tree | f9deda74a1e76fb114f7bda4e1eb664e78ae1f2d /src/audio/tracker.cc | |
| parent | 5709bf56225894016281fbc6646bae0942468299 (diff) | |
investigating audio-drive bug
Diffstat (limited to 'src/audio/tracker.cc')
| -rw-r--r-- | src/audio/tracker.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/audio/tracker.cc b/src/audio/tracker.cc index 1c0a9b2..37f0683 100644 --- a/src/audio/tracker.cc +++ b/src/audio/tracker.cc @@ -234,6 +234,16 @@ static void trigger_note_event(const TrackerEvent& event, } void tracker_update(float music_time_sec, float dt_music_sec) { + // TODO(timing): CRITICAL BUG - Events trigger ~180ms early over 63 beats @ BPM=90 + // Observed: Beat 63 snare at 41.82s in WAV, should be at 42.00s (180ms drift) + // NOTE: This is NOT a float vs double precision issue - floats handle <500s times fine + // Root cause unknown - suspects: + // 1. Systematic bias in time calculation (not random accumulation) + // 2. Truncation in audio.cc:103 chunk_frames = (int)(dt * sample_rate) + // 3. BPM calculation precision below (unit_duration_sec) + // 4. Mismatch between tracker time and actual sample rendering + // See also: audio.cc sample rendering truncation + // Unit-less timing: 1 unit = 4 beats (by convention) const float BEATS_PER_UNIT = 4.0f; const float unit_duration_sec = |
