Skip to content

idsinge/latency-test-examples

Repository files navigation

latency-test-examples

Host applications for the <latency-test> Web Component (@adasp/latency-test) — a tool that measures browser round-trip audio latency using an MLS signal and cross-correlation.

Everything in this repository consumes the published npm package (or CDN build) — never the component's local source. Two tiers:

Framework integration examples (examples/)

One small app per framework, mirroring the corresponding docs example page and verifying it end-to-end against the installed published package.

Live demos

Framework Live demo StackBlitz
JavaScript Vanilla JS (npm) live open
JavaScript Vanilla JS (CDN) live
React React live open
Vue Vue live open
Svelte Svelte live open
Angular Angular live open
Next.js Next.js live open

StackBlitz works fully in Firefox (mic permission included), and in Chrome for Angular. The other five apps fail in Chrome due to a WebContainer native-bindings incompatibility: Vite/Rolldown (Vanilla JS, React, Vue, Svelte) and Turbopack (Next.js) both require native bindings unavailable in WebContainers — unrelated to this project.

Verification status

All 6 apps verified against @adasp/latency-test@1.2.0. Full results, environment, and findings: VERIFICATION.md.

Framework Dev Prod build Date
Vanilla JS (npm + CDN) 2026-06-15
React 2026-06-15
Vue 2026-06-15
Svelte 2026-06-15
Angular 2026-06-16
Next.js 2026-06-16

Re-verifying an example app

Use verify.sh at the repo root to wire a harness into any example app for a manual browser check session and clean up automatically when done. See verification/README.md for usage and the script's self-test checklist.

./verify.sh <framework>   # vanilla-js | react | vue | svelte | angular | nextjs

Latency-compensation demos (demos/)

Quarantined until Tier 1 is complete: no work happens in demos/ — not even scaffolding — until the verification record above is fully passed and Phase 6 is signed off in the component repo: idsinge/latency-test#30.

Small multitrack editors demonstrating that the measured round-trip latency can align a recording: a default metronome track is recorded through the microphone while wearing headphones — uncompensated, the recording lands late by the round-trip latency (audible flam, visible waveform offset); after running the latency test, the measured value shifts the recording into alignment.

Reference implementation: the Hi-Audio fork of waveform-playlist, which already applies a measured latency value to recorded tracks (MediaRecorder-based).

Roadmap

Demo Target library Status
waveform-playlist (React) naomiaro/waveform-playlist planned
dawcore (Web Components) @dawcore/* migration spec planned
openDAW andremichelle/openDAW stretch goal
WAM Online Studio Brotherta/wam-studio stretch goal

Running locally

Each app is self-contained: cd into its folder and follow its own README. Bootstrap a fresh scaffold with npm install; verification runs use npm ci once the lockfile exists (this is what the registry-consumption check requires). All apps require a microphone and run on localhost or HTTPS.

Acknowledgments

Hi-Audio

This project is developed as part of Hybrid and Interpretable Deep Neural Audio Machines, funded by the European Research Council (ERC) under the European Union's Horizon Europe research and innovation programme (grant agreement No. 101052978).

Component source, API documentation, research background, full citation, and acknowledgments are in the component repository.