{"_id":"@audio/measure-latency","_rev":"2-7d0d77385ee91eda5bb44e1b8b564984","name":"@audio/measure-latency","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@audio/measure-latency","version":"1.0.0","keywords":["audio","dsp","measurement","latency"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/measure-latency@1.0.0","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"dist":{"shasum":"e6ec89fa0bc9eabb1f27fe1f648b12cfc8a67a36","tarball":"https://registry.npmjs.org/@audio/measure-latency/-/measure-latency-1.0.0.tgz","fileCount":2,"integrity":"sha512-FqfdyYXaE8Df4r9GhiaShdwOOItj1am/9mxwNaNh7+QfeUPYbYdJqWoPRO3TdlN6Ej8mH7R47Y9vZstNR+jx8A==","signatures":[{"sig":"MEUCIA7gkBXyEV1+fmMI/AHhPZzmuCYGLrHj7vrMjNN0H1t6AiEA6+m43XTcsx4/WNjWx6nvSfPFZpFrCHJVFaV1Xd6o+Lw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1627},"main":"latency.js","type":"module","engines":{"node":">=18"},"exports":{".":"./latency.js","./package.json":"./package.json"},"gitHead":"daf713bfbd560c7730c8492bb420abffdbfebcf8","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Round-trip latency — FFT cross-correlation peak between reference and loopback","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/measure-ir":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/measure-latency_1.0.0_1783540373617_0.46262650807281025","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@audio/measure-latency","version":"1.0.1","description":"Round-trip latency — FFT cross-correlation peak between reference and loopback","type":"module","sideEffects":false,"main":"latency.js","exports":{".":"./latency.js","./package.json":"./package.json"},"dependencies":{"@audio/measure-ir":"^1.0.0"},"keywords":["audio","dsp","measurement","latency"],"license":"MIT","author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/audiojs/measure.git","directory":"packages/measure-latency"},"types":"index.d.ts","funding":"https://github.com/sponsors/audiojs","gitHead":"9dcc57aa1a8a1dc669478cc4c9b25f3d28d1dfc0","_id":"@audio/measure-latency@1.0.1","bugs":{"url":"https://github.com/audiojs/measure/issues"},"homepage":"https://github.com/audiojs/measure#readme","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-VmougFHrYik9QsIC+PQID+O7Bit7f6IM3fBE9PrJb9VKxzwpfH5WT63+ExKLaWvi0QyV1rC8p5MeGb8tvj5u+Q==","shasum":"3b8bb3627d5ff6a15b98a9b3b876715dbe8354ff","tarball":"https://registry.npmjs.org/@audio/measure-latency/-/measure-latency-1.0.1.tgz","fileCount":4,"unpackedSize":4072,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICi8o0zZAxzfP5Hgy2Kcl+zFYpqSduib2ZSC1p0sF1pcAiEAybxRsw5SKS1w0DOhwG9I5sx/G0dmmHgrE1PkqcxjI1k="}]},"_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"directories":{},"maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/measure-latency_1.0.1_1783731641996_0.0753588164883805"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:52:53.493Z","modified":"2026-07-11T01:00:42.270Z","1.0.0":"2026-07-08T19:52:53.765Z","1.0.1":"2026-07-11T01:00:42.123Z"},"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","keywords":["audio","dsp","measurement","latency"],"description":"Round-trip latency — FFT cross-correlation peak between reference and loopback","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/measure-latency [![npm](https://img.shields.io/npm/v/@audio/measure-latency)](https://www.npmjs.com/package/@audio/measure-latency) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nRound-trip latency — FFT cross-correlation peak between reference and loopback\n\n```\nnpm install @audio/measure-latency\n```\n\n```js\nimport latency from '@audio/measure-latency'\n```\n\nPlays a reference signal, records the loopback, and locates the cross-correlation peak between them via FFT — a single play-record pass gives sample-exact round-trip delay (driver + interface + cable).\n\n```js\nlet { samples, seconds, confidence } = latency(recorded, reference, { fs })\n```\n\n| Param | Default | |\n|---|---|---|\n| `recorded` | — | the loopback recording (`Float32Array`) |\n| `reference` | — | the signal that was played (`Float32Array`) |\n| `fs` | `44100` | sample rate |\n\nReturns:\n\n| Field | | |\n|---|---|---|\n| `samples` | `number` | round-trip delay of `recorded` relative to `reference`, in samples |\n| `seconds` | `number` | `samples / fs` |\n| `confidence` | `number` | cross-correlation peak sharpness — peak magnitude over mean magnitude; higher means a more reliable peak |\n\n**Use when:** calibrating a play-record loopback for latency compensation before other timing-sensitive measurements (IR capture, alignment).\n\n---\n\nPart of [@audio/measure](https://github.com/audiojs/measure) — the measure family umbrella.\n\nMIT © [audiojs](https://github.com/audiojs)\n","readmeFilename":"README.md","homepage":"https://github.com/audiojs/measure#readme","repository":{"type":"git","url":"git+https://github.com/audiojs/measure.git","directory":"packages/measure-latency"},"bugs":{"url":"https://github.com/audiojs/measure/issues"}}