{"_id":"@adasp/latency-test","_rev":"6-c0c561735b71ec4223a6323059da21f7","name":"@adasp/latency-test","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@adasp/latency-test","version":"1.0.0","keywords":["web-component","audio","latency","mls","audioworklet","webaudio"],"author":{"name":"Hi-Audio"},"license":"MIT","_id":"@adasp/latency-test@1.0.0","maintainers":[{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"}],"homepage":"https://idsinge.github.io/latency-test/","bugs":{"url":"https://github.com/idsinge/latency-test/issues"},"dist":{"shasum":"7c5a814a1469d4aecfda0a43746a44d07738622d","tarball":"https://registry.npmjs.org/@adasp/latency-test/-/latency-test-1.0.0.tgz","fileCount":8,"integrity":"sha512-jMObLva7mnO2SF28jSsF9YSdzlY7l98cyclnk+7Wn+t9aNGFyW/v58NnePDUBYSevexNUU/CjVQaiwIEqmjUKw==","signatures":[{"sig":"MEYCIQDSjWXgg8oiCdhGgSd9xHypXd550wr6nq1I3acxN1ij6AIhAKs7X54qbTi5KD65ielTypIHjDqXjlkzI/H6EEgCU4w1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130834},"main":"./dist/latency-test.esm.js","type":"module","types":"dist/index.d.ts","unpkg":"./dist/latency-test.iife.js","module":"./dist/latency-test.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/latency-test.esm.js","default":"./dist/latency-test.esm.js"}},"gitHead":"c8d0225907aceebe396d46407660fa65f10204f7","scripts":{"dev":"npx -y serve src/","demo":"npx serve .","test":"node --test tests/mls.test.js tests/worker.test.js","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs","prepublishOnly":"npm run build:component","build:component":"node scripts/build-component.mjs","build:component:dev":"node scripts/build-component.mjs --dev"},"_npmUser":{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"},"jsdelivr":"./dist/latency-test.iife.js","repository":{"url":"git+https://github.com/idsinge/latency-test.git","type":"git"},"_npmVersion":"8.19.2","description":"Web Component for measuring browser round-trip audio latency using MLS, chirp, or Golay signals.","directories":{},"sideEffects":true,"_nodeVersion":"18.12.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.0","vitepress":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/latency-test_1.0.0_1780392997152_0.055650584820666094","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@adasp/latency-test","version":"1.0.1","keywords":["web-component","audio","latency","mls","audioworklet","webaudio"],"author":{"name":"Hi-Audio"},"license":"MIT","_id":"@adasp/latency-test@1.0.1","maintainers":[{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"}],"homepage":"https://idsinge.github.io/latency-test/","bugs":{"url":"https://github.com/idsinge/latency-test/issues"},"dist":{"shasum":"9758ba5ca9a65265a910b463776479a92adccb5b","tarball":"https://registry.npmjs.org/@adasp/latency-test/-/latency-test-1.0.1.tgz","fileCount":8,"integrity":"sha512-ySm6VP0DBbajQapM+zB1dJCr+9TyjHTiPEjk3xtRD1jDIwtbT3kNzV5Yp5Pz7ft9uJRbjPzv2ID9ptbuJgrO7A==","signatures":[{"sig":"MEUCIQCKlzN9k3aj5oQ+7DMWu/5x4DjNBZRRr59mms0KqD4HkAIgWn5ztd0QhTTJXV27LHjaIvcSUnM+CARUCAS2Q1II6ro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134104},"main":"./dist/latency-test.esm.js","type":"module","types":"dist/index.d.ts","unpkg":"./dist/latency-test.iife.js","module":"./dist/latency-test.esm.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/latency-test.esm.js","default":"./dist/latency-test.esm.js"}},"gitHead":"2472359e1f168f7e3eeb5dee222f82f9ef087435","scripts":{"dev":"npx -y serve src/","demo":"npx serve .","test":"node --test tests/mls.test.js tests/worker.test.js","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs","prepublishOnly":"npm run build:component","build:component":"node scripts/build-component.mjs","build:component:dev":"node scripts/build-component.mjs --dev"},"_npmUser":{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"},"jsdelivr":"./dist/latency-test.iife.js","repository":{"url":"git+https://github.com/idsinge/latency-test.git","type":"git"},"_npmVersion":"8.19.2","description":"Web Component for measuring browser round-trip audio latency using an MLS signal.","directories":{},"sideEffects":true,"_nodeVersion":"18.12.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.0","vitepress":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/latency-test_1.0.1_1780401185302_0.7410695578702569","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@adasp/latency-test","version":"1.0.2","keywords":["web-component","audio","latency","mls","audioworklet","webaudio"],"author":{"name":"Hi-Audio"},"license":"MIT","_id":"@adasp/latency-test@1.0.2","maintainers":[{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"}],"homepage":"https://idsinge.github.io/latency-test/","bugs":{"url":"https://github.com/idsinge/latency-test/issues"},"dist":{"shasum":"52dd241eab5a3f1bbc43287925a8bab13f2eefcd","tarball":"https://registry.npmjs.org/@adasp/latency-test/-/latency-test-1.0.2.tgz","fileCount":8,"integrity":"sha512-e3W/D1hjgDSHsitA4YnsY82shYs+udtlE/BJSjEnOstTW89TMG/2Z5njQRlOsaICfeTQAcToQSUrWTwfcvsOKA==","signatures":[{"sig":"MEYCIQDpqKRdLKNIXOuRxhzLQVQThEl/pu5NxF7To67J7+k7AAIhAMqEq37Mur9ujLVDYgKLCTC2u+aZWg15sjg35+4F1lfa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131851},"main":"./dist/latency-test.esm.js","type":"module","types":"dist/index.d.ts","unpkg":"./dist/latency-test.iife.js","module":"./dist/latency-test.esm.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/latency-test.esm.js","default":"./dist/latency-test.esm.js"}},"gitHead":"c0e8e6a0c41d0e238d16b23f9aef9b259de76043","scripts":{"dev":"npx -y serve src/","demo":"npx serve .","test":"node --test tests/mls.test.js tests/worker.test.js","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs","prepublishOnly":"npm run build:component","build:component":"node scripts/build-component.mjs","build:component:dev":"node scripts/build-component.mjs --dev"},"_npmUser":{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"},"jsdelivr":"./dist/latency-test.iife.js","repository":{"url":"git+https://github.com/idsinge/latency-test.git","type":"git"},"_npmVersion":"8.19.2","description":"Web Component for measuring browser round-trip audio latency using an MLS signal.","directories":{},"sideEffects":true,"_nodeVersion":"18.12.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.0","vitepress":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/latency-test_1.0.2_1780501387674_0.612119040881542","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@adasp/latency-test","version":"1.1.0","keywords":["web-component","audio","latency","mls","audioworklet","webaudio"],"author":{"name":"Hi-Audio"},"license":"MIT","_id":"@adasp/latency-test@1.1.0","maintainers":[{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"}],"homepage":"https://idsinge.github.io/latency-test/","bugs":{"url":"https://github.com/idsinge/latency-test/issues"},"dist":{"shasum":"1672b7fdd57b22b4a7449fce2937f21af5223877","tarball":"https://registry.npmjs.org/@adasp/latency-test/-/latency-test-1.1.0.tgz","fileCount":8,"integrity":"sha512-BK1oSrJd9xRCn4S1jSllEvAHVFjSO+y8dUDJtXnLJ/oqQjDJAmwOi58nmZ5vT3xUaysvKqJnANR0TSzQF4QdUA==","signatures":[{"sig":"MEYCIQCjAuy1rROApxLbDb43aqQJqjj8nyO0GeVzimMPvk58cgIhAIBGsshqog8tkMwcOPTJWWN+u48nJ5M9NPyCnM+22nrB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150918},"main":"./dist/latency-test.esm.js","type":"module","types":"dist/index.d.ts","unpkg":"./dist/latency-test.iife.js","module":"./dist/latency-test.esm.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/latency-test.esm.js","default":"./dist/latency-test.esm.js"}},"gitHead":"f6045044b6feeb800a1381be7c2129f549e5e4af","scripts":{"dev":"npx -y serve src/","demo":"npx serve .","test":"node --test tests/mls.test.js tests/worker.test.js","docs:dev":"vitepress dev docs","typecheck":"tsc --noEmit","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs","prepublishOnly":"npm run build:component","build:component":"node scripts/build-component.mjs","build:component:dev":"node scripts/build-component.mjs --dev"},"_npmUser":{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"},"jsdelivr":"./dist/latency-test.iife.js","repository":{"url":"git+https://github.com/idsinge/latency-test.git","type":"git"},"_npmVersion":"8.19.2","description":"Web Component for measuring browser round-trip audio latency using an MLS signal.","directories":{},"sideEffects":true,"_nodeVersion":"18.12.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.0","vitepress":"^1.6.0","typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/latency-test_1.1.0_1780673154434_0.1190819508814629","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@adasp/latency-test","version":"1.2.0","keywords":["web-component","audio","latency","mls","audioworklet","webaudio"],"author":{"name":"Hi-Audio"},"license":"MIT","_id":"@adasp/latency-test@1.2.0","maintainers":[{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"}],"homepage":"https://idsinge.github.io/latency-test/","bugs":{"url":"https://github.com/idsinge/latency-test/issues"},"dist":{"shasum":"0d55ff4ae5ef27905c562320d9103891c4df91d3","tarball":"https://registry.npmjs.org/@adasp/latency-test/-/latency-test-1.2.0.tgz","fileCount":13,"integrity":"sha512-5x9DiX0Kb8QT4YO4rqV8paHEARzRmwz5XBSHQ3wOE05ta2BkHxOKPzsCJDtABtwmkN2/JpJ4n3prp8UXITBGlA==","signatures":[{"sig":"MEUCIQCwX9HlkmCAyrnaCnCjrwcLLVyMDmUf0pAXOcpFKiTEKgIgNSX3DdADe6jkIiVxYWy84MO6LtXTiW2GOqlXELD5a64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":296446},"main":"./dist/latency-test.esm.js","type":"module","types":"dist/index.d.ts","unpkg":"./dist/latency-test.iife.js","module":"./dist/latency-test.esm.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/latency-test.esm.js","default":"./dist/latency-test.esm.js"}},"gitHead":"67476465afd2075887f717ac7a801198f61e5917","scripts":{"dev":"npx -y serve src/","demo":"npx serve .","test":"node --test tests/mls.test.js tests/worker.test.js","docs:dev":"vitepress dev docs","typecheck":"tsc --noEmit","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs","prepublishOnly":"npm run build:component:all","build:component":"node scripts/build-component.mjs","build:component:all":"npm run build:component && npm run build:component:legacy","build:component:dev":"node scripts/build-component.mjs --dev","build:component:legacy":"node scripts/build-component.mjs --legacy"},"_npmUser":{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"},"jsdelivr":"./dist/latency-test.iife.js","repository":{"url":"git+https://github.com/idsinge/latency-test.git","type":"git"},"_npmVersion":"8.19.2","description":"Web Component for measuring browser round-trip audio latency using an MLS signal.","directories":{},"sideEffects":true,"_nodeVersion":"18.12.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.0","vitepress":"^1.6.0","typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/latency-test_1.2.0_1781261550693_0.6784714956082947","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@adasp/latency-test","version":"1.2.1","description":"Web Component for measuring browser round-trip audio latency using an MLS signal.","scripts":{"test":"node --test tests/mls.test.js tests/worker.test.js","typecheck":"tsc --noEmit","dev":"npx -y serve src/","demo":"npx serve .","build:component":"node scripts/build-component.mjs","build:component:dev":"node scripts/build-component.mjs --dev","build:component:legacy":"node scripts/build-component.mjs --legacy","build:component:all":"npm run build:component && npm run build:component:legacy","prepublishOnly":"npm run build:component:all","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs"},"type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/latency-test.esm.js","default":"./dist/latency-test.esm.js"},"./legacy":{"types":"./dist/index.d.ts","import":"./dist/latency-test.legacy.esm.js","default":"./dist/latency-test.legacy.esm.js"}},"module":"./dist/latency-test.esm.js","main":"./dist/latency-test.esm.js","unpkg":"./dist/latency-test.iife.js","jsdelivr":"./dist/latency-test.iife.js","engines":{"node":">=18"},"sideEffects":true,"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/idsinge/latency-test.git"},"keywords":["web-component","audio","latency","mls","audioworklet","webaudio"],"author":{"name":"Hi-Audio"},"license":"MIT","bugs":{"url":"https://github.com/idsinge/latency-test/issues"},"homepage":"https://idsinge.github.io/latency-test/","devDependencies":{"esbuild":"^0.28.1","typescript":"^5","vitepress":"^1.6.0"},"overrides":{"vite":"6.4.3","esbuild":"^0.28.1"},"_id":"@adasp/latency-test@1.2.1","gitHead":"28eecab7c7f617facc7508063ba0bea16531a987","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-aKAZvi9n+UQh2nSvVyEtu3k2upOK1lnVKaO3DPDiLBdUbd+7dqYVnZPIIkqEXV7n7r8Ya43y1i3++Ncukyp2PA==","shasum":"c874412587f40ca6d61fcddaf0414129c10baa4f","tarball":"https://registry.npmjs.org/@adasp/latency-test/-/latency-test-1.2.1.tgz","fileCount":13,"unpackedSize":297784,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC7nM6WjiCN9bqqIx8BxnXmenalVC84wBcQMlovV2eUEgIgbxCSwVUvlgMNUmgYimfiV3svtTTc3OFknMDeF2bdwJY="}]},"_npmUser":{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"},"directories":{},"maintainers":[{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/latency-test_1.2.1_1781695359123_0.778602563414339"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-02T09:36:36.966Z","modified":"2026-06-17T11:22:39.366Z","1.0.0":"2026-06-02T09:36:37.290Z","1.0.1":"2026-06-02T11:53:05.458Z","1.0.2":"2026-06-03T15:43:07.825Z","1.1.0":"2026-06-05T15:25:54.573Z","1.2.0":"2026-06-12T10:52:30.840Z","1.2.1":"2026-06-17T11:22:39.267Z"},"bugs":{"url":"https://github.com/idsinge/latency-test/issues"},"author":{"name":"Hi-Audio"},"license":"MIT","homepage":"https://idsinge.github.io/latency-test/","keywords":["web-component","audio","latency","mls","audioworklet","webaudio"],"repository":{"type":"git","url":"git+https://github.com/idsinge/latency-test.git"},"description":"Web Component for measuring browser round-trip audio latency using an MLS signal.","maintainers":[{"name":"hiaudioparis","email":"hiaudioparis@gmail.com"}],"readme":"# @adasp/latency-test web component\n\n[![npm](https://img.shields.io/npm/v/@adasp/latency-test)](https://www.npmjs.com/package/@adasp/latency-test)\n\nA Web Component for measuring browser round-trip audio latency in Web Audio applications.\n\n## What it does\n\n<img src=\"https://raw.githubusercontent.com/idsinge/latency-test/main/assets/MLS_Test.png\" alt=\"MLS round-trip latency measurement diagram\" width=\"700\"/>\n\n- Measures round-trip browser audio latency using an [MLS (Maximum Length Sequence)](https://en.wikipedia.org/wiki/Maximum_length_sequence) signal and cross-correlation\n- Designed for integration into Web Audio and DAW-like web applications\n- Headless-first API: `start()` / `stop()` methods and custom events — no built-in UI\n- Reports latency in milliseconds and a reliability ratio in dB (values above `18 dB` indicate a trustworthy measurement)\n\n## Usage\n\n```html\n<latency-test id=\"lt\"></latency-test>\n<button id=\"btn\">Test</button>\n\n<script type=\"module\">\n  import '@adasp/latency-test' // npm / bundler — for CDN usage see docs/install.md\n\n  const lt = document.getElementById('lt')\n\n  lt.addEventListener('latency-result', (e) => {\n    console.log(e.detail.latency, 'ms — ratio:', e.detail.ratio, 'dB')\n  })\n\n  // audioContext and inputStream must be assigned before start() — create them from a user gesture\n  document.getElementById('btn').addEventListener('click', async () => {\n    if (!lt.audioContext) {\n      lt.audioContext = new AudioContext({ latencyHint: 0 })\n      lt.inputStream = await navigator.mediaDevices.getUserMedia({ audio: { echoCancellation: false, noiseSuppression: false, autoGainControl: false } })\n    }\n    lt.start()\n  })\n</script>\n```\n\nMultiple consecutive tests with aggregate statistics:\n\n```html\n<latency-test id=\"lt\" number-of-tests=\"5\"></latency-test>\n<button id=\"btn\">Run 5 tests</button>\n\n<script type=\"module\">\n  import '@adasp/latency-test' // npm / bundler — for CDN usage see docs/install.md\n\n  const lt = document.getElementById('lt')\n\n  lt.addEventListener('latency-result', (e) => {\n    console.log('run:', e.detail.latency, 'ms')\n  })\n\n  lt.addEventListener('latency-complete', (e) => {\n    const { mean, std, min, max } = e.detail\n    console.log(`mean ${mean.toFixed(2)} ms · std ${std.toFixed(2)} · min ${min.toFixed(2)} · max ${max.toFixed(2)}`)\n  })\n\n  document.getElementById('btn').addEventListener('click', async () => {\n    if (!lt.audioContext) {\n      lt.audioContext = new AudioContext({ latencyHint: 0 })\n      lt.inputStream = await navigator.mediaDevices.getUserMedia({ audio: { echoCancellation: false, noiseSuppression: false, autoGainControl: false } })\n    }\n    lt.start()\n  })\n</script>\n```\n\n## Documentation\n\nFull integration docs are published via VitePress (see `docs/`):\n\n- **Docs site:** https://idsinge.github.io/latency-test/\n- **API reference** — attributes, methods, events, algorithm constants: `docs/api.md`\n- **Framework examples** — Vanilla JS, React, Vue, Svelte, Angular, Next.js: `docs/examples/`\n- **Installation** — npm, CDN, AudioContext sharing: `docs/install.md`\n- **Live demo:** https://idsinge.github.io/latency-test/demo/\n- **Dev & research pages:** https://idsinge.github.io/latency-test/dev/ (test pages and experiments, including the MediaRecorder 2ch and 1ch experiments)\n\n## Local development\n\nRun the component dev pages (source, no build needed):\n\n```bash\nnpm install\nnpm run dev\n# open http://localhost:3000\n```\n\nRun the demo against the built bundle:\n\n```bash\nnpm run build:component:legacy  # demo uses the legacy build (Safari 14 / Chrome 78 compatible)\nnpm run demo\n# open http://localhost:3000/demo/\n```\n\nRun the documentation site:\n\n```bash\nnpm run docs:dev\n# open http://localhost:5173\n```\n\nOther commands:\n\n```bash\nnpm test                          # run unit tests (Node 18+, no install needed)\nnpm run build:component           # build the component bundle (dist/)\nnpm run build:component:legacy    # legacy build: lowers private fields + optional chaining for Safari 14 / Chrome 78\nnpm run docs:build                # build VitePress docs\nnpm run docs:preview              # preview built docs locally\n```\n\n**Requirement:** Node.js v18 or above (minimum tested). Development is pinned to Node 22 via `.nvmrc`; the docs CI deploy uses Node 24.\n\n## Repository scope\n\nThis repository contains the prototype implementation, full package planning (see `agents/CLAUDE_REVIEW.md`), and the VitePress documentation site. The root README is intentionally concise — detailed integration guidance lives in `docs/`. \n\n## Roadmap\n\n- [x] Prototype: MLS signal generation, cross-correlation via Web Worker, MediaRecorder capture\n- [x] Web Component refactor: `<latency-test>` Custom Element, Shadow DOM, instance-based architecture\n- [x] AudioWorklet backend: `recording-mode=\"audioworklet\"` — dual-channel raw PCM capture via dedicated AudioWorklet processor\n- [x] `recording-mode=\"mediarecorder\"` upgraded to 2-channel (ChannelMergerNode + MediaStreamDestinationNode, no start-timing bias); `recording-mode=\"mediarecorder-1ch\"` available as 1-channel fallback for browsers that downmix stereo to mono (Phase 3b complete)\n- [x] npm package publication as `@adasp/latency-test`\n- [ ] Additional signal types: chirp (logarithmic sine sweep), Golay complementary sequences\n\n## Research origin\n\nThis project originates from research on browser round-trip audio latency presented at [WAC 2025](https://wac-2025.ircam.fr/). The original proof-of-concept app remains available at [gilpanal/weblatencytest](https://github.com/gilpanal/weblatencytest). This repository is the Web Component development branch. The same measurement method is also used in the [Hi-Audio online platform](https://hiaudio.fr).\n\n> Gil Panal, J. M., Richard, G., & David, A. (2025). *A Maximum Length Sequence–Based Method for Robust Round-Trip Latency Estimation in online Digital Audio Workstations.* WAC 2025. https://doi.org/10.5281/zenodo.17642262\n\n---\n\n## More info about Hi-Audio\n\n1. Article at EURASIP Journal on Audio, Speech, and Music Processing: [https://link.springer.com/article/10.1186/s13636-026-00459-0](https://link.springer.com/article/10.1186/s13636-026-00459-0)\n2. Hi-Audio online platform: https://hiaudio.fr\n3. News: https://hiaudio.fr/static/news.html\n4. Hi-Audio web-app repository: https://github.com/idsinge/hiaudio_webapp\n5. Python/Google Colab notebook for MLS-based latency estimation: https://gist.github.com/gilpanal/f6a64a8fe797190bba22123dfea29611\n\n---\n\n## Acknowledgments\n\nThis work is developed as part of the project *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).\n\n<img src=\"https://raw.githubusercontent.com/idsinge/latency-test/main/assets/ERC_logo.png\" alt=\"European Research Council logo\" width=\"250\"/>\n\nWe also thank [Louis Bahrman](https://github.com/Louis-Bahrman) for his collaboration on this project, including his contributions to the [Python/Google Colab notebook for MLS-based latency estimation](https://gist.github.com/gilpanal/f6a64a8fe797190bba22123dfea29611).\n\n---\n\n## How to cite\n\nIf you use or reference the data or findings from this repository, please cite the published conference paper. You may also cite the repository directly.\n\n> Gil Panal, J. M., Richard, G., & David, A. (2025). A Maximum Length Sequence–Based Method for Robust Round-Trip Latency Estimation in online Digital Audio Workstations. In *Proceedings of the Web Audio Conference (WAC 2025)*. https://doi.org/10.5281/zenodo.17642262\n\n**BibTeX:**\n\n```bibtex\n@inproceedings{GilPanal2025wac,\n  author    = {Gil Panal, Jos{\\'e} M. and Richard, Ga{\\\"e}l and David, Aur{\\'e}lien},\n  title     = {A Maximum Length Sequence--Based Method for Robust Round-Trip Latency Estimation in online Digital Audio Workstations},\n  booktitle = {Proceedings of the Web Audio Conference (WAC 2025)},\n  year      = {2025},\n  doi       = {10.5281/zenodo.17642262},\n  url       = {https://doi.org/10.5281/zenodo.17642262}\n}\n```\n\nA preprint version is also available at: [https://hal.science/hal-05154354](https://hal.science/hal-05154354)\n\n**Repository citation:**\n\n> Gil Panal, J. M., Richard, G., & David, A. (2024). *weblatencytest* [Software repository]. GitHub. https://github.com/gilpanal/weblatencytest\n\n```bibtex\n@misc{GilPanal2024weblatencytest,\n  author = {Gil Panal, Jos{\\'e} M. and Richard, Ga{\\\"e}l and David, Aur{\\'e}lien},\n  title  = {weblatencytest},\n  year   = {2024},\n  url    = {https://github.com/gilpanal/weblatencytest}\n}\n```\n\n---\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).  \nCopyright (c) 2024 Hi-Audio.\n","readmeFilename":"README.md"}