{"_id":"@audio/shift-pvoc","_rev":"7-314e4f2e36e05b346381782b0453dc94","name":"@audio/shift-pvoc","dist-tags":{"latest":"1.1.5"},"versions":{"1.0.0":{"name":"@audio/shift-pvoc","version":"1.0.0","keywords":["audio","pitch-shift","phase-vocoder","pvoc","stft","dsp"],"author":{"name":"audiojs"},"license":"MIT","_id":"@audio/shift-pvoc@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/shift/tree/main/packages/shift-pvoc#readme","bugs":{"url":"https://github.com/audiojs/shift/issues"},"dist":{"shasum":"3cd09b2c33efda574377ad3a78a873275df3bbda","tarball":"https://registry.npmjs.org/@audio/shift-pvoc/-/shift-pvoc-1.0.0.tgz","fileCount":2,"integrity":"sha512-SzyXnPQqZ1wCqpwVEBYWhea8e1QdV9WuUndd7l3ZY26KsY0+hCE/OBpshe4oSdBnFUktX8k3n9bij7IV2E0uKw==","signatures":[{"sig":"MEUCIEddXjskMmT1CAsQ8zfdXvFGvHYy+h2vwd7Ig3VkHaBbAiEA09O2GkGvuhioOvQTsfjYHwyuYg9FQrzIj4CSydGg4mc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2555},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js","./package.json":"./package.json"},"gitHead":"96f567467fac25424e0745397b88595052400a74","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/shift.git","type":"git","directory":"packages/shift-pvoc"},"_npmVersion":"11.12.1","description":"Canonical phase vocoder (Bernsee/SMB) pitch shift","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/shift-core":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/shift-pvoc_1.0.0_1783540125116_0.5955863205054348","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@audio/shift-pvoc","version":"1.1.0","keywords":["audio","pitch-shift","phase-vocoder","pvoc","stft","dsp"],"author":{"name":"audiojs"},"license":"MIT","_id":"@audio/shift-pvoc@1.1.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/shift/tree/main/packages/shift-pvoc#readme","bugs":{"url":"https://github.com/audiojs/shift/issues"},"atom":"./atom.js","dist":{"shasum":"458c866fc9dae5ae5d87252e22a2db5f76984542","tarball":"https://registry.npmjs.org/@audio/shift-pvoc/-/shift-pvoc-1.1.0.tgz","fileCount":3,"integrity":"sha512-40NNoxGlwiZCVEilSEgT46guXI769w9it5Dvlx/bErAf9qcdtkHNnlbZhu/U6+FvYNvh9LJtT5xEv883p4mPqg==","signatures":[{"sig":"MEQCIDLQRpFsxKKVJrkRpvPSeDp9rG1W09nR5mA1Y9eV1u/XAiBARN6OIfmM+X3FsmcBi5K8XDooD7vJvdco5SRZorsX5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5076},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js","./atom":"./atom.js","./package.json":"./package.json"},"gitHead":"96f567467fac25424e0745397b88595052400a74","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/shift.git","type":"git","directory":"packages/shift-pvoc"},"_npmVersion":"11.12.1","description":"Canonical phase vocoder (Bernsee/SMB) pitch shift","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/shift-core":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/shift-pvoc_1.1.0_1783598129096_0.8996742296976126","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@audio/shift-pvoc","version":"1.1.1","keywords":["audio","pitch-shift","phase-vocoder","pvoc","stft","dsp"],"author":{"name":"audiojs"},"license":"MIT","_id":"@audio/shift-pvoc@1.1.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/shift/tree/main/packages/shift-pvoc#readme","bugs":{"url":"https://github.com/audiojs/shift/issues"},"atom":"./atom.js","dist":{"shasum":"8e356e1fd8bdbbfe456ed22afcc537b665181013","tarball":"https://registry.npmjs.org/@audio/shift-pvoc/-/shift-pvoc-1.1.1.tgz","fileCount":4,"integrity":"sha512-yAINorOHWoPpU1zw4/WNkDzgPXJa3+jW/KYF15j8W2GS43T4POiaVMKGDL0Kr9+QD1Hd4W6oHS5piiCut28FBA==","signatures":[{"sig":"MEUCIQDn3qFQpLT3xrQ0pNaVbrExNraX0xpsUTnFiUojnmOnFQIgFJOXTIm/4iPk7av/Wgcjs87x4WTh5m4r+SN1xI/uL6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11587},"main":"index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./index.js","./atom":"./atom.js","./package.json":"./package.json"},"gitHead":"d2c732642b33df6811872e2d21713bd6a9ab6b75","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/shift.git","type":"git","directory":"packages/shift-pvoc"},"_npmVersion":"11.12.1","description":"Canonical phase vocoder (Bernsee/SMB) pitch shift","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.3.0","@audio/spectral-pvoc":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/shift-pvoc_1.1.1_1783624381030_0.8193838660016013","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@audio/shift-pvoc","version":"1.1.2","keywords":["audio","pitch-shift","phase-vocoder","pvoc","stft","dsp"],"author":{"name":"audiojs"},"license":"MIT","_id":"@audio/shift-pvoc@1.1.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/shift/tree/main/packages/shift-pvoc#readme","bugs":{"url":"https://github.com/audiojs/shift/issues"},"dist":{"shasum":"4b39d99c5fda7c066c4803b0d940d0357359b1de","tarball":"https://registry.npmjs.org/@audio/shift-pvoc/-/shift-pvoc-1.1.2.tgz","fileCount":4,"integrity":"sha512-SY+NlPid97uhr15VKd1VvxMpPlCpLKuu0vV7zRodxa/D2hfDHxgtOunLiiNzpT6QUunH1LJSeXKur4w6MGJZRQ==","signatures":[{"sig":"MEQCIAQP3jJ0swicUTU676T/Coo7yvHBGM47N3RV01+oQNXhAiA1zCcq1100qRgAL/gtmwiBmi0yrDRLvr1K17TogdPEfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11596},"main":"index.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./index.js","./audio":"./audio.js","./package.json":"./package.json"},"gitHead":"a99ffb1c0af7ef9809ed987998820c0c45192f15","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/shift.git","type":"git","directory":"packages/shift-pvoc"},"_npmVersion":"11.12.1","description":"Canonical phase vocoder (Bernsee/SMB) pitch shift","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.3.0","@audio/spectral-pvoc":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/shift-pvoc_1.1.2_1783645076994_0.7456481753590425","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@audio/shift-pvoc","version":"1.1.3","keywords":["audio","pitch-shift","phase-vocoder","pvoc","stft","dsp"],"author":{"name":"audiojs"},"license":"MIT","_id":"@audio/shift-pvoc@1.1.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/shift/tree/main/packages/shift-pvoc#readme","bugs":{"url":"https://github.com/audiojs/shift/issues"},"dist":{"shasum":"a9c4075e67d0bb3c0bc285a4f5688636adc11914","tarball":"https://registry.npmjs.org/@audio/shift-pvoc/-/shift-pvoc-1.1.3.tgz","fileCount":5,"integrity":"sha512-/B4Wk+eJtxCzJIlVk4d0VtLIJNP0sbeCrm0uLrI7W1rGvjurrSmHpsQ174T5BLmrKwgw3v7huIuL05oA/WcvJg==","signatures":[{"sig":"MEUCICwCzDws2frvoQ02cBs+m536YbIU7hyWDFRPNVzlk8DFAiEA/whKL0hMfBgf3wBcwO9fz0MnuI22K1XVRygdP1VhJHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12819},"main":"index.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./index.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"gitHead":"f9f081b70d629cf5890df9072880378c274f8bd0","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/shift.git","type":"git","directory":"packages/shift-pvoc"},"_npmVersion":"11.12.1","description":"Canonical phase vocoder (Bernsee/SMB) pitch shift","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.3.0","@audio/spectral-pvoc":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/shift-pvoc_1.1.3_1783701803087_0.7976007462898482","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@audio/shift-pvoc","version":"1.1.4","keywords":["audio","pitch-shift","phase-vocoder","pvoc","stft","dsp"],"author":{"name":"audiojs"},"license":"MIT","_id":"@audio/shift-pvoc@1.1.4","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/shift/tree/main/packages/shift-pvoc#readme","bugs":{"url":"https://github.com/audiojs/shift/issues"},"dist":{"shasum":"71e549172372681ab01861b611bcfc6cf1cd8322","tarball":"https://registry.npmjs.org/@audio/shift-pvoc/-/shift-pvoc-1.1.4.tgz","fileCount":7,"integrity":"sha512-ekC8aVtCUcqJ3Q65JjeBUdnDO1vb1n0betm0mba+F3Ay/pEcr+Ko4GrGAWsCnJeIJN8Vfa6j3jtzd/LfpCjCag==","signatures":[{"sig":"MEUCIQCQMrGJ41xJaW3SkD4MWJgyFJR4EWXk2JZMsNfA/UW3yAIgX6/q0mPCkRuhk94rNyTgukSZebHwAeZFwB8GMpz5Xxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16636},"main":"index.js","type":"module","audio":"./audio.js","types":"index.d.ts","engines":{"node":">=18"},"exports":{".":"./index.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/audiojs","gitHead":"d637ae35b709957d2b7dac2266c480efa50dca95","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/shift.git","type":"git","directory":"packages/shift-pvoc"},"_npmVersion":"11.12.1","description":"Canonical phase vocoder (Bernsee/SMB) pitch shift","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.3.0","@audio/spectral-pvoc":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/shift-pvoc_1.1.4_1783731794348_0.42771880302537957","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"_id":"@audio/shift-pvoc@1.1.5","bugs":{"url":"https://github.com/audiojs/shift/issues"},"dist":{"shasum":"61c4f1b2208c28ad79c033ea91f000aa007fe8ac","tarball":"https://registry.npmjs.org/@audio/shift-pvoc/-/shift-pvoc-1.1.5.tgz","fileCount":7,"integrity":"sha512-jSb8ERt+HC9NT2HF4JNtzXF/SBfxbvH7coWP2OM0GzX52vfWHEM8TXhPoUPGV/pY9rUMQMNgbYu62SC8K6iPYQ==","signatures":[{"sig":"MEQCIDmJ5ZDZyqQxXrCadycW/LGZZmi3i2ViGGhn1EcN4jMKAiB139Pxcr9LUb0f77Dey6IXQZ+y3uj2turFEdT6vbmRcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCvEX6/P8TeCf9HE1/yiCLN/iyzLu//XENpSFbYGuhKfwIgR9dJOuagaMiJCRIZRKDOd4VoXaGpG54WL4LuZ+/uWRI="}],"unpackedSize":16550},"main":"index.js","name":"@audio/shift-pvoc","type":"module","audio":"./audio.js","types":"index.d.ts","author":{"name":"audiojs"},"engines":{"node":">=18"},"exports":{".":"./index.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/audiojs","gitHead":"cdc5c575bf0040cb25e031cd35056c3855a8c966","license":"MIT","version":"1.1.5","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"homepage":"https://github.com/audiojs/shift/tree/main/packages/shift-pvoc#readme","keywords":["audio","pitch-shift","phase-vocoder","pvoc","stft","dsp"],"repository":{"url":"git+https://github.com/audiojs/shift.git","type":"git","directory":"packages/shift-pvoc"},"_npmVersion":"11.12.1","description":"Canonical phase vocoder (Bernsee/SMB) pitch shift","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":{"fourier-transform":"^2.4.2","@audio/spectral-pvoc":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/shift-pvoc_1.1.5_1790192480058_0.0122384320991753"}}},"time":{"created":"2026-07-08T19:48:44.929Z","modified":"2026-09-23T19:41:20.370Z","1.0.0":"2026-07-08T19:48:45.241Z","1.1.0":"2026-07-09T11:55:29.231Z","1.1.1":"2026-07-09T19:13:01.209Z","1.1.2":"2026-07-10T00:57:57.123Z","1.1.3":"2026-07-10T16:43:23.247Z","1.1.4":"2026-07-11T01:03:14.465Z","1.1.5":"2026-09-23T19:41:20.140Z"},"bugs":{"url":"https://github.com/audiojs/shift/issues"},"author":{"name":"audiojs"},"license":"MIT","homepage":"https://github.com/audiojs/shift/tree/main/packages/shift-pvoc#readme","keywords":["audio","pitch-shift","phase-vocoder","pvoc","stft","dsp"],"repository":{"url":"git+https://github.com/audiojs/shift.git","type":"git","directory":"packages/shift-pvoc"},"description":"Canonical phase vocoder (Bernsee/SMB) pitch shift","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/shift-pvoc [![npm](https://img.shields.io/npm/v/@audio/shift-pvoc)](https://www.npmjs.com/package/@audio/shift-pvoc) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nCanonical phase vocoder (Bernsee/SMB) pitch shift\n\n```\nnpm install @audio/shift-pvoc\n```\n\n```js\nimport vocoder from '@audio/shift-pvoc'\n```\n\nSMB/Bernsee bin-shift. Computes true instantaneous frequency per bin from consecutive-frame phase advance, scatters peaks to shifted bins, accumulates synthesis phase at the shifted frequency.\n\n```js\nvocoder(audio, { ratio: 1.5 })\n```\n\n**Preserves** dominant-partial pitch, long-horizon phase per bin.<br>\n**Destroys** transients, vertical phase coherence (\"phasiness\"), formants.\n\n| f0 err | THD% | alias | attack corr | formant dist | phase coh | shift |\n|-------:|-----:|------:|------------:|-------------:|----------:|------:|\n| 0.00 | 0.0 | 0.000 | 0.981 | 1.158 | 0.928 | 1.553 |\n\nPhase coh 0.928 from independent per-bin phase accumulation — no inter-bin locking. Best shift score among the general phase vocoders — the simpler scatter avoids the peak-locked family's own assignment overhead on these fixtures.\n\n**Use when:** Simple tonal material, educational baseline.<br>\n**Not for:** Music with percussion, voice.\n\n## Stream\n\n```js\nlet write = vocoder({ ratio: 1.5 })\nlet out = write(inputBlock)\nlet tail = write()  // flush\n```\n\n`vocoder` streams per-frame: each `write(chunk)` call renormalizes and emits audio as soon as a frame completes, and re-chunking the same input differently reproduces the batch output byte for byte.\n\n## Data\n\nInput is a `Float32Array` (mono) or an array of `Float32Array` channels (`[left, right, ...]`) — anything else throws `TypeError`. `ratio` also accepts a function `t => ratio` (seconds from stream start) or a `Float32Array` breakpoint envelope (resampled across the input via `ratioDuration`, default the input's own duration) for time-varying pitch.\n\n---\n\nPart of [@audio/shift](https://github.com/audiojs/shift) — the shift family umbrella. This README is generated from the umbrella docs.\n\nMIT © [audiojs](https://github.com/audiojs)\n","readmeFilename":"README.md"}