{"_id":"@audio/beat-tempo","_rev":"5-a0395f4042620e6042c6f7f00f058c75","name":"@audio/beat-tempo","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"@audio/beat-tempo","version":"1.0.0","keywords":["audio","dsp","beat","tempo","bpm"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/beat-tempo@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-tempo","bugs":{"url":"https://github.com/audiojs/beat/issues"},"dist":{"shasum":"195ce994e36f985d9d8e99f33864518d0a70621d","tarball":"https://registry.npmjs.org/@audio/beat-tempo/-/beat-tempo-1.0.0.tgz","fileCount":3,"integrity":"sha512-QRqwn12hxy9Br40GoyrFJyZ606yi4DKMiguwczMWdRePFgGPB3hoxMDk48CBYl72btbqrWDjGrWF68QFB9OkYA==","signatures":[{"sig":"MEUCIQCZECz8bmKq9EeTcJNzFpeyENkK17C7xp2Fpgog4Z2FMQIgfuCY2MUPrhKu9iaUwcyUandvmYZXqQ87Crg+8o8+5/k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8844},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js","./comb":"./comb.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-tempo"},"_npmVersion":"11.12.1","description":"Tempo estimation via autocorrelation of onset detection function","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/beat-core":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/beat-tempo_1.0.0_1783539955040_0.06487845948132187","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@audio/beat-tempo","version":"1.0.1","keywords":["audio","dsp","beat","tempo","bpm"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/beat-tempo@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-tempo","bugs":{"url":"https://github.com/audiojs/beat/issues"},"dist":{"shasum":"e2ada363174d495efab3bff4bddff091a5b77444","tarball":"https://registry.npmjs.org/@audio/beat-tempo/-/beat-tempo-1.0.1.tgz","fileCount":3,"integrity":"sha512-xoDW0rkFHzm5SffsrekA5xqqgOIFXZSfNachl6nO+r7pEoLERS/F3kXkxtZ1/5EqJIC0YgoxGjmvqOQO2Bvxqg==","signatures":[{"sig":"MEUCIQCdxS5at3RkgkkIhoYhkv2jad3PJfOMOxvgZd6lWL9vmAIgSVp5qmbyjqRyna9ciP0gv9CCOqLNj6v73KPYDGiJ3NI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8934},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js","./comb":"./comb.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-tempo"},"_npmVersion":"11.12.1","description":"Tempo estimation via autocorrelation of onset detection function","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/onset":"^1.0.0","@audio/beat-core":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/beat-tempo_1.0.1_1783605004054_0.16495557654110948","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@audio/beat-tempo","version":"1.0.2","keywords":["audio","dsp","beat","tempo","bpm"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/beat-tempo@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-tempo","bugs":{"url":"https://github.com/audiojs/beat/issues"},"dist":{"shasum":"1a27d7c431ca1de94adc070f0fa07d86cffbaeba","tarball":"https://registry.npmjs.org/@audio/beat-tempo/-/beat-tempo-1.0.2.tgz","fileCount":4,"integrity":"sha512-JofvcaMYzxwGu4T9apjelRGVCohDKlPXUBuKha7vdSRgwgUTenNd8didOnOuJS1QJgAbxhQ5yK1BMY30IyL6QQ==","signatures":[{"sig":"MEUCIAdLIh3UvuwTMpw3hdy2MLTD5YvB2H7EWB/NI+JDqOXJAiEA/QNWKVio1JyMXLimUIStPcLCSxYaSya0T0e42zl5v2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9853},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js","./comb":"./comb.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-tempo"},"_npmVersion":"11.12.1","description":"Tempo estimation via autocorrelation of onset detection function","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/onset":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/beat-tempo_1.0.2_1783623689392_0.7705315930687269","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@audio/beat-tempo","version":"1.0.3","keywords":["audio","dsp","beat","tempo","bpm"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/beat-tempo@1.0.3","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-tempo","bugs":{"url":"https://github.com/audiojs/beat/issues"},"dist":{"shasum":"bc52762090d84771982642da2c967351f7e44faa","tarball":"https://registry.npmjs.org/@audio/beat-tempo/-/beat-tempo-1.0.3.tgz","fileCount":6,"integrity":"sha512-nMdE0j90AGliDaYGql1h29RhWbotjsKEfHzwEBbjPACDGuXB6NKAxJTsQii8f1Jhd+iF+Ohvt6RLu8BjYGnsJA==","signatures":[{"sig":"MEUCIF+I3ymbm500bg1urMSDQgvijJL/ECtzccjGs+iqtHqnAiEA4dHfzI2s4cWLFpvHOLe6wY6CODnR+MUBh/IF7PCAPr0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12565},"main":"index.js","type":"module","types":"index.d.ts","engines":{"node":">=18"},"exports":{".":"./index.js","./comb":"./comb.js","./package.json":"./package.json"},"funding":"https://github.com/sponsors/audiojs","gitHead":"565db5d62562df8e6b7cb74617f6c921fbb3ada4","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/beat.git","type":"git","directory":"packages/beat-tempo"},"_npmVersion":"11.12.1","description":"Tempo estimation via autocorrelation of onset detection function","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/onset":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/beat-tempo_1.0.3_1783731321524_0.06474089284138707","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"_id":"@audio/beat-tempo@2.0.0","bugs":{"url":"https://github.com/audiojs/beat/issues"},"dist":{"shasum":"b9785bc2443b8e624a28d85bb743d5619ba1d5b2","tarball":"https://registry.npmjs.org/@audio/beat-tempo/-/beat-tempo-2.0.0.tgz","fileCount":6,"integrity":"sha512-dcv8dV9YyxH9W8/OFPdmRL1hRqKPNSzfArcc7KL+IoLJv+jpDCxbjndPPKJKwqH0ZuV+gZAwM+VHbJ6nBoyPgA==","signatures":[{"sig":"MEYCIQClz0LItGuV58dpSmgV4ypkuuMO53aQr99XSyF5l+4zIAIhAJPDttE1uLtJha5GLvle3qxdgaCqw1spkKJTVVcuKitE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDVpenWtRyj1Fiw4oH4o5QqvUup+82q46gAvyUSa5RipAIhAMOjqtg2TuBbZwG66FAH0Z5CcD7Q5KGMjPWka6+8ook+"}],"unpackedSize":13570},"main":"index.js","name":"@audio/beat-tempo","type":"module","types":"index.d.ts","author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"engines":{"node":">=18"},"exports":{".":"./index.js","./comb":"./comb.js","./package.json":"./package.json"},"funding":"https://github.com/sponsors/audiojs","gitHead":"7e55703a88a58ef5c4ba872706a707a87db0be20","license":"MIT","version":"2.0.0","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"homepage":"https://github.com/audiojs/beat/tree/main/packages/beat-tempo","keywords":["audio","dsp","beat","tempo","bpm"],"repository":{"url":"git+https://github.com/audiojs/beat.git","type":"git","directory":"packages/beat-tempo"},"_npmVersion":"11.12.1","description":"Tempo estimation via autocorrelation of onset detection function","directories":{},"maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/onset":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/beat-tempo_2.0.0_1790634526717_0.14241589623843187"}}},"time":{"created":"2026-07-08T19:45:54.792Z","modified":"2026-09-28T22:28:47.058Z","1.0.0":"2026-07-08T19:45:55.197Z","1.0.1":"2026-07-09T13:50:04.206Z","1.0.2":"2026-07-09T19:01:29.517Z","1.0.3":"2026-07-11T00:55:21.690Z","2.0.0":"2026-09-28T22:28:46.789Z"},"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-tempo","keywords":["audio","dsp","beat","tempo","bpm"],"repository":{"url":"git+https://github.com/audiojs/beat.git","type":"git","directory":"packages/beat-tempo"},"description":"Tempo estimation via autocorrelation of onset detection function","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/beat-tempo [![npm](https://img.shields.io/npm/v/@audio/beat-tempo)](https://www.npmjs.com/package/@audio/beat-tempo) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nTempo estimation via autocorrelation of onset detection function\n\n```\nnpm install @audio/beat-tempo\n```\n\n```js\nimport tempo from '@audio/beat-tempo'\n```\n\nAutocorrelation of the onset detection function. Finds the dominant periodicity by correlating the spectral flux ODF with itself at different lags. Perceptual weighting (log-Gaussian centered at 120 BPM) resolves octave ambiguity.\n\n```js\nimport tempo from '@audio/beat-tempo'\nlet { bpm, confidence } = tempo(samples, { fs: 44100 })\nlet { bpm, candidates } = tempo(samples, { fs: 44100, candidates: 3 })\n```\n\n| Param | Default | |\n|---|---|---|\n| `fs` | `44100` | Sample rate |\n| `minBpm` | `60` | Minimum BPM to consider |\n| `maxBpm` | `200` | Maximum BPM to consider |\n| `candidates` | `1` | Number of tempo candidates to return |\n\n**Use when:** General tempo estimation — robust for most material.<br>\n**Ref:** Ellis, \"Beat Tracking by Dynamic Programming\" (JNMR 2007).<br>\n**Complexity:** $O(N \\log F + L^2)$ where $L$ = lag range in ODF frames.\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"}