- a video resampled to constant frame rate gets an interval half a period wider each side (found at 15/24 fps against ffmpeg-built ground truth); tests at 15 and 24 fps
- header lines may contain digits; CR-only line endings split
- SYNC.md: wrong-sign reading beyond half the hit spacing, bed block length, test counts
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- readVideo: ffmpeg only (no ffprobe); stream starts read from the first decoded frame; the padded cfr video is no longer offset twice
(video starting late read 2x its offset). Known-offset clips built with ffmpeg are now a test.
- ambiguity: a pair is ambiguous when a same-kind neighbour is closer than twice the pairing window (default 200 ms), not when anything is inside it
- audio onsets that refine to the same sample are de-duplicated
- parsers: strict numbers (no null/""/true/hex), header on the first data line, semicolons, trailing commas, column-count consistency; zero windows allowed
- SYNC.md: limits for pulsing beds, noise gates, hit-rate cost of the ambiguity rule
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- onset refinement is relative to the steady bed and DC; searched from the flux rise start to the flux peak
- lag is judged on [lag - hop/2, lag + frame period + hop/2], not a point: visual onsets are quantised up to the next frame
- events and onsets pair one-to-one; another onset inside the pairing window is ambiguous-pairing and fails
- unpaired onsets fail unless --allow-unpaired; bad numbers/kinds/profiles/options are errors; parsers refuse unreadable lines
- readVideo: works without ffprobe (ffmpeg -i), resamples VFR to CFR by pts; fixtures/browser-capture.webm + recipe
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Zero-dependency check: audio spectral-flux onsets and visual luma/flux onsets, paired per logged event, lag in ms, verdict against
default/BT.1359-1/EBU R37/ATSC IS-191 windows. Synthetic known-offset fixture and 19 checks. SYNC.md says what the metric cannot tell.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>