sync-human-watch-listen-20261110). The feel is not verified. This page is overwritten in place at https://minds.gamecult.org/aqua/sync-perlines/ .2026-11-11. Three real clips of the Perlines v2 browser visualizer (perlines-v2/web, software-rendered headless Chromium via SwiftShader, 640x360) playing clicks.wav: ten decaying 110 Hz + 2.2 kHz hits at known file times (list), one clip per scene. The app's own audio output and its canvas are recorded together with MediaRecorder (vp8 + opus; recorder rec.cjs, wav maker mkwav.mjs). The app detected all ten hits in every take (HUD: onsets 10). Default profile (audio may lead 25 ms, lag 100 ms), no event log, --allow-unpaired. The tool is tools/aqua-feel in GameCult/AquaSynth, SYNC.md.
Lag = audio onset minus visual onset, from the recording. It is the app's analysis-to-picture delay plus the capture's frame delivery. It is not a display, speaker or Bluetooth chain, and the headless software renderer is slower and stallier than a GPU.
| scene | luma result | flux result |
|---|---|---|
| Aurora disk | 9 of 10 hits paired; median lag -20.6 ms (audio early), range -39.7..+8.0; 0 outside the window, 7 borderline (intervals straddle the edge), 1 hit with no visual onset | no visual onset found |
| Burning water | 10 of 10 paired; median +0.6 ms, range -38.6..+39.8; 0 outside, 8 borderline | 3 of 10 paired (lags +32..+40 ms) |
| Vector trails | no visual onset found | no visual onset found |
Exit codes: 0 for the first two luma runs and burning-water flux; 1 for Aurora flux and Vector trails (nothing paired).
A browser webm declares no frame rate (1k tbr); readVideo silently fell back to 30 fps, and its uncertainty interval used the resampled period rather than the capture's real frame gaps, so a capture stalling to 34-50 ms looked as tight as a 60 fps one. Fix with tests and a Perlines fixture: GameCult/AquaSynth PR #33 (merged to main as 84aa12d after a Soul pass, whose two findings are fixed in it). The numbers here are from the fixed tool.
profile default: audio may lead by 25 ms, lag by 100 ms (conservative; between ATSC IS-191 and ITU-R BT.1359-1) lag = audio - visual (+ = audio late). The visual onset is quantised up to the next frame (period 52.0 ms: the capture's source frames are up to that far apart), so the true lag lies in [lag - 27.3, lag + 79.3] ms (video resampled to constant frame rate) label event s audio s visual s a-ev ms v-ev ms lag ms verdict a0 - 1.051 1.071 - - -20.6 borderline a1 - 2.251 2.286 - - -34.9 borderline a2 - 3.151 3.190 - - -39.7 borderline a3 - 4.451 4.476 - - -25.4 borderline a4 - 5.351 5.357 - - -6.3 borderline a5 - 6.651 6.643 - - 8.0 inside-window a6 - 7.551 7.548 - - 3.2 inside-window a7 - 8.851 8.881 - - -30.1 borderline a9 - 10.951 10.952 - - -1.6 borderline 9 paired, 1 audio and 0 visual onsets unpaired (allowed); median lag -20.6 ms, range -39.7..8.0 ms (spread 47.6 ms) 0 outside the window, 7 borderline, 0 ambiguous (neighbouring onset closer than 400 ms), 0 without both onsets. NOT DETECTABLY OUTSIDE THE WINDOW (7 borderline: the interval straddles the edge) by this metric. A metric over two onset lists, not a verdict: a person still has to watch and listen (SYNC.md).
profile default: audio may lead by 25 ms, lag by 100 ms (conservative; between ATSC IS-191 and ITU-R BT.1359-1) lag = audio - visual (+ = audio late). The visual onset is quantised up to the next frame (period 52.0 ms: the capture's source frames are up to that far apart), so the true lag lies in [lag - 27.3, lag + 79.3] ms (video resampled to constant frame rate) label event s audio s visual s a-ev ms v-ev ms lag ms verdict 0 paired, 10 audio and 0 visual onsets unpaired (allowed); median lag - ms, range - ms (spread - ms) 0 outside the window, 0 borderline, 0 ambiguous (neighbouring onset closer than 400 ms), 0 without both onsets. NOT WITHIN WINDOW by this metric. A metric over two onset lists, not a verdict: a person still has to watch and listen (SYNC.md).
profile default: audio may lead by 25 ms, lag by 100 ms (conservative; between ATSC IS-191 and ITU-R BT.1359-1) lag = audio - visual (+ = audio late). The visual onset is quantised up to the next frame (period 46.0 ms: the capture's source frames are up to that far apart), so the true lag lies in [lag - 24.3, lag + 70.3] ms (video resampled to constant frame rate) label event s audio s visual s a-ev ms v-ev ms lag ms verdict a0 - 1.040 1.000 - - 39.8 borderline a1 - 2.240 2.243 - - -3.4 borderline a2 - 3.140 3.108 - - 31.7 borderline a3 - 4.440 4.405 - - 34.4 borderline a4 - 5.340 5.378 - - -38.6 borderline a5 - 6.640 6.649 - - -8.8 borderline a6 - 7.540 7.541 - - -0.7 borderline a7 - 8.840 8.838 - - 2.0 inside-window a8 - 9.740 9.730 - - 10.1 inside-window a9 - 10.940 10.946 - - -6.1 borderline 10 paired, 0 audio and 0 visual onsets unpaired (allowed); median lag 0.6 ms, range -38.6..39.8 ms (spread 78.4 ms) 0 outside the window, 8 borderline, 0 ambiguous (neighbouring onset closer than 400 ms), 0 without both onsets. NOT DETECTABLY OUTSIDE THE WINDOW (8 borderline: the interval straddles the edge) by this metric. A metric over two onset lists, not a verdict: a person still has to watch and listen (SYNC.md).
profile default: audio may lead by 25 ms, lag by 100 ms (conservative; between ATSC IS-191 and ITU-R BT.1359-1) lag = audio - visual (+ = audio late). The visual onset is quantised up to the next frame (period 46.0 ms: the capture's source frames are up to that far apart), so the true lag lies in [lag - 24.3, lag + 70.3] ms (video resampled to constant frame rate) label event s audio s visual s a-ev ms v-ev ms lag ms verdict a0 - 1.040 1.000 - - 39.8 borderline a2 - 3.140 3.108 - - 31.7 borderline a3 - 4.440 4.405 - - 34.4 borderline 3 paired, 7 audio and 0 visual onsets unpaired (allowed); median lag 34.4 ms, range 31.7..39.8 ms (spread 8.1 ms) 0 outside the window, 3 borderline, 0 ambiguous (neighbouring onset closer than 400 ms), 0 without both onsets. NOT DETECTABLY OUTSIDE THE WINDOW (3 borderline: the interval straddles the edge) by this metric. A metric over two onset lists, not a verdict: a person still has to watch and listen (SYNC.md).
profile default: audio may lead by 25 ms, lag by 100 ms (conservative; between ATSC IS-191 and ITU-R BT.1359-1) lag = audio - visual (+ = audio late). The visual onset is quantised up to the next frame (period 36.0 ms: the capture's source frames are up to that far apart), so the true lag lies in [lag - 19.3, lag + 55.3] ms (video resampled to constant frame rate) label event s audio s visual s a-ev ms v-ev ms lag ms verdict 0 paired, 10 audio and 0 visual onsets unpaired (allowed); median lag - ms, range - ms (spread - ms) 0 outside the window, 0 borderline, 0 ambiguous (neighbouring onset closer than 400 ms), 0 without both onsets. NOT WITHIN WINDOW by this metric. A metric over two onset lists, not a verdict: a person still has to watch and listen (SYNC.md).
profile default: audio may lead by 25 ms, lag by 100 ms (conservative; between ATSC IS-191 and ITU-R BT.1359-1) lag = audio - visual (+ = audio late). The visual onset is quantised up to the next frame (period 36.0 ms: the capture's source frames are up to that far apart), so the true lag lies in [lag - 19.3, lag + 55.3] ms (video resampled to constant frame rate) label event s audio s visual s a-ev ms v-ev ms lag ms verdict 0 paired, 10 audio and 0 visual onsets unpaired (allowed); median lag - ms, range - ms (spread - ms) 0 outside the window, 0 borderline, 0 ambiguous (neighbouring onset closer than 400 ms), 0 without both onsets. NOT WITHIN WINDOW by this metric. A metric over two onset lists, not a verdict: a person still has to watch and listen (SYNC.md).
A person watches and listens to a clip the tool calls inside-window and one it calls outside-window and says whether the verdict matches; and the 25/100 ms windows are checked against the standards texts (EBU R37, ATSC IS-191 came from secondary summaries). Neither has happened.