{"_id":"@audio/sinusoidal-residual","_rev":"3-471a80d02cb9d3aac80d0a700bfb3033","name":"@audio/sinusoidal-residual","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@audio/sinusoidal-residual","version":"1.0.0","keywords":["audio","dsp","sinusoidal","sms","residual"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/sinusoidal-residual@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":"de99f3e612fd1630fae76c9a63d8b88e0f8d5b7a","tarball":"https://registry.npmjs.org/@audio/sinusoidal-residual/-/sinusoidal-residual-1.0.0.tgz","fileCount":2,"integrity":"sha512-yZCLCUP6i/uHp/l1XcBkYGkfqzlNqUlA0vVsLjMyIHMJJE3f5EIFdctmeqJM8oUfjkQ6TQL87uL+Gn3VeBydSQ==","signatures":[{"sig":"MEQCIFLijYrWluJQWQUSN/bAdQMiJvpghiYR8Q7+coURWTiPAiAKqsdyPTwlEBgF5o94IroYszidAz3EEkAb5/OdIKQcvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3278},"main":"residual.js","type":"module","engines":{"node":">=18"},"exports":{".":"./residual.js","./package.json":"./package.json"},"gitHead":"ea0773d3be2ab705228cbb96eabeafc3d09e6341","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Residual noise layer — spectral subtraction of tracked partials with input phase (Serra SMS)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.2.0","@audio/sinusoidal-track":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sinusoidal-residual_1.0.0_1783540086479_0.75549901865407","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@audio/sinusoidal-residual","version":"1.0.1","keywords":["audio","dsp","sinusoidal","sms","residual"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/sinusoidal-residual@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":"fa66130283c945b82e042fc24fc8350ba536f93c","tarball":"https://registry.npmjs.org/@audio/sinusoidal-residual/-/sinusoidal-residual-1.0.1.tgz","fileCount":2,"integrity":"sha512-6jENlUGbEiqhwlzMpFLmAhaBV0WSOi5+kLShq82kYn8ggiBwL6o0bkiXEjlsWAdbSBtUdA27ANgtAdEREFe6Uw==","signatures":[{"sig":"MEUCIQCEkSWnadw0JHjrIFOQ8+Cv8h85aaAPhKlv7c5VwnQyDQIgWbB06GLwomNMBJdpPkg6o2Tb3AAa3VLAT+M9jaTMyNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3304},"main":"residual.js","type":"module","engines":{"node":">=18"},"exports":{".":"./residual.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-residual"},"_npmVersion":"11.12.1","description":"Residual noise layer — spectral subtraction of tracked partials with input phase (Serra SMS)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.2.0","@audio/sinusoidal-track":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sinusoidal-residual_1.0.1_1783726330309_0.1833978366128055","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@audio/sinusoidal-residual","version":"1.0.2","description":"Residual noise layer — spectral subtraction of tracked partials with input phase (Serra SMS)","type":"module","sideEffects":false,"main":"residual.js","exports":{".":"./residual.js","./package.json":"./package.json"},"types":"residual.d.ts","dependencies":{"fourier-transform":"^2.2.0","@audio/sinusoidal-track":"^1.0.0"},"keywords":["audio","dsp","sinusoidal","sms","residual"],"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-residual"},"funding":"https://github.com/sponsors/audiojs","gitHead":"b095ba151dd5e67694acbf6abfc630db15b54755","_id":"@audio/sinusoidal-residual@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-Nr/0bues071X9QnfYCrlpQ/F3dajU1G9T6pbNi2xAkIU4dqI36Bbp830HR+J8YxR5E0juRFnD1T0n6rChWLMaA==","shasum":"b537379c0d0e8804e9c510cd8ad57a243489ad9d","tarball":"https://registry.npmjs.org/@audio/sinusoidal-residual/-/sinusoidal-residual-1.0.2.tgz","fileCount":4,"unpackedSize":5637,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQClZN+oX0I8NIk6SYcULg7DIHAHVim8YDE0hkIJcQSwKgIgKv0kzkSfdxFey4vwER8tmGqstAa8GNgNu92XjPzGc6k="}]},"_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-residual_1.0.2_1783731810584_0.9574085516073685"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:48:06.284Z","modified":"2026-07-11T01:03:30.913Z","1.0.0":"2026-07-08T19:48:06.617Z","1.0.1":"2026-07-10T23:32:10.442Z","1.0.2":"2026-07-11T01:03:30.732Z"},"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","residual"],"repository":{"type":"git","url":"git+https://github.com/audiojs/sinusoidal.git","directory":"packages/sinusoidal-residual"},"description":"Residual noise layer — spectral subtraction of tracked partials with input phase (Serra SMS)","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/sinusoidal-residual [![npm](https://img.shields.io/npm/v/@audio/sinusoidal-residual)](https://www.npmjs.com/package/@audio/sinusoidal-residual) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nResidual noise layer\n\n```\nnpm install @audio/sinusoidal-residual\n```\n\n```js\nimport residual from '@audio/sinusoidal-residual'\n```\n\nThe noise layer of the sinusoids+noise model (Serra-Smith SMS): input minus the additive resynthesis of its tracked partials. Phase-blind subtraction is imperfect per partial, so it works spectrally — per frame, subtract each tracked partial's estimated magnitude (Wiener-style soft mask, spread over the Hann mainlobe) from the input magnitude, then resynthesize with the input's own phase. Robust without tracking original phase. Runs [`sinusoidal-track`](https://github.com/audiojs/sinusoidal/tree/main/packages/sinusoidal-track) internally unless a `model` is passed in.\n\n```js\nresidual(data, { frameSize: 2048 })          // tracks internally\nresidual(data, { model })                    // reuse an existing analysis\n```\n\n| Param | Default | |\n|---|---|---|\n| `data` | — | Mono PCM (positional) |\n| `model` | — | Reuse an existing `sinusoidal-track` model instead of re-tracking |\n| *(others)* | — | Forwarded to `sinusoidal-track` when no `model` is given |\n\nReturns a `Float32Array` the same length as `data`.\n\n**Use when:** extracting the noise/transient component for SMS-style decomposition — pairs with `sinusoidal-synth` (the sinusoidal component) to reconstruct the full signal.\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"}