| Age | Commit message (Collapse) | Author |
|
- newPixelsPerSecond → newPixelsPerBeat
- maxTime → maxTimeBeats (in waveform render)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
- Add audioBuffer check before showing tooltip/cursor in viewport controller
- Sync variable renames in module files (pixelsPerBeat, audioDurationSeconds)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Replace repeated 60.0/bpm calculations with precomputed secondsPerBeat
and beatsPerSecond properties. Add computeBPMValues helper and updateBPM
function for consistency. Also prevent wheel events on time markers.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Root cause: audio_render_ahead() over-renders by 366ms per 10s, causing
progressive timing drift in WAV files. Events appear early in viewer.
Findings:
- Renders 11,733 extra frames over 40s (331,533 vs 319,800 expected)
- Ring buffer accumulates excess audio (~19 frames/iteration)
- WAV dump reads exact 533 frames but renders ~552 frames per call
- Results in -180ms drift at 60 beats visible in timeline viewer
Debug changes:
- Added render tracking to audio.cc to measure actual vs expected
- Added drift printf to tracker.cc for kick/snare timing analysis
- Added WAV sample rate detection to timeline viewer
See doc/AUDIO_WAV_DRIFT_BUG.md for complete analysis and proposed fixes.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Extract zoom/scroll/playback code from monolithic index.html into
separate modules for better code organization:
- timeline-viewport.js: Zoom, scroll sync, indicator positioning (133 lines)
- timeline-playback.js: Audio loading, playback, waveform rendering (303 lines)
- index.html: Reduced from 1093 to 853 lines (-22%)
Requires HTTP server for ES6 module imports. Updated README with usage.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|