From 2ab5c99b5e409c8779bbeab827044f1deb24bdb3 Mon Sep 17 00:00:00 2001 From: Aqua Date: Wed, 11 Nov 2026 03:11:14 +0000 Subject: [PATCH 1/3] aqua-feel sync: --shape ramp, a detector for slow-swell visual responses Perlines v2's Vector trails answers a sound with a brightening over hundreds of ms; the step detector found no visual onset in any of its takes. The ramp detector takes the rise over 300 ms as novelty, finds each rise's quiet level and 20%/80% crossings, and reports the foot of that line with the interval it can defend: from before the quiet minimum (backed off by the valley-to-20% time, which a property test over three ramp shapes and decaying tails showed necessary) to the 20% crossing. Tests: synthetic ramps at known offsets (linear, exponential, smoothstep; 30 and 60 fps), noise and drift give nothing, and a 0.2 MB real Perlines capture (step finds 0, ramp pairs 3 of 5). Co-Authored-By: Claude Sonnet 5.5 --- tools/aqua-feel/SYNC.md | 18 ++++++- tools/aqua-feel/feel.mjs | 7 +-- .../fixtures/perlines-trails-ramp.webm | Bin 0 -> 214971 bytes tools/aqua-feel/sync.mjs | 43 ++++++++++++--- tools/aqua-feel/sync.test.mjs | 49 +++++++++++++++++- 5 files changed, 105 insertions(+), 12 deletions(-) create mode 100644 tools/aqua-feel/fixtures/perlines-trails-ramp.webm diff --git a/tools/aqua-feel/SYNC.md b/tools/aqua-feel/SYNC.md index 39916e3..7a99842 100644 --- a/tools/aqua-feel/SYNC.md +++ b/tools/aqua-feel/SYNC.md @@ -15,7 +15,7 @@ node feel.mjs sync --wav capture.wav --track frames.csv [--events hits.txt] [--f # a video with one audio and one video stream (needs ffmpeg on PATH, or FFMPEG=/path/to/ffmpeg) node feel.mjs sync --video capture.mp4 [--events hits.txt] [--kind luma|flux] # options: --profile default|bt1359|ebu-r37|atsc-is191 --lead-ms N --lag-ms N --pair-window-ms N (default 200) -# --min-gap-ms N --allow-unpaired --json out.json --no-gate +# --min-gap-ms N --allow-unpaired --json out.json --no-gate --shape step|ramp (ramp: slow swells, see below) node sync.test.mjs # 37 checks on synthetic fixtures; 46 with FFMPEG=/path/to/ffmpeg (also builds clips with known stream offsets and runs a real browser capture) node sync-fixture.mjs DIR 80 60 # write a fixture (audio 80 ms late, 60 fps) to try the CLI on ``` @@ -70,6 +70,22 @@ fragmentary in the search; figures confirmed against secondary summaries), and t [ATSC recommends AV sync rules](https://tvtechnology.com/opinions/atsc-recommends-av-sync-rules). Windows depend on content (speech lip-sync is more sensitive than a game impact) and on the viewer; they are population thresholds, not a property of your capture. +## Ramp-shaped visuals (`--shape ramp`) + +Some visuals answer a sound with a slow swell (a scene brightening over a few hundred ms), not a step. The default detector looks for a peak in the frame-to-frame step, finds none, and says no visual onset +(`step` found 0 of 5 hits on `fixtures/perlines-trails-ramp.webm`; `ramp` paired 3). `--shape ramp` takes the track's rise over 300 ms as the novelty and picks its peaks (at least 15% of the track's range, 6 noise sigmas, +at least 500 ms apart). For each it finds the quiet level before the rise (the last sample within 2 noise sigmas of the minimum of the 0.6 s before) and the 20% and 80% crossings of the rise to its top. + +**What it claims.** The response started somewhere between the quiet level, backed off by the time from there to the 20% crossing and one frame, and the 20% crossing. The lag interval is that whole range against the audio onset, +so it is far wider than a step's (100 ms and more) and most verdicts are `borderline`. `audio-late-detectable` is sound whatever the ramp's shape (the picture started to move at the latest at the 20% crossing and the sound +still came later than the window); `audio-early-detectable` only if even the widest start estimate lies after the sound. The point value (`visual s`, `lag ms`) is the foot of the line through the 20% and 80% crossings, a +convention that fits a linear ramp and reads early for exponential approach and late for slow-start (smoothstep) shapes; it is not the instant anyone perceives. + +**What it cannot claim.** When the viewer sees the swell begin (that is later than the physical start and depends on contrast, size and attention). That the swell was caused by this sound: pairing is by nearness, and a bed that +swells on its own, a scene change or a second sound inside 500 ms gives a false pair. The back-off for a decaying tail is checked on linear, exponential and smoothstep ramps (250 to 450 ms to peak, decay over about a second), not proved: +a response that starts more than one valley-to-20% time before the quiet minimum would escape the interval. Ramps closer than 500 ms merge; ramps under 15% of the track's range, or on a steady drift that rises over the whole clip, are not found. +The 0.15 floor (0.25 missed 7 of 10 Vector trails hits and 0.10 admitted one false onset) and the other constants were set on that one clip. + ## Uncertainty A visual onset can only land on a frame, and a frame is stamped when its picture started to be displayed. A change at time tau first shows in the first frame diff --git a/tools/aqua-feel/feel.mjs b/tools/aqua-feel/feel.mjs index f789557..7ff3f93 100644 --- a/tools/aqua-feel/feel.mjs +++ b/tools/aqua-feel/feel.mjs @@ -5,7 +5,7 @@ // Usage: node feel.mjs run [--out DIR] [--only SUBSTR] [--no-gate] render, measure, write report + gallery, gate // node feel.mjs gate REPORT.json [THRESHOLDS.json] [--partial] re-gate a report (--partial: a subset; skips id-rule and waiver bookkeeping) // node feel.mjs compare BEFORE.json AFTER.json [--only SUBSTR] before/after table -// node feel.mjs sync --wav A.wav --track T.csv [--events E] | --video V [--fps N] [--kind luma|flux] [--profile P] [--lead-ms N --lag-ms N] [--pair-window-ms N] [--min-gap-ms N] [--allow-unpaired] [--json OUT] A/V synchrony (SYNC.md) +// node feel.mjs sync --wav A.wav --track T.csv [--events E] | --video V [--fps N] [--kind luma|flux] [--shape step|ramp] [--profile P] [--lead-ms N --lag-ms N] [--pair-window-ms N] [--min-gap-ms N] [--allow-unpaired] [--json OUT] A/V synchrony (SYNC.md) // node feel.mjs correlate TRIAL_EXPORT.json ... feel metrics vs listening-trial ratings import { readFileSync, writeFileSync, mkdirSync } from "node:fs"; import { dirname, join, resolve } from "node:path"; @@ -61,15 +61,16 @@ async function sync() { const num = (n) => { const x = val(n); if (x === undefined) return undefined; if (!Number.isFinite(Number(x)) || x.trim() === "") throw new Error(`${n} needs a number, got "${x}"`); return Number(x); }; const wav = val("--wav"), trk = val("--track"), vid = val("--video"), evs = val("--events"), fps = num("--fps"), json = val("--json"); const kind = val("--kind") ?? "luma", profile = val("--profile") ?? "default", lead = num("--lead-ms"), lag = num("--lag-ms"), pw = num("--pair-window-ms"), gap = num("--min-gap-ms"); - const noGate = bool("--no-gate"), allowUnpaired = bool("--allow-unpaired"); + const shape = val("--shape") ?? "step", noGate = bool("--no-gate"), allowUnpaired = bool("--allow-unpaired"); if (args.length) throw new Error(`unknown argument ${args[0]}`); + if (!["step", "ramp"].includes(shape)) throw new Error(`--shape is step or ramp, got "${shape}"`); if (!["luma", "flux"].includes(kind)) throw new Error(`--kind is luma or flux, got "${kind}"`); if (!PROFILES[profile]) throw new Error(`--profile is one of ${Object.keys(PROFILES).join(", ")}, got "${profile}"`); let audio, sampleRate, audioStartS = 0, visual, visualResampled = false, visualGapMs = 0; if (vid) { const v = readVideo(vid); audio = v.audio.samples; sampleRate = v.audio.sampleRate; audioStartS = v.audio.startS; visual = kind === "flux" ? v.flux : v.luma; visualResampled = true; visualGapMs = v.sourceGapMs; } else if (wav && trk) { const w = readWav(readFileSync(wav)); audio = w.samples; sampleRate = w.sampleRate; visual = readTrack(readFileSync(trk, "utf8"), fps); } else throw new Error("give --video FILE, or --wav FILE with --track FILE"); - const r = syncAnalyze({ audio, sampleRate, audioStartS, visual, visualKind: kind, profile, events: evs ? readEvents(readFileSync(evs, "utf8")) : undefined, + const r = syncAnalyze({ audio, sampleRate, audioStartS, visual, visualKind: kind, visualShape: shape, profile, events: evs ? readEvents(readFileSync(evs, "utf8")) : undefined, leadMs: lead, lagMs: lag, pairWindowMs: pw ?? 200, minGapMs: gap, allowUnpaired, visualResampled, visualGapMs }); r.caveat = "Nothing here was heard or seen: two onset lists compared. The metric is not the verdict; see SYNC.md."; console.log(formatSync(r)); diff --git a/tools/aqua-feel/fixtures/perlines-trails-ramp.webm b/tools/aqua-feel/fixtures/perlines-trails-ramp.webm new file mode 100644 index 0000000000000000000000000000000000000000..68b89770d08544aba5299557f56f674fd5026b1c GIT binary patch literal 214971 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

?y)8}@XT5Y` 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 z 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 P^h^*~2k|%%Zs0!vW5T-s literal 0 HcmV?d00001 diff --git a/tools/aqua-feel/sync.mjs b/tools/aqua-feel/sync.mjs index a1b42d2..afccac4 100644 --- a/tools/aqua-feel/sync.mjs +++ b/tools/aqua-feel/sync.mjs @@ -194,6 +194,31 @@ export function visualOnsets(track, { kind = "luma", k = 8, minGapS = 0.1 } = {} return r; } +// Visual, ramp-shaped response (a slow brightening or swell over hundreds of ms, no step): the track's rise over `riseS` is the novelty; each peak of it +// is one response. From the quiet level before it (the last sample within 2 noise sigmas of the minimum of the 0.6 s before the peak) to the top, the +// onset is the foot of the line through the 20% and 80% crossings, clamped to [valley, 20% crossing]. The start is only known to lie in +// [valley - (valley to 20% time) - one frame, crossing20S]: a ramp has no first frame, so the onset carries that span and the verdict is read off it, not off the foot. +export function visualRampOnsets(track, { minGapS = 0.5, riseS = 0.3, k = 6 } = {}) { + const { t, v } = track, n = v.length, dts = []; for (let i = 1; i < n; i++) dts.push(t[i] - t[i - 1]); + const period = median(dts), w = Math.max(1, Math.round(0.06 / period)); + const sm = new Float64Array(n); for (let i = 0; i < n; i++) { let a = 0, c = 0; for (let q = Math.max(0, i - w); q <= Math.min(n - 1, i + w); q++) { a += v[q]; c++; } sm[i] = a / c; } + const range = Math.max(...v) - Math.min(...v), d1 = Float64Array.from(v.slice(1), (x, i) => Math.abs(x - v[i])), sigma = 1.4826 * median(d1) / Math.SQRT2 + 1e-12; + const at = (x) => { let lo = 0, hi = n - 1; while (lo < hi) { const m = (lo + hi) >> 1; if (t[m] < x) lo = m + 1; else hi = m; } return lo; }; + const nov = new Float64Array(n); for (let i = 0; i < n; i++) nov[i] = Math.max(0, sm[Math.min(n - 1, at(t[i] + riseS))] - sm[i]); + const r = pickOnsets(nov, t, { k, floor: Math.max(0.15 * range, k * sigma), minGapS, riseFrac: 1 }); + r.framePeriodMs = 1000 * period; + r.onsets = r.onsets.map((o) => { + const p = at(o.peakT), b0 = at(o.peakT - 0.6); let mn = Infinity; for (let i = b0; i <= p; i++) mn = Math.min(mn, sm[i]); + let m = p; while (m > b0 && sm[m] > mn + 2 * sigma) m--; + let top = m; for (let i = m; i < Math.min(n, at(o.peakT + riseS + 0.3)); i++) if (sm[i] > sm[top]) top = i; + const A = sm[top] - sm[m], cross = (f) => { let i = m; while (i < top && sm[i] < sm[m] + f * A) i++; return i; }; + const i20 = cross(0.2), i80 = cross(0.8), foot = Math.min(t[i20], Math.max(t[m], t[i20] - (t[i80] - t[i20]) / 3)); + // Over a decaying tail the minimum of the sum lands after the true start (a slow ramp cancels the decay before it turns the curve): back off by the valley-to-20% time. + return { t: foot, loS: t[m] - (t[i20] - t[m]) - period, hiS: t[i20], peakT: t[top], strength: A }; + }); + return r; +} + // ---------- pairing and verdict ---------- // One-to-one greedy matching of onsets to anchors (events, or audio onsets) by distance, within windowS. Returns Map anchorIndex -> onsetIndex. function match(anchors, onsets, windowS) { @@ -211,7 +236,7 @@ const crowded = (list, o, windowS) => list.some((x) => x !== o && Math.abs(x.t - // Frame quantisation: a visual change at time tau first shows in the frame stamped at or after tau, so visual - tau is in [0, framePeriod) and the // measured lag (audio - visual) is biased LOW by up to a frame period. The truth therefore lies in [lag - audioHop/2, lag + framePeriod + audioHop/2]; // a pair is judged on that interval, not on a point. -export function syncAnalyze({ audio, sampleRate, audioStartS = 0, visual, visualKind = "luma", events, profile = "default", leadMs, lagMs, pairWindowMs = 200, minGapMs, allowUnpaired = false, visualResampled = false, visualGapMs = 0 }) { +export function syncAnalyze({ audio, sampleRate, audioStartS = 0, visual, visualKind = "luma", visualShape = "step", events, profile = "default", leadMs, lagMs, pairWindowMs = 200, minGapMs, allowUnpaired = false, visualResampled = false, visualGapMs = 0 }) { if (!PROFILES[profile]) throw new Error(`unknown profile ${profile}`); const prof = { ...PROFILES[profile] }, custom = leadMs !== undefined || lagMs !== undefined; if (leadMs !== undefined) prof.leadMs = leadMs; @@ -219,11 +244,10 @@ export function syncAnalyze({ audio, sampleRate, audioStartS = 0, visual, visual if (custom) { prof.note = `profile ${profile} with the window overridden on the command line`; } for (const [n, x] of [["leadMs", prof.leadMs], ["lagMs", prof.lagMs], ["pairWindowMs", pairWindowMs]]) if (!Number.isFinite(x) || x < 0 || (n === "pairWindowMs" && x === 0)) throw new Error(`${n} must be a ${n === "pairWindowMs" ? "positive" : "non-negative"} number`); const gap = minGapMs === undefined ? {} : { minGapS: minGapMs / 1000 }; - const a = audioOnsets(audio, sampleRate, { startS: audioStartS, ...gap }), v = visualOnsets(visual, { kind: visualKind, ...gap }); + const a = audioOnsets(audio, sampleRate, { startS: audioStartS, ...gap }), v = visualShape === "ramp" ? visualRampOnsets(visual, gap.minGapS === undefined ? {} : { minGapS: gap.minGapS }) : visualOnsets(visual, { kind: visualKind, ...gap }); // A video resampled to constant frame rate by `fps` snaps each frame to the nearest source frame: half a period more slack on each side. const hopMs = a.resolutionMs, periodMs = Math.max(v.framePeriodMs, visualGapMs), win = pairWindowMs / 1000, snapMs = visualResampled ? periodMs / 2 : 0; - const classify = (lag) => { - const lo = lag - hopMs / 2 - snapMs, hi = lag + periodMs + hopMs / 2 + snapMs; // truth interval, ms + const classify = (lo, hi) => { if (lo >= -prof.leadMs && hi <= prof.lagMs) return "inside-window"; if (lo > prof.lagMs) return "audio-late-detectable"; if (hi < -prof.leadMs) return "audio-early-detectable"; @@ -232,8 +256,12 @@ export function syncAnalyze({ audio, sampleRate, audioStartS = 0, visual, visual const pairs = [], usedA = new Set(), usedV = new Set(); const row = (label, eventS, ao, vo, ambiguous) => { const r = { label, eventS, audioS: ao?.t ?? null, visualS: vo?.t ?? null, audioVsEventMs: ao && eventS !== null ? (ao.t - eventS) * 1e3 : null, visualVsEventMs: vo && eventS !== null ? (vo.t - eventS) * 1e3 : null, lagMs: ao && vo ? (ao.t - vo.t) * 1e3 : null }; - if (r.lagMs !== null) { r.lagLowMs = r.lagMs - hopMs / 2 - snapMs; r.lagHighMs = r.lagMs + periodMs + hopMs / 2 + snapMs; } - r.verdict = r.lagMs === null ? (ao ? "no-visual-onset" : vo ? "no-audio-onset" : "no-onsets") : ambiguous ? "ambiguous-pairing" : classify(r.lagMs); + if (r.lagMs !== null) { + // A step has its change in (visual - period, visual]. A ramp's start lies anywhere in [loS, hiS] (its quiet level to its 20% crossing). + const hiT = vo.hiS ?? vo.t, loT = vo.loS ?? vo.t - periodMs / 1000; + r.lagLowMs = (ao.t - hiT) * 1e3 - hopMs / 2 - snapMs; r.lagHighMs = (ao.t - loT) * 1e3 + hopMs / 2 + snapMs; + } + r.verdict = r.lagMs === null ? (ao ? "no-visual-onset" : vo ? "no-audio-onset" : "no-onsets") : ambiguous ? "ambiguous-pairing" : classify(r.lagLowMs, r.lagHighMs); return r; }; if (events) { @@ -266,7 +294,7 @@ export function syncAnalyze({ audio, sampleRate, audioStartS = 0, visual, visual summary.pass = summary.pairs > 0 && summary.outsideWindow === 0 && summary.missing === 0 && summary.ambiguous === 0 && (allowUnpaired || unpaired === 0); return { schema: "aqua-feel.sync.v1", lagConvention: "lagMs = audio onset - visual onset; positive = audio late, negative = audio early. Truth lies in [lagLowMs, lagHighMs] (visual onsets are quantised up to the next frame)", - profile: { name: custom ? `${profile}+override` : profile, ...prof }, allowUnpaired, pairWindowMs, visualResampled, visualKind, audioResolutionMs: hopMs, framePeriodMs: periodMs, visualGapMs, + profile: { name: custom ? `${profile}+override` : profile, ...prof }, allowUnpaired, pairWindowMs, visualResampled, visualKind, visualShape, audioResolutionMs: hopMs, framePeriodMs: periodMs, visualGapMs, audioOnsets: a.onsets, visualOnsets: v.onsets, pairs, summary, }; } @@ -275,6 +303,7 @@ export function formatSync(r) { const f = (x, d = 1) => (x === null || x === undefined ? " - " : x.toFixed(d).padStart(7)); const L = [`profile ${r.profile.name}: audio may lead by ${r.profile.leadMs} ms, lag by ${r.profile.lagMs} ms (${r.profile.note})`, `lag = audio - visual (+ = audio late). The visual onset is quantised up to the next frame (period ${r.framePeriodMs.toFixed(1)} ms${r.visualGapMs > 0 && r.framePeriodMs === r.visualGapMs ? ": the capture\'s source frames are up to that far apart" : ""}), so the true lag lies in [lag - ${(r.audioResolutionMs / 2 + (r.visualResampled ? r.framePeriodMs / 2 : 0)).toFixed(1)}, lag + ${(r.framePeriodMs * (r.visualResampled ? 1.5 : 1) + r.audioResolutionMs / 2).toFixed(1)}] ms${r.visualResampled ? " (video resampled to constant frame rate)" : ""}`, + ...(r.visualShape === "ramp" ? ["--shape ramp: the visual column is the foot of the line through the 20% and 80% crossings of each rise. A ramp has no first frame, so each interval runs from before the quiet minimum to the 20% crossing and is far wider than a step's."] : []), "", "label event s audio s visual s a-ev ms v-ev ms lag ms verdict"]; for (const p of r.pairs) L.push(`${String(p.label).padEnd(10).slice(0, 10)} ${f(p.eventS, 3)} ${f(p.audioS, 3)} ${f(p.visualS, 3)} ${f(p.audioVsEventMs)} ${f(p.visualVsEventMs)} ${f(p.lagMs)} ${p.verdict}`); const s = r.summary, rng = s.minLagMs === null ? "-" : `${s.minLagMs.toFixed(1)}..${s.maxLagMs.toFixed(1)}`; diff --git a/tools/aqua-feel/sync.test.mjs b/tools/aqua-feel/sync.test.mjs index 72394da..63f50ea 100644 --- a/tools/aqua-feel/sync.test.mjs +++ b/tools/aqua-feel/sync.test.mjs @@ -1,6 +1,6 @@ // Checks of `aqua-feel sync` on synthetic fixtures with known offsets. No real capture is used. Usage: node sync.test.mjs import assert from "node:assert/strict"; -import { formatSync, syncAnalyze, readWav, readTrack, readEvents, audioOnsets, visualOnsets, sourceFrames, PROFILES } from "./sync.mjs"; +import { formatSync, syncAnalyze, readWav, readTrack, readEvents, audioOnsets, visualOnsets, visualRampOnsets, sourceFrames, PROFILES } from "./sync.mjs"; import { readFileSync } from "node:fs"; import { wavFloat32 } from "./render.js"; import { makeFixture, FIXTURE_EVENTS_S } from "./sync-fixture.mjs"; @@ -210,6 +210,46 @@ t("sourceFrames: the rate is the median frame gap, the stale-frame bound is the assert.equal(sourceFrames(si([0, 1, 2])).fps, 24); assert.equal(sourceFrames(si([0, 0.001, 0.002])).fps, 120); }); +// Ramp-shaped responses: a brightening that starts at the event and takes hundreds of ms to peak, then decays over about a second; a drifting bed and noise. +// shapes: linear ramp, exponential approach (steepest at the start), smoothstep (slowest at the start). Truth is the instant the change begins. +const SHAPES = { linear: (u) => Math.min(1, u), exponential: (u) => 1 - Math.exp(-4 * Math.min(1, u)), smoothstep: (u) => { const x = Math.min(1, u); return x * x * (3 - 2 * x); } }; +const rampFixture = ({ shape, rampS, fps, offsetMs = 40, events = [0.5042, 1.9117, 3.2209, 4.6033, 5.9161, 7.2087, 8.5], noise = 0.002 }) => { + const fx = makeFixture({ offsetMs, fps, seconds: 10, events }), nf = Math.round(fps * 10), tt = new Float64Array(nf), vv = new Float64Array(nf); let s = 11; + const rand = () => { s = (Math.imul(s, 1664525) + 1013904223) >>> 0; return s / 2 ** 32 - 0.5; }; + for (let f = 0; f < nf; f++) { + const x = f / fps; let y = 0.1 + 0.005 * Math.sin(x * 0.7) + noise * 2 * rand(); + for (const e of events) if (x >= e) { const u = (x - e) / rampS; y += 0.3 * (u < 1 ? SHAPES[shape](u) : Math.exp(-(u - 1) * rampS / 0.8)); } + tt[f] = x; vv[f] = y; + } + return { ...fx, visual: { t: tt, v: vv }, events: events.map((e, i) => ({ t: e, label: `r${i}` })) }; +}; +for (const shape of Object.keys(SHAPES)) for (const [rampS, fps] of [[0.25, 60], [0.45, 60], [0.35, 30]]) { + t(`ramp (${shape}, ${rampS * 1000} ms to peak, ${fps} fps): every response is found, and the true start lies in each pair's interval`, () => { + const fx = rampFixture({ shape, rampS, fps }), r = syncAnalyze({ audio: fx.audio, sampleRate: fx.sampleRate, visual: fx.visual, visualShape: "ramp", events: fx.events }); + assert.equal(r.pairs.length, fx.events.length); assert.equal(r.summary.unpairedVisual, 0); + for (const p of r.pairs) assert.ok(inInterval(p, fx.offsetMs), `${shape}/${rampS}/${fps} ${p.label}: [${p.lagLowMs}, ${p.lagHighMs}] vs ${fx.offsetMs}`); + for (const p of r.pairs) assert.ok(Math.abs(p.visualVsEventMs) <= 0.45 * rampS * 1000 + 1e3 / fps, `${p.label}: foot ${p.visualVsEventMs} ms from the true start`); + }); +} +for (const offsetMs of [-60, 0, 150]) t(`ramp: a known ${offsetMs} ms offset stays inside the interval for every shape (30 and 60 fps)`, () => { + for (const shape of Object.keys(SHAPES)) for (const fps of [30, 60]) { + const fx = rampFixture({ shape, rampS: 0.3, fps, offsetMs }), r = syncAnalyze({ audio: fx.audio, sampleRate: fx.sampleRate, visual: fx.visual, visualShape: "ramp", events: fx.events }); + assert.equal(r.pairs.length, fx.events.length, `${shape}/${fps}`); + for (const p of r.pairs) assert.ok(inInterval(p, offsetMs), `${shape}/${fps}/${offsetMs} ${p.label}: [${p.lagLowMs}, ${p.lagHighMs}]`); + } +}); +t("ramp: the interval is wide and says so (a ramp has no first frame); it is judged on the whole interval", () => { + const fx = rampFixture({ shape: "smoothstep", rampS: 0.45, fps: 60, offsetMs: 0 }), r = syncAnalyze({ audio: fx.audio, sampleRate: fx.sampleRate, visual: fx.visual, visualShape: "ramp", events: fx.events }); + for (const p of r.pairs) { assert.ok(p.lagHighMs - p.lagLowMs > 100, `interval ${p.lagHighMs - p.lagLowMs} ms`); assert.equal(p.verdict, "borderline"); } + const late = rampFixture({ shape: "linear", rampS: 0.3, fps: 60, offsetMs: 400 }), rl = syncAnalyze({ audio: late.audio, sampleRate: late.sampleRate, visual: late.visual, visualShape: "ramp", pairWindowMs: 450, events: late.events }); + assert.ok(rl.pairs.every((p) => p.verdict === "audio-late-detectable"), "audio 400 ms after the picture starts to move is outside whatever the ramp's shape"); +}); +t("ramp: noise, a steady drift and a lone step give no ramp onsets from noise or drift", () => { + const nf = 600, tt = Float64Array.from({ length: nf }, (_, i) => i / 60); let s = 5; const rand = () => { s = (Math.imul(s, 1664525) + 1013904223) >>> 0; return s / 2 ** 32 - 0.5; }; + assert.equal(visualRampOnsets({ t: tt, v: Float64Array.from(tt, () => 0.2 + 0.01 * rand()) }).onsets.length, 0, "noise"); + assert.equal(visualRampOnsets({ t: tt, v: Float64Array.from(tt, (x) => 0.1 + 0.03 * x + 0.004 * rand()) }).onsets.length, 0, "a drift over the whole clip is not a response"); +}); + // The video path needs ffmpeg (FFMPEG=/path or on PATH); skipped, and said so, when there is none. { const { readVideo } = await import("./sync.mjs"), { execFileSync } = await import("node:child_process"), require_fs = await import("node:fs"), { tmpdir } = await import("node:os"), { join } = await import("node:path"); @@ -252,6 +292,13 @@ t("sourceFrames: the rate is the median frame gap, the stale-frame bound is the for (const p of r.pairs) assert.ok(p.lagHighMs - p.lagLowMs >= v.sourceGapMs * 1.5, `interval ${p.lagHighMs - p.lagLowMs} ms narrower than the capture's own stalls`); assert.match(formatSync(r), /source frames are up to that far apart/); }); + if (have) t("a real ramp-shaped response (Perlines v2 Vector trails, off-grid hits): the step detector finds none, the ramp detector pairs at least 3 of 5, each with a wide interval", () => { + const v = readVideo(new URL("./fixtures/perlines-trails-ramp.webm", import.meta.url).pathname, { ffmpeg: ff }); + const go = (visualShape) => syncAnalyze({ audio: v.audio.samples, sampleRate: v.audio.sampleRate, audioStartS: v.audio.startS, visual: v.luma, visualShape, allowUnpaired: true, visualResampled: true, visualGapMs: v.sourceGapMs }); + assert.equal(go("step").pairs.length, 0); + const r = go("ramp"); assert.ok(r.pairs.length >= 3, `${r.pairs.length} paired`); + for (const p of r.pairs) assert.ok(p.lagHighMs - p.lagLowMs > 100, `interval ${p.lagHighMs - p.lagLowMs} ms`); + }); if (have) t("the CLI carries the capture's frame gaps into its report (feel.mjs plumbing)", () => { const { mkdtempSync, readFileSync: rf } = require_fs, out = join(mkdtempSync(join(tmpdir(), "sync-cli-")), "r.json"); execFileSync("node", [new URL("./feel.mjs", import.meta.url).pathname, "sync", "--video", new URL("./fixtures/perlines-aurora-vfr.webm", import.meta.url).pathname, "--allow-unpaired", "--no-gate", "--json", out], { env: { ...process.env, FFMPEG: ff }, stdio: "ignore" }); -- 2.47.3 From 33af5110ed67b00d5428b4bfe45c82ff2d29e8b7 Mon Sep 17 00:00:00 2001 From: Aqua Date: Wed, 11 Nov 2026 03:35:01 +0000 Subject: [PATCH 2/3] aqua-feel sync ramp: bound the start only from raw frames, never claim early or inside A Soul pass falsified the first ramp detector: the +-60 ms centred average crossed before the picture did (fast rises called detectably late inside the window), the smoothing ran over samples (stretched on variable-frame-rate tracks), and the lower bound was a heuristic presented as a bound (slow-start shapes called early or inside while in sync). Now: time-based smoothing, hiS from the raw frames, and a ramp can be audio-late-detectable or borderline only. Adds the Soul's fast-rise, VFR and a 120-case sweep over shapes, rises, decays, rates, noise and offsets as tests. Co-Authored-By: Claude Sonnet 5.5 --- tools/aqua-feel/SYNC.md | 18 +++++++++-------- tools/aqua-feel/sync.mjs | 24 +++++++++++++++-------- tools/aqua-feel/sync.test.mjs | 37 ++++++++++++++++++++++++++++++++--- 3 files changed, 60 insertions(+), 19 deletions(-) diff --git a/tools/aqua-feel/SYNC.md b/tools/aqua-feel/SYNC.md index 7a99842..4d66f03 100644 --- a/tools/aqua-feel/SYNC.md +++ b/tools/aqua-feel/SYNC.md @@ -76,15 +76,17 @@ Some visuals answer a sound with a slow swell (a scene brightening over a few hu (`step` found 0 of 5 hits on `fixtures/perlines-trails-ramp.webm`; `ramp` paired 3). `--shape ramp` takes the track's rise over 300 ms as the novelty and picks its peaks (at least 15% of the track's range, 6 noise sigmas, at least 500 ms apart). For each it finds the quiet level before the rise (the last sample within 2 noise sigmas of the minimum of the 0.6 s before) and the 20% and 80% crossings of the rise to its top. -**What it claims.** The response started somewhere between the quiet level, backed off by the time from there to the 20% crossing and one frame, and the 20% crossing. The lag interval is that whole range against the audio onset, -so it is far wider than a step's (100 ms and more) and most verdicts are `borderline`. `audio-late-detectable` is sound whatever the ramp's shape (the picture started to move at the latest at the 20% crossing and the sound -still came later than the window); `audio-early-detectable` only if even the widest start estimate lies after the sound. The point value (`visual s`, `lag ms`) is the foot of the line through the 20% and 80% crossings, a -convention that fits a linear ramp and reads early for exponential approach and late for slow-start (smoothstep) shapes; it is not the instant anyone perceives. +**What it claims.** Only this, and only in one direction. The picture had started to change by the first frame whose raw value stood above the quiet level by 20% of the rise (and at least 4 noise sigmas): `hiS`. If the sound still came +later than the window after that frame, the verdict is `audio-late-detectable`; that claim does not depend on the ramp's shape. Everything else is `borderline`, always: **a ramp is never reported `inside-window` or `audio-early-detectable`,** +because the start of a swell cannot be bounded from below by looking at it (a slow start sits under the noise; the same sound can sit 0 to 300 ms after the real start). The report still prints a lag interval, from `hiS` back to the quiet +minimum backed off by the valley-to-crossing time and one frame; the back-off is a heuristic that held on the synthetic sweep, not a bound, and no verdict leans on it. The point value (`visual s`, `lag ms`) is the foot of the line through +the 20% and 80% crossings: it fits a linear ramp, reads early for exponential approach and late for slow-start shapes, and is not the instant anyone perceives. The synthetic sweep (`sync.test.mjs`, 120 shapes x rises 40..800 ms x decays x 24..120 fps x +noise x offsets) never produces a wrong ramp verdict; a Soul pass found two earlier versions that did (a centred 60 ms average crossing before the picture; the lower bound taken as a bound). -**What it cannot claim.** When the viewer sees the swell begin (that is later than the physical start and depends on contrast, size and attention). That the swell was caused by this sound: pairing is by nearness, and a bed that -swells on its own, a scene change or a second sound inside 500 ms gives a false pair. The back-off for a decaying tail is checked on linear, exponential and smoothstep ramps (250 to 450 ms to peak, decay over about a second), not proved: -a response that starts more than one valley-to-20% time before the quiet minimum would escape the interval. Ramps closer than 500 ms merge; ramps under 15% of the track's range, or on a steady drift that rises over the whole clip, are not found. -The 0.15 floor (0.25 missed 7 of 10 Vector trails hits and 0.10 admitted one false onset) and the other constants were set on that one clip. +**What it cannot claim.** That the sound is in sync with a swell (only that it is not detectably late). When the viewer sees the swell begin (later than the physical start; depends on contrast, size and attention). That the swell was caused by this sound: pairing +is by nearness to the foot, and a bed that swells on its own, a scene change or a second sound within 500 ms gives a false pair. Ramps closer than 500 ms merge (so the ambiguity guard, which fires on neighbours closer than twice the pairing window, cannot fire at the default 200 ms +window; the merged hits show up as unpaired audio). Ramps under 15% of the track's range, or on a steady drift that rises over the whole clip, are not found. `--kind flux` with `--shape ramp` means a swell of motion energy; it has not been tried on anything +but one fixture. The constants (300 ms rise window, 15% floor, 6 sigmas, 500 ms gap) were set on Perlines v2's Vector trails and the synthetic shapes only. ## Uncertainty diff --git a/tools/aqua-feel/sync.mjs b/tools/aqua-feel/sync.mjs index afccac4..d7bfb73 100644 --- a/tools/aqua-feel/sync.mjs +++ b/tools/aqua-feel/sync.mjs @@ -200,10 +200,11 @@ export function visualOnsets(track, { kind = "luma", k = 8, minGapS = 0.1 } = {} // [valley - (valley to 20% time) - one frame, crossing20S]: a ramp has no first frame, so the onset carries that span and the verdict is read off it, not off the foot. export function visualRampOnsets(track, { minGapS = 0.5, riseS = 0.3, k = 6 } = {}) { const { t, v } = track, n = v.length, dts = []; for (let i = 1; i < n; i++) dts.push(t[i] - t[i - 1]); - const period = median(dts), w = Math.max(1, Math.round(0.06 / period)); - const sm = new Float64Array(n); for (let i = 0; i < n; i++) { let a = 0, c = 0; for (let q = Math.max(0, i - w); q <= Math.min(n - 1, i + w); q++) { a += v[q]; c++; } sm[i] = a / c; } + const period = median(dts), at = (x) => { let lo = 0, hi = n - 1; while (lo < hi) { const m = (lo + hi) >> 1; if (t[m] < x) lo = m + 1; else hi = m; } return lo; }; + // Moving average over +-60 ms of TIME (not of samples: a variable-frame-rate track must not stretch it), by prefix sums. + const cs = new Float64Array(n + 1); for (let i = 0; i < n; i++) cs[i + 1] = cs[i] + v[i]; + const sm = new Float64Array(n); for (let i = 0; i < n; i++) { const a = at(t[i] - 0.06), b = at(t[i] + 0.06 + 1e-9); const hi = t[b] <= t[i] + 0.06 + 1e-9 ? b : b - 1; sm[i] = (cs[Math.max(hi, i) + 1] - cs[a]) / (Math.max(hi, i) + 1 - a); } const range = Math.max(...v) - Math.min(...v), d1 = Float64Array.from(v.slice(1), (x, i) => Math.abs(x - v[i])), sigma = 1.4826 * median(d1) / Math.SQRT2 + 1e-12; - const at = (x) => { let lo = 0, hi = n - 1; while (lo < hi) { const m = (lo + hi) >> 1; if (t[m] < x) lo = m + 1; else hi = m; } return lo; }; const nov = new Float64Array(n); for (let i = 0; i < n; i++) nov[i] = Math.max(0, sm[Math.min(n - 1, at(t[i] + riseS))] - sm[i]); const r = pickOnsets(nov, t, { k, floor: Math.max(0.15 * range, k * sigma), minGapS, riseFrac: 1 }); r.framePeriodMs = 1000 * period; @@ -212,9 +213,14 @@ export function visualRampOnsets(track, { minGapS = 0.5, riseS = 0.3, k = 6 } = let m = p; while (m > b0 && sm[m] > mn + 2 * sigma) m--; let top = m; for (let i = m; i < Math.min(n, at(o.peakT + riseS + 0.3)); i++) if (sm[i] > sm[top]) top = i; const A = sm[top] - sm[m], cross = (f) => { let i = m; while (i < top && sm[i] < sm[m] + f * A) i++; return i; }; - const i20 = cross(0.2), i80 = cross(0.8), foot = Math.min(t[i20], Math.max(t[m], t[i20] - (t[i80] - t[i20]) / 3)); - // Over a decaying tail the minimum of the sum lands after the true start (a slow ramp cancels the decay before it turns the curve): back off by the valley-to-20% time. - return { t: foot, loS: t[m] - (t[i20] - t[m]) - period, hiS: t[i20], peakT: t[top], strength: A }; + const i20 = cross(0.2), i80 = cross(0.8), foot0 = t[i20] - (t[i80] - t[i20]) / 3; + // The upper bound on the start comes from the raw samples, not the smoothed ones (a centred average crosses before the picture does): the first raw + // frame at or above the quiet level plus 20% of the rise, and no less than 4 noise sigmas, was stamped after the change began. + let hi = m; while (hi < n - 1 && v[hi] < sm[m] + Math.max(0.2 * A, 4 * sigma)) hi++; + const foot = Math.min(t[hi], Math.max(t[m], foot0)); + // Over a decaying tail the minimum of the sum lands after the true start (a slow ramp cancels the decay before it turns the curve): the lower bound backs off + // by the valley-to-crossing time. It is a heuristic, not a bound (a slow start can begin much earlier), and the verdict does not lean on it. + return { t: foot, loS: t[m] - (t[hi] - t[m]) - period, hiS: t[hi], peakT: t[top], strength: A }; }); return r; } @@ -247,7 +253,9 @@ export function syncAnalyze({ audio, sampleRate, audioStartS = 0, visual, visual const a = audioOnsets(audio, sampleRate, { startS: audioStartS, ...gap }), v = visualShape === "ramp" ? visualRampOnsets(visual, gap.minGapS === undefined ? {} : { minGapS: gap.minGapS }) : visualOnsets(visual, { kind: visualKind, ...gap }); // A video resampled to constant frame rate by `fps` snaps each frame to the nearest source frame: half a period more slack on each side. const hopMs = a.resolutionMs, periodMs = Math.max(v.framePeriodMs, visualGapMs), win = pairWindowMs / 1000, snapMs = visualResampled ? periodMs / 2 : 0; - const classify = (lo, hi) => { + const classify = (lo, hi, ramp) => { + // A ramp's start cannot be bounded below by looking at it (a slow start is under the noise), so a ramp is only ever shown late, never early or inside the window. + if (ramp) return lo > prof.lagMs ? "audio-late-detectable" : "borderline"; if (lo >= -prof.leadMs && hi <= prof.lagMs) return "inside-window"; if (lo > prof.lagMs) return "audio-late-detectable"; if (hi < -prof.leadMs) return "audio-early-detectable"; @@ -261,7 +269,7 @@ export function syncAnalyze({ audio, sampleRate, audioStartS = 0, visual, visual const hiT = vo.hiS ?? vo.t, loT = vo.loS ?? vo.t - periodMs / 1000; r.lagLowMs = (ao.t - hiT) * 1e3 - hopMs / 2 - snapMs; r.lagHighMs = (ao.t - loT) * 1e3 + hopMs / 2 + snapMs; } - r.verdict = r.lagMs === null ? (ao ? "no-visual-onset" : vo ? "no-audio-onset" : "no-onsets") : ambiguous ? "ambiguous-pairing" : classify(r.lagLowMs, r.lagHighMs); + r.verdict = r.lagMs === null ? (ao ? "no-visual-onset" : vo ? "no-audio-onset" : "no-onsets") : ambiguous ? "ambiguous-pairing" : classify(r.lagLowMs, r.lagHighMs, vo.hiS !== undefined); return r; }; if (events) { diff --git a/tools/aqua-feel/sync.test.mjs b/tools/aqua-feel/sync.test.mjs index 63f50ea..b6b43f4 100644 --- a/tools/aqua-feel/sync.test.mjs +++ b/tools/aqua-feel/sync.test.mjs @@ -212,13 +212,13 @@ t("sourceFrames: the rate is the median frame gap, the stale-frame bound is the // Ramp-shaped responses: a brightening that starts at the event and takes hundreds of ms to peak, then decays over about a second; a drifting bed and noise. // shapes: linear ramp, exponential approach (steepest at the start), smoothstep (slowest at the start). Truth is the instant the change begins. -const SHAPES = { linear: (u) => Math.min(1, u), exponential: (u) => 1 - Math.exp(-4 * Math.min(1, u)), smoothstep: (u) => { const x = Math.min(1, u); return x * x * (3 - 2 * x); } }; -const rampFixture = ({ shape, rampS, fps, offsetMs = 40, events = [0.5042, 1.9117, 3.2209, 4.6033, 5.9161, 7.2087, 8.5], noise = 0.002 }) => { +const SHAPES = { linear: (u) => Math.min(1, u), exponential: (u) => 1 - Math.exp(-4 * Math.min(1, u)), smoothstep: (u) => { const x = Math.min(1, u); return x * x * (3 - 2 * x); }, quadratic: (u) => Math.min(1, u) ** 2 }; +const rampFixture = ({ shape, rampS, fps, offsetMs = 40, events = [0.5042, 1.9117, 3.2209, 4.6033, 5.9161, 7.2087, 8.5], noise = 0.002, decayS = 0.8 }) => { const fx = makeFixture({ offsetMs, fps, seconds: 10, events }), nf = Math.round(fps * 10), tt = new Float64Array(nf), vv = new Float64Array(nf); let s = 11; const rand = () => { s = (Math.imul(s, 1664525) + 1013904223) >>> 0; return s / 2 ** 32 - 0.5; }; for (let f = 0; f < nf; f++) { const x = f / fps; let y = 0.1 + 0.005 * Math.sin(x * 0.7) + noise * 2 * rand(); - for (const e of events) if (x >= e) { const u = (x - e) / rampS; y += 0.3 * (u < 1 ? SHAPES[shape](u) : Math.exp(-(u - 1) * rampS / 0.8)); } + for (const e of events) if (x >= e) { const u = (x - e) / rampS; y += 0.3 * (u < 1 ? SHAPES[shape](u) : Math.exp(-(u - 1) * rampS / decayS)); } tt[f] = x; vv[f] = y; } return { ...fx, visual: { t: tt, v: vv }, events: events.map((e, i) => ({ t: e, label: `r${i}` })) }; @@ -244,6 +244,37 @@ t("ramp: the interval is wide and says so (a ramp has no first frame); it is jud const late = rampFixture({ shape: "linear", rampS: 0.3, fps: 60, offsetMs: 400 }), rl = syncAnalyze({ audio: late.audio, sampleRate: late.sampleRate, visual: late.visual, visualShape: "ramp", pairWindowMs: 450, events: late.events }); assert.ok(rl.pairs.every((p) => p.verdict === "audio-late-detectable"), "audio 400 ms after the picture starts to move is outside whatever the ramp's shape"); }); +// A ramp verdict may be silent but not wrong. Soul found (a) a centred 60 ms average crosses before a fast picture does, so 'late' was claimed at true lags inside the window, +// and (b) slow-start shapes begin far before they look like they do, so 'early' or 'inside' was claimed at true lags of 0 to 40 ms. Truth is known in every case. +t("ramp: a fast rise or a step is not called detectably late when the sound is inside the window", () => { + for (const [rampS, off] of [[0.04, 98], [0.04, 60], [0.001, 60], [0.08, 90]]) for (const fps of [30, 60]) { + const fx = rampFixture({ shape: "linear", rampS, fps, offsetMs: off, events: [0.5042, 1.9117, 3.2209, 4.6033, 5.9161, 7.2087, 8.5] }); + const r = syncAnalyze({ audio: fx.audio, sampleRate: fx.sampleRate, visual: fx.visual, visualShape: "ramp", events: fx.events }); + for (const p of r.pairs) assert.notEqual(p.verdict, "audio-late-detectable", `${rampS * 1000} ms rise, ${fps} fps, true lag ${off}: [${p.lagLowMs}, ${p.lagHighMs}]`); + } +}); +t("ramp: a variable-frame-rate track does not stretch the smoothing or the bound (gaps up to 100 ms)", () => { + const fx = rampFixture({ shape: "linear", rampS: 0.1, fps: 60, offsetMs: 40 }); let s = 3; const rand = () => { s = (Math.imul(s, 1664525) + 1013904223) >>> 0; return s / 2 ** 32; }; + const keep = []; let next = 0; for (let i = 0; i < fx.visual.t.length; i++) if (fx.visual.t[i] >= next) { keep.push(i); next = fx.visual.t[i] + (rand() < 0.3 ? 0.1 * rand() : 0.017); } + const visual = { t: Float64Array.from(keep, (i) => fx.visual.t[i]), v: Float64Array.from(keep, (i) => fx.visual.v[i]) }; + const r = syncAnalyze({ audio: fx.audio, sampleRate: fx.sampleRate, visual, visualShape: "ramp", events: fx.events, allowUnpaired: true }); + assert.ok(r.pairs.length >= 5); + for (const p of r.pairs) assert.ok(p.verdict !== "audio-late-detectable", `[${p.lagLowMs}, ${p.lagHighMs}] verdict ${p.verdict} at true lag 40`); +}); +t("ramp: sweep of 120 shapes, rises (40-800 ms), decays, frame rates, noise and offsets: a ramp verdict is never wrong", () => { + let s = 19; const rand = () => { s = (Math.imul(s, 1664525) + 1013904223) >>> 0; return s / 2 ** 32; }, pick = (a) => a[Math.floor(rand() * a.length)]; + let claims = 0; + for (let k = 0; k < 120; k++) { + const shape = pick(Object.keys(SHAPES)), rampS = pick([0.04, 0.08, 0.15, 0.3, 0.5, 0.8]), fps = pick([24, 30, 60, 120]), off = pick([-80, -40, 0, 20, 40, 98, 130, 200]), decayS = pick([0.3, 0.8, 2]), noise = pick([0.001, 0.004, 0.01]); + const fx = rampFixture({ shape, rampS, fps, offsetMs: off, decayS, noise, events: [0.5042, 2.1117, 3.7209, 5.3033, 6.9161, 8.5087] }); + const r = syncAnalyze({ audio: fx.audio, sampleRate: fx.sampleRate, visual: fx.visual, visualShape: "ramp", pairWindowMs: 250, allowUnpaired: true, events: fx.events }); + for (const p of r.pairs) { + assert.ok(["borderline", "audio-late-detectable", "ambiguous-pairing", "no-visual-onset"].includes(p.verdict), `${shape}/${rampS}/${fps}fps/${off}: a ramp is never shown inside or early, got ${p.verdict} [${p.lagLowMs}, ${p.lagHighMs}]`); + if (p.verdict === "audio-late-detectable") { claims++; assert.ok(off > PROFILES.default.lagMs, `${shape}/${rampS}/${fps}fps decay ${decayS} noise ${noise}: called late at true lag ${off}: [${p.lagLowMs}, ${p.lagHighMs}]`); } + } + } + assert.ok(claims > 0, "the sweep contains lags the detector can call late"); +}); t("ramp: noise, a steady drift and a lone step give no ramp onsets from noise or drift", () => { const nf = 600, tt = Float64Array.from({ length: nf }, (_, i) => i / 60); let s = 5; const rand = () => { s = (Math.imul(s, 1664525) + 1013904223) >>> 0; return s / 2 ** 32 - 0.5; }; assert.equal(visualRampOnsets({ t: tt, v: Float64Array.from(tt, () => 0.2 + 0.01 * rand()) }).onsets.length, 0, "noise"); -- 2.47.3 From 39b5f96e0a40134af6ba74587ee16a39ba8df862 Mon Sep 17 00:00:00 2001 From: Aqua Date: Wed, 11 Nov 2026 04:00:22 +0000 Subject: [PATCH 3/3] aqua-feel sync ramp: measure and print, never give a verdict A second Soul pass falsified the late claim: one outlier raw frame before the true start moves the upper bound earlier (wrong at true lags 4-97 ms on heavy-tailed noise, 3% outlier frames, keyframe-style spikes), and a bed that swells near a hit takes over the pairing. After the first pass removed the early and inside claims, nothing is left that a ramp can soundly assert about sync, so every ramp pair is borderline and never fails the gate. The estimate and interval are printed for a person to read. Tests: the outlier frame and the swelling bed, both with a true lag the old verdict got wrong. Co-Authored-By: Claude Sonnet 5.5 --- tools/aqua-feel/SYNC.md | 11 +++++------ tools/aqua-feel/sync.mjs | 5 +++-- tools/aqua-feel/sync.test.mjs | 20 +++++++++++++------- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/tools/aqua-feel/SYNC.md b/tools/aqua-feel/SYNC.md index 4d66f03..c2dd33a 100644 --- a/tools/aqua-feel/SYNC.md +++ b/tools/aqua-feel/SYNC.md @@ -76,12 +76,11 @@ Some visuals answer a sound with a slow swell (a scene brightening over a few hu (`step` found 0 of 5 hits on `fixtures/perlines-trails-ramp.webm`; `ramp` paired 3). `--shape ramp` takes the track's rise over 300 ms as the novelty and picks its peaks (at least 15% of the track's range, 6 noise sigmas, at least 500 ms apart). For each it finds the quiet level before the rise (the last sample within 2 noise sigmas of the minimum of the 0.6 s before) and the 20% and 80% crossings of the rise to its top. -**What it claims.** Only this, and only in one direction. The picture had started to change by the first frame whose raw value stood above the quiet level by 20% of the rise (and at least 4 noise sigmas): `hiS`. If the sound still came -later than the window after that frame, the verdict is `audio-late-detectable`; that claim does not depend on the ramp's shape. Everything else is `borderline`, always: **a ramp is never reported `inside-window` or `audio-early-detectable`,** -because the start of a swell cannot be bounded from below by looking at it (a slow start sits under the noise; the same sound can sit 0 to 300 ms after the real start). The report still prints a lag interval, from `hiS` back to the quiet -minimum backed off by the valley-to-crossing time and one frame; the back-off is a heuristic that held on the synthetic sweep, not a bound, and no verdict leans on it. The point value (`visual s`, `lag ms`) is the foot of the line through -the 20% and 80% crossings: it fits a linear ramp, reads early for exponential approach and late for slow-start shapes, and is not the instant anyone perceives. The synthetic sweep (`sync.test.mjs`, 120 shapes x rises 40..800 ms x decays x 24..120 fps x -noise x offsets) never produces a wrong ramp verdict; a Soul pass found two earlier versions that did (a centred 60 ms average crossing before the picture; the lower bound taken as a bound). +**What it claims.** That a swell-shaped response was found near each sound, and where: a point estimate (`visual s`, `lag ms`: the foot of the line through the 20% and 80% crossings of the rise) and a printed interval (from the quiet minimum, backed off by +the valley-to-crossing time, to the first raw frame 20% of the rise above the quiet level). **It makes no claim about sync: every ramp pair is `borderline`, and a ramp can never fail the gate.** Two separate-context Soul passes falsified every stronger claim +the first versions made. The start of a swell cannot be bounded from below by looking at it (a slow start sits under the noise), so "inside the window" and "audio early" were wrong on slow-start shapes; the upper bound is moved earlier by one outlier frame +(a compression spike, a heavy-tailed noise frame), so "audio late" was wrong at true lags of 4 to 97 ms on realistic noise; and a bed that swells near a hit takes over the pairing. The numbers are for a person to read next to the capture, not a verdict. +The synthetic sweep and the outlier-frame and swelling-bed cases are tests that no ramp gets a verdict other than `borderline`. **What it cannot claim.** That the sound is in sync with a swell (only that it is not detectably late). When the viewer sees the swell begin (later than the physical start; depends on contrast, size and attention). That the swell was caused by this sound: pairing is by nearness to the foot, and a bed that swells on its own, a scene change or a second sound within 500 ms gives a false pair. Ramps closer than 500 ms merge (so the ambiguity guard, which fires on neighbours closer than twice the pairing window, cannot fire at the default 200 ms diff --git a/tools/aqua-feel/sync.mjs b/tools/aqua-feel/sync.mjs index d7bfb73..fb94b81 100644 --- a/tools/aqua-feel/sync.mjs +++ b/tools/aqua-feel/sync.mjs @@ -254,8 +254,9 @@ export function syncAnalyze({ audio, sampleRate, audioStartS = 0, visual, visual // A video resampled to constant frame rate by `fps` snaps each frame to the nearest source frame: half a period more slack on each side. const hopMs = a.resolutionMs, periodMs = Math.max(v.framePeriodMs, visualGapMs), win = pairWindowMs / 1000, snapMs = visualResampled ? periodMs / 2 : 0; const classify = (lo, hi, ramp) => { - // A ramp's start cannot be bounded below by looking at it (a slow start is under the noise), so a ramp is only ever shown late, never early or inside the window. - if (ramp) return lo > prof.lagMs ? "audio-late-detectable" : "borderline"; + // A ramp is never given a gate-failing verdict. Two Soul passes falsified every claim a ramp could make: its start cannot be bounded below (a slow start sits under the noise), + // and any upper bound read from the raw frames is moved earlier by one outlier frame, and the pairing by a bed that swells near the hit. The intervals are printed as estimates. + if (ramp) return "borderline"; if (lo >= -prof.leadMs && hi <= prof.lagMs) return "inside-window"; if (lo > prof.lagMs) return "audio-late-detectable"; if (hi < -prof.leadMs) return "audio-early-detectable"; diff --git a/tools/aqua-feel/sync.test.mjs b/tools/aqua-feel/sync.test.mjs index b6b43f4..bc9e667 100644 --- a/tools/aqua-feel/sync.test.mjs +++ b/tools/aqua-feel/sync.test.mjs @@ -242,11 +242,11 @@ t("ramp: the interval is wide and says so (a ramp has no first frame); it is jud const fx = rampFixture({ shape: "smoothstep", rampS: 0.45, fps: 60, offsetMs: 0 }), r = syncAnalyze({ audio: fx.audio, sampleRate: fx.sampleRate, visual: fx.visual, visualShape: "ramp", events: fx.events }); for (const p of r.pairs) { assert.ok(p.lagHighMs - p.lagLowMs > 100, `interval ${p.lagHighMs - p.lagLowMs} ms`); assert.equal(p.verdict, "borderline"); } const late = rampFixture({ shape: "linear", rampS: 0.3, fps: 60, offsetMs: 400 }), rl = syncAnalyze({ audio: late.audio, sampleRate: late.sampleRate, visual: late.visual, visualShape: "ramp", pairWindowMs: 450, events: late.events }); - assert.ok(rl.pairs.every((p) => p.verdict === "audio-late-detectable"), "audio 400 ms after the picture starts to move is outside whatever the ramp's shape"); + assert.ok(rl.pairs.every((p) => p.verdict === "borderline" && p.lagMs > 300), "a ramp 400 ms ahead of the sound is measured but never given a verdict that fails the gate"); }); // A ramp verdict may be silent but not wrong. Soul found (a) a centred 60 ms average crosses before a fast picture does, so 'late' was claimed at true lags inside the window, // and (b) slow-start shapes begin far before they look like they do, so 'early' or 'inside' was claimed at true lags of 0 to 40 ms. Truth is known in every case. -t("ramp: a fast rise or a step is not called detectably late when the sound is inside the window", () => { +t("ramp: a fast rise or a step is never called detectably late", () => { for (const [rampS, off] of [[0.04, 98], [0.04, 60], [0.001, 60], [0.08, 90]]) for (const fps of [30, 60]) { const fx = rampFixture({ shape: "linear", rampS, fps, offsetMs: off, events: [0.5042, 1.9117, 3.2209, 4.6033, 5.9161, 7.2087, 8.5] }); const r = syncAnalyze({ audio: fx.audio, sampleRate: fx.sampleRate, visual: fx.visual, visualShape: "ramp", events: fx.events }); @@ -261,19 +261,25 @@ t("ramp: a variable-frame-rate track does not stretch the smoothing or the bound assert.ok(r.pairs.length >= 5); for (const p of r.pairs) assert.ok(p.verdict !== "audio-late-detectable", `[${p.lagLowMs}, ${p.lagHighMs}] verdict ${p.verdict} at true lag 40`); }); -t("ramp: sweep of 120 shapes, rises (40-800 ms), decays, frame rates, noise and offsets: a ramp verdict is never wrong", () => { +t("ramp: sweep of 120 shapes, rises (40-800 ms), decays, frame rates, noise and offsets: a ramp is never given a claim", () => { let s = 19; const rand = () => { s = (Math.imul(s, 1664525) + 1013904223) >>> 0; return s / 2 ** 32; }, pick = (a) => a[Math.floor(rand() * a.length)]; - let claims = 0; for (let k = 0; k < 120; k++) { const shape = pick(Object.keys(SHAPES)), rampS = pick([0.04, 0.08, 0.15, 0.3, 0.5, 0.8]), fps = pick([24, 30, 60, 120]), off = pick([-80, -40, 0, 20, 40, 98, 130, 200]), decayS = pick([0.3, 0.8, 2]), noise = pick([0.001, 0.004, 0.01]); const fx = rampFixture({ shape, rampS, fps, offsetMs: off, decayS, noise, events: [0.5042, 2.1117, 3.7209, 5.3033, 6.9161, 8.5087] }); const r = syncAnalyze({ audio: fx.audio, sampleRate: fx.sampleRate, visual: fx.visual, visualShape: "ramp", pairWindowMs: 250, allowUnpaired: true, events: fx.events }); for (const p of r.pairs) { - assert.ok(["borderline", "audio-late-detectable", "ambiguous-pairing", "no-visual-onset"].includes(p.verdict), `${shape}/${rampS}/${fps}fps/${off}: a ramp is never shown inside or early, got ${p.verdict} [${p.lagLowMs}, ${p.lagHighMs}]`); - if (p.verdict === "audio-late-detectable") { claims++; assert.ok(off > PROFILES.default.lagMs, `${shape}/${rampS}/${fps}fps decay ${decayS} noise ${noise}: called late at true lag ${off}: [${p.lagLowMs}, ${p.lagHighMs}]`); } + assert.ok(["borderline", "ambiguous-pairing", "no-visual-onset"].includes(p.verdict), `${shape}/${rampS}/${fps}fps/${off}: a ramp gets no gate-failing or inside verdict, got ${p.verdict} [${p.lagLowMs}, ${p.lagHighMs}]`); } } - assert.ok(claims > 0, "the sweep contains lags the detector can call late"); +}); +// The two cases the second Soul pass broke (a raw outlier frame before the true start, and a bed that swells near a hit): the detector may be fooled, the verdict may not follow. +t("ramp: one outlier frame before a hit, or a swelling bed near it, cannot produce a gate-failing verdict", () => { + const fx = rampFixture({ shape: "linear", rampS: 0.02, fps: 60, offsetMs: 80 }), v = Float64Array.from(fx.visual.v), tt = fx.visual.t; + for (const e of fx.events) { const i = Math.round((e.t - 0.2) * 60); v[i] += 0.07; } // one bright frame 200 ms before each hit + const spiked = syncAnalyze({ audio: fx.audio, sampleRate: fx.sampleRate, visual: { t: tt, v }, visualShape: "ramp", events: fx.events, allowUnpaired: true }); + const bed = Float64Array.from(fx.visual.v, (x, i) => x + 0.2 * Math.max(0, Math.sin(2 * Math.PI * tt[i]))); // a 1 Hz swell under the hits + const swelling = syncAnalyze({ audio: fx.audio, sampleRate: fx.sampleRate, visual: { t: tt, v: bed }, visualShape: "ramp", events: fx.events, allowUnpaired: true }); + for (const r of [spiked, swelling]) { assert.ok(r.pairs.length > 0); assert.ok(r.pairs.every((p) => !/detectable$/.test(p.verdict)), JSON.stringify(r.pairs.map((p) => p.verdict))); assert.equal(r.summary.outsideWindow, 0); } }); t("ramp: noise, a steady drift and a lone step give no ramp onsets from noise or drift", () => { const nf = 600, tt = Float64Array.from({ length: nf }, (_, i) => i / 60); let s = 5; const rand = () => { s = (Math.imul(s, 1664525) + 1013904223) >>> 0; return s / 2 ** 32 - 0.5; }; -- 2.47.3