{"_id":"@audio/sinusoidal-track","_rev":"3-32623894ef2e1aa4e21a8b30c7f11fe2","name":"@audio/sinusoidal-track","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@audio/sinusoidal-track","version":"1.0.0","keywords":["audio","dsp","sinusoidal","sms","track"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/sinusoidal-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"}],"dist":{"shasum":"a1a0d06c31efb7cb0a25c2a8e7e91c3772b84c04","tarball":"https://registry.npmjs.org/@audio/sinusoidal-track/-/sinusoidal-track-1.0.0.tgz","fileCount":2,"integrity":"sha512-kDFSz+ySRy1cgtKlc81QlWZPujFOZc26V9Q8kap9xX577SrPsZatWDLyQs/esY1UVRAXYX7jzUSIC5hgTw1iGA==","signatures":[{"sig":"MEYCIQDMbx2aMqbKsiYUZtZ60/mSrSjuQznC/4Ia6Dpvf7LXdQIhANdIAP9DHajD+DRVf6Nw3HaJatqisxkE+STFiWA9fZRe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3659},"main":"track.js","type":"module","engines":{"node":">=18"},"exports":{".":"./track.js","./package.json":"./package.json"},"gitHead":"ea0773d3be2ab705228cbb96eabeafc3d09e6341","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Sinusoidal analysis — STFT peaks (parabolic) + nearest-frequency partial tracking (McAulay-Quatieri 1986)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sinusoidal-track_1.0.0_1783540090516_0.2755296588574083","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@audio/sinusoidal-track","version":"1.0.1","keywords":["audio","dsp","sinusoidal","sms","track"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/sinusoidal-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/sinusoidal#readme","bugs":{"url":"https://github.com/audiojs/sinusoidal/issues"},"dist":{"shasum":"1aa8e026c2dd497c966dfe0e611270d9e13c7153","tarball":"https://registry.npmjs.org/@audio/sinusoidal-track/-/sinusoidal-track-1.0.1.tgz","fileCount":2,"integrity":"sha512-v85HYU+/WVbgLsfUIlxZs0F68Gw2dtBn7B/jsvVPpW+vBJ5I3EFn9iLLSn1oPnuBtHoln1z080WzE0yLLi+ghQ==","signatures":[{"sig":"MEYCIQDMXsTdOWXqOYx42vewLjRlbzu2Sja1fwR8bl7lK0OHGQIhAN5p69EIAquPa8q1Tsi4hD/KPEfSKFKbxs+yt7Us+C1J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4090},"main":"track.js","type":"module","engines":{"node":">=18"},"exports":{".":"./track.js","./package.json":"./package.json"},"gitHead":"1512945cdfa46b001220e018725998b19cd62c81","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/sinusoidal.git","type":"git","directory":"packages/sinusoidal-track"},"_npmVersion":"11.12.1","description":"Sinusoidal analysis — STFT peaks (parabolic) + nearest-frequency partial tracking (McAulay-Quatieri 1986)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/window":"^1.0.2","fourier-transform":"^2.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sinusoidal-track_1.0.1_1783726332520_0.7180328205908266","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@audio/sinusoidal-track","version":"1.0.2","description":"Sinusoidal analysis — STFT peaks (parabolic) + nearest-frequency partial tracking (McAulay-Quatieri 1986)","type":"module","sideEffects":false,"main":"track.js","exports":{".":"./track.js","./package.json":"./package.json"},"types":"track.d.ts","dependencies":{"fourier-transform":"^2.2.0","@audio/window":"^1.0.2"},"keywords":["audio","dsp","sinusoidal","sms","track"],"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/sinusoidal.git","directory":"packages/sinusoidal-track"},"funding":"https://github.com/sponsors/audiojs","gitHead":"b095ba151dd5e67694acbf6abfc630db15b54755","_id":"@audio/sinusoidal-track@1.0.2","bugs":{"url":"https://github.com/audiojs/sinusoidal/issues"},"homepage":"https://github.com/audiojs/sinusoidal#readme","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-w8oDST6XEmOwS2fcdrP3Q06nWmPLg0igtZXYFNUPrN3wyMVkjlzMBSjCBztcn1Bz5IIdeyfgGpioM3WqjLpLdg==","shasum":"5fc90356a23cbcb9e17740885e51fbff1e57db33","tarball":"https://registry.npmjs.org/@audio/sinusoidal-track/-/sinusoidal-track-1.0.2.tgz","fileCount":4,"unpackedSize":7005,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHglgO0Kq47E+RavG9ric8B7VcI54eEgaAwpZ9BzbdNZAiEA4y6Py5aXR+EQrc5jLFwCuBuBCMMqntPbEJCAsX9wMoo="}]},"_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/sinusoidal-track_1.0.2_1783731815063_0.6948542607719608"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:48:10.420Z","modified":"2026-07-11T01:03:35.502Z","1.0.0":"2026-07-08T19:48:10.669Z","1.0.1":"2026-07-10T23:32:12.668Z","1.0.2":"2026-07-11T01:03:35.215Z"},"bugs":{"url":"https://github.com/audiojs/sinusoidal/issues"},"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","homepage":"https://github.com/audiojs/sinusoidal#readme","keywords":["audio","dsp","sinusoidal","sms","track"],"repository":{"type":"git","url":"git+https://github.com/audiojs/sinusoidal.git","directory":"packages/sinusoidal-track"},"description":"Sinusoidal analysis — STFT peaks (parabolic) + nearest-frequency partial tracking (McAulay-Quatieri 1986)","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/sinusoidal-track [![npm](https://img.shields.io/npm/v/@audio/sinusoidal-track)](https://www.npmjs.com/package/@audio/sinusoidal-track) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nPeak picking + partial tracking\n\n```\nnpm install @audio/sinusoidal-track\n```\n\n```js\nimport track from '@audio/sinusoidal-track'\n```\n\nSinusoidal analysis: STFT spectral peaks with parabolic interpolation, linked frame-to-frame into partial trajectories by nearest-frequency continuation within a cents threshold (McAulay & Quatieri 1986). Produces the `model` consumed by [`sinusoidal-synth`](https://github.com/audiojs/sinusoidal/tree/main/packages/sinusoidal-synth) (additive resynthesis) and [`sinusoidal-residual`](https://github.com/audiojs/sinusoidal/tree/main/packages/sinusoidal-residual) (noise layer).\n\n```js\nlet model = track(data, { frameSize: 2048, hop: 512 })\n// model.partials: [{ start, freqs: number[], amps: number[] }, ...]\n```\n\n| Param | Default | |\n|---|---|---|\n| `fs` | `44100` | Sample rate |\n| `frameSize` | `2048` | STFT frame |\n| `hop` | `512` | STFT hop |\n| `maxPartials` | `40` | Peaks kept per frame |\n| `threshold` | `-60` | Peak floor, dB relative to frame max |\n| `maxJump` | `60` | Max cents jump for partial continuation |\n\nReturns `{ partials, frames, hop, frameSize, fs }` — `partials` only includes trajectories lasting ≥3 frames.\n\n**Use when:** the analysis stage of the sinusoids+noise (SMS) pipeline — additive resynthesis, residual extraction, or trajectory-based processing (smoothing, transposition).\n\n---\n\nPart of [@audio/sinusoidal](https://github.com/audiojs/sinusoidal) — the sinusoidal family umbrella.\n\nMIT © [audiojs](https://github.com/audiojs)\n","readmeFilename":"README.md"}