{"_id":"@audio/beat-track","_rev":"4-1749bce54bfd379fb31ae0e052c7ea39","name":"@audio/beat-track","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@audio/beat-track","version":"1.0.0","keywords":["audio","dsp","beat","beat-tracking"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/beat-track@1.0.0","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"homepage":"https://github.com/audiojs/beat/tree/main/packages/beat-track","bugs":{"url":"https://github.com/audiojs/beat/issues"},"dist":{"shasum":"5d0d466553cf00f635b319fca700f236a7408e72","tarball":"https://registry.npmjs.org/@audio/beat-track/-/beat-track-1.0.0.tgz","fileCount":2,"integrity":"sha512-aEQ0WH40eHoI1qQkzz7IWm0Wqw0CCRdgxiE5e6HX7Tu8f8OsX8mBH4LuaCNa64+avgAi5x8cvNZhzDbyrdNY4g==","signatures":[{"sig":"MEUCIGMaluD5ptyz4rBuqUoWhcn04/ecrEEIR/1oJAIrpKCuAiEAiTEMZZIQ2rm3r1aj9g04oqu8nOjRq4dJhfAxC+6ddwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4897},"main":"track.js","type":"module","engines":{"node":">=18"},"exports":{".":"./track.js","./package.json":"./package.json"},"gitHead":"653ce6989e55651302d69179a749054892d12f41","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/beat.git","type":"git","directory":"packages/beat-track"},"_npmVersion":"11.12.1","description":"Dynamic programming beat tracker","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/beat-core":"^1.0.0","@audio/beat-tempo":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/beat-track_1.0.0_1783539957327_0.015130156874252565","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@audio/beat-track","version":"1.0.1","keywords":["audio","dsp","beat","beat-tracking"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/beat-track@1.0.1","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"homepage":"https://github.com/audiojs/beat/tree/main/packages/beat-track","bugs":{"url":"https://github.com/audiojs/beat/issues"},"dist":{"shasum":"6102b41ac03ddcf37c436f4d71cac16e2c626919","tarball":"https://registry.npmjs.org/@audio/beat-track/-/beat-track-1.0.1.tgz","fileCount":2,"integrity":"sha512-o68NAPSgLuMas9J8RTwZMv+Q/WIuwPQXwhbhWBW7ed3odAt40ciiD6xzmmO/m4dvEkMrbZ5Us6N+Z2XfVlQX3Q==","signatures":[{"sig":"MEYCIQCRfLyRop8lVuPn6GH50O53QNVmnse9WH99eyVSJBSlLgIhAIi+PlYt2Jz+g+6c1tKxJphOQrnTSK596tV8K8kms12J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4957},"main":"track.js","type":"module","engines":{"node":">=18"},"exports":{".":"./track.js","./package.json":"./package.json"},"gitHead":"e0a00eafdb367594f4ecc193e4ea5a1b836dd17f","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/beat.git","type":"git","directory":"packages/beat-track"},"_npmVersion":"11.12.1","description":"Dynamic programming beat tracker","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/onset":"^1.0.0","@audio/beat-core":"^1.0.0","@audio/beat-tempo":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/beat-track_1.0.1_1783605007443_0.8500289874239251","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@audio/beat-track","version":"1.0.2","keywords":["audio","dsp","beat","beat-tracking"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/beat-track@1.0.2","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"homepage":"https://github.com/audiojs/beat/tree/main/packages/beat-track","bugs":{"url":"https://github.com/audiojs/beat/issues"},"dist":{"shasum":"0c833fba1fb6da6637e1fce059975a5dffd388f6","tarball":"https://registry.npmjs.org/@audio/beat-track/-/beat-track-1.0.2.tgz","fileCount":3,"integrity":"sha512-3XDIktUxKqqAYdYXe9Ldp27QrX9DTs7TRajCfBDvAO6HGnG+Ua0Ixfu7hwTyPwWBJfaOwzZvAgJt4EiA/7oyOg==","signatures":[{"sig":"MEUCIAIY9ZZgyIgl0YwZbpXQ+cO8a1NXUZ2PlYCXpF/7BjeeAiEA4V9boa4+KIppuigLC2g5eKHcfHeU2hzcS7fBEbCUUrY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5879},"main":"track.js","type":"module","engines":{"node":">=18"},"exports":{".":"./track.js","./package.json":"./package.json"},"gitHead":"af41a920f27b1358af8632420c8a54ad14a36b4f","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/beat.git","type":"git","directory":"packages/beat-track"},"_npmVersion":"11.12.1","description":"Dynamic programming beat tracker","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/onset":"^1.0.0","@audio/beat-tempo":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/beat-track_1.0.2_1783623695452_0.7021465111289644","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@audio/beat-track","version":"1.0.3","description":"Dynamic programming beat tracker","type":"module","sideEffects":false,"main":"track.js","exports":{".":"./track.js","./package.json":"./package.json"},"dependencies":{"@audio/beat-tempo":"^1.0.0","@audio/onset":"^1.0.0"},"keywords":["audio","dsp","beat","beat-tracking"],"license":"MIT","author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/audiojs/beat.git","directory":"packages/beat-track"},"homepage":"https://github.com/audiojs/beat/tree/main/packages/beat-track","bugs":{"url":"https://github.com/audiojs/beat/issues"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"types":"index.d.ts","funding":"https://github.com/sponsors/audiojs","gitHead":"565db5d62562df8e6b7cb74617f6c921fbb3ada4","_id":"@audio/beat-track@1.0.3","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-XkU9w+EJvigkm/p01UIGU0JvrwKURPIBvW7HPnEKQtce/5zjMZvnTEc2T3OzTyS40FSCIfnCyeKoZ305P/qWdw==","shasum":"d5a9a0849d5432d1d949ab07cfc1ad26599671e3","tarball":"https://registry.npmjs.org/@audio/beat-track/-/beat-track-1.0.3.tgz","fileCount":5,"unpackedSize":8761,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGdi73uIhWqU6dMSdfpW44zvSuOuyF0Z0UBBg8o6+rWFAiB398vklIYrxtKApLDs7luoZO6rAxgsL9VzNPhkh0WeMw=="}]},"_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/beat-track_1.0.3_1783731323767_0.7302313041206336"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:45:57.153Z","modified":"2026-07-11T00:55:24.040Z","1.0.0":"2026-07-08T19:45:57.454Z","1.0.1":"2026-07-09T13:50:07.585Z","1.0.2":"2026-07-09T19:01:35.590Z","1.0.3":"2026-07-11T00:55:23.909Z"},"bugs":{"url":"https://github.com/audiojs/beat/issues"},"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","homepage":"https://github.com/audiojs/beat/tree/main/packages/beat-track","keywords":["audio","dsp","beat","beat-tracking"],"repository":{"type":"git","url":"git+https://github.com/audiojs/beat.git","directory":"packages/beat-track"},"description":"Dynamic programming beat tracker","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/beat-track [![npm](https://img.shields.io/npm/v/@audio/beat-track)](https://www.npmjs.com/package/@audio/beat-track) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nDynamic programming beat tracker\n\n```\nnpm install @audio/beat-track\n```\n\n```js\nimport beatTrack from '@audio/beat-track'\n```\n\nDynamic programming beat tracker. Estimates tempo (via autocorrelation), then finds the globally optimal beat sequence by maximizing onset strength while penalizing tempo deviation. Each beat position is placed where the onset function is strongest, subject to staying near the expected tempo period.\n\n```js\nimport beatTrack from '@audio/beat-track'\nlet { beats, bpm, confidence } = beatTrack(samples, { fs: 44100 })\nlet result = beatTrack(samples, { fs: 44100, bpm: 120 })  // hint tempo\n```\n\n| Param | Default | |\n|---|---|---|\n| `bpm` | auto-estimated | Target BPM (auto-estimated if omitted) |\n| `tightness` | `680` | Tempo constraint weight (higher = stricter) |\n| + all `tempo` params | | `fs`, `frameSize`, `hopSize`, `minBpm`, `maxBpm`, `candidates` |\n\nReturns `{ beats: Float64Array, bpm, confidence }`.\n\n**Use when:** Irregular timing, live performance, rubato — adapts to where beats actually fall.<br>\n**Not for:** Perfectly metronomic material — `detect` is faster and sufficient.<br>\n**Ref:** Ellis, \"Beat Tracking by Dynamic Programming\" (JNMR 2007).\n\n---\n\nPart of [@audio/beat](https://github.com/audiojs/beat) — the beat family umbrella. This README is generated from the umbrella docs.\n\nMIT © [audiojs](https://github.com/audiojs)\n","readmeFilename":"README.md"}