{"_id":"@audio/stretch-hybrid","_rev":"7-8645ffd033f6fa238308d2c124eaebd9","name":"@audio/stretch-hybrid","dist-tags":{"latest":"1.2.2"},"versions":{"1.0.0":{"name":"@audio/stretch-hybrid","version":"1.0.0","keywords":["audio","dsp","time-stretch","hpss","harmonic-percussive","hybrid","phase-vocoder","stft"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/stretch-hybrid@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/stretch/tree/main/packages/stretch-hybrid","bugs":{"url":"https://github.com/audiojs/stretch/issues"},"dist":{"shasum":"83090cdaca9de7658bcd82de3721d14848ea9b2e","tarball":"https://registry.npmjs.org/@audio/stretch-hybrid/-/stretch-hybrid-1.0.0.tgz","fileCount":5,"integrity":"sha512-rFACkQ306ODRPaC3x4/pWPGB0TNSWDOchEhH5kHtBYYxSPGAWhI2rQKagyVhxez8O8lrsv0Nt38KweokJl89FQ==","signatures":[{"sig":"MEYCIQDJeLVcW5oJ31bsb2IkVxRuLgs2z5QZxGPcm8Y5d2y9rgIhAJ12C5Z7flp1EiB01F9aOi1BmaPQG8+OkjUwxTuT3RQp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10973},"main":"hybrid.js","type":"module","types":"hybrid.d.ts","engines":{"node":">=18"},"exports":{".":"./hybrid.js","./package.json":"./package.json"},"gitHead":"3f1e6701f03a021fd2ab5f55edfbe5a0def65453","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/stretch.git","type":"git","directory":"packages/stretch-hybrid"},"_npmVersion":"11.12.1","description":"Hybrid harmonic/percussive time stretch (Driedger) — HPSS split, phase-locked vocoder + OLA per layer","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.3.0","@audio/stretch-core":"^1.0.0","@audio/stretch-wsola":"^1.0.0","@audio/stretch-pvoc-lock":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/stretch-hybrid_1.0.0_1783540148098_0.364600363480178","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@audio/stretch-hybrid","version":"1.0.1","keywords":["audio","dsp","time-stretch","hpss","harmonic-percussive","hybrid","phase-vocoder","stft"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/stretch-hybrid@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/stretch/tree/main/packages/stretch-hybrid","bugs":{"url":"https://github.com/audiojs/stretch/issues"},"dist":{"shasum":"e0524b28118a841d8f38b481f3c00664564b43e9","tarball":"https://registry.npmjs.org/@audio/stretch-hybrid/-/stretch-hybrid-1.0.1.tgz","fileCount":6,"integrity":"sha512-5enpsRSUjhonoj7Vscsq/TvE5lTFoJdmeV+TQN3DHfOhVuPUfILWRFzW5n6x/fNX6C4MH6/UqKCjzT77aRHB1A==","signatures":[{"sig":"MEYCIQCBtnsEw59vjolBOasgMywS7MtqDdqf0Dne/R37afU8qQIhANZkVZ1FCrhm4yTMThcFTD4qs8vWWhr7Iv4GZPSQXiBB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11191},"main":"hybrid.js","type":"module","types":"hybrid.d.ts","engines":{"node":">=18"},"exports":{".":"./hybrid.js","./package.json":"./package.json"},"gitHead":"e64c9d080cf9149a36bcbfae46a375f704ab6193","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/stretch.git","type":"git","directory":"packages/stretch-hybrid"},"_npmVersion":"11.12.1","description":"Hybrid harmonic/percussive time stretch (Driedger) — HPSS split, phase-locked vocoder + OLA per layer","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.3.0","@audio/stretch-wsola":"^1.0.0","@audio/stretch-pvoc-lock":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/stretch-hybrid_1.0.1_1783624507289_0.16330057698685918","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@audio/stretch-hybrid","version":"1.1.0","keywords":["audio","dsp","time-stretch","hpss","harmonic-percussive","hybrid","phase-vocoder","stft"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/stretch-hybrid@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/stretch/tree/main/packages/stretch-hybrid","bugs":{"url":"https://github.com/audiojs/stretch/issues"},"dist":{"shasum":"371aea8a332eff80b5d63a2baab89faa866e81bb","tarball":"https://registry.npmjs.org/@audio/stretch-hybrid/-/stretch-hybrid-1.1.0.tgz","fileCount":7,"integrity":"sha512-30pq3P/1w4Z0vFnGn+o0g4SmcjuJ3nV0aP6FuCKEiHEQ7UWCuo8jJLxpoyGnZBAT3rpa4jZDP26KdfuJaydlHQ==","signatures":[{"sig":"MEUCIFDKKe5r8KPNwJ95mQt50Zm0squBVA6ebJPXyQ4JiqKVAiEA8swFVBRSrLheJD0v3av99HWnXSLKzXThI3jKqtiROYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12200},"main":"hybrid.js","type":"module","audio":"./audio.js","types":"hybrid.d.ts","engines":{"node":">=18"},"exports":{".":"./hybrid.js","./audio":"./audio.js","./package.json":"./package.json"},"gitHead":"585d331eb9dd2585889fb7f973e74c2d8672992b","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/stretch.git","type":"git","directory":"packages/stretch-hybrid"},"_npmVersion":"11.12.1","description":"Hybrid harmonic/percussive time stretch (Driedger) — HPSS split, phase-locked vocoder + OLA per layer","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.3.0","@audio/stretch-wsola":"^1.0.0","@audio/stretch-pvoc-lock":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/stretch-hybrid_1.1.0_1783692371287_0.6060915563196738","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@audio/stretch-hybrid","version":"1.1.1","keywords":["audio","dsp","time-stretch","hpss","harmonic-percussive","hybrid","phase-vocoder","stft"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/stretch-hybrid@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/stretch/tree/main/packages/stretch-hybrid","bugs":{"url":"https://github.com/audiojs/stretch/issues"},"dist":{"shasum":"fdfa2691c04d398daf0bcdc1a9b09618995bb248","tarball":"https://registry.npmjs.org/@audio/stretch-hybrid/-/stretch-hybrid-1.1.1.tgz","fileCount":8,"integrity":"sha512-vfr4F46MX23GU82o9fSAR9++GZyWvn0NRtD3s6gvxmB4u2YSCXfqv6bc2KnOb6XP8gKKfcWr0E2EE93TcFfUWw==","signatures":[{"sig":"MEYCIQC/POJkMLc2In6zzIklln6JtCjrzQVrtRs5xFURWhudvQIhAOAAGRBf0Kw880F3uvimk/GHdAHE6kjz3CY8wQS5xsiC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13508},"main":"hybrid.js","type":"module","audio":"./audio.js","types":"hybrid.d.ts","engines":{"node":">=18"},"exports":{".":"./hybrid.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"gitHead":"4015beca11a555e68b651b429ec6e0867ca5f765","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/stretch.git","type":"git","directory":"packages/stretch-hybrid"},"_npmVersion":"11.12.1","description":"Hybrid harmonic/percussive time stretch (Driedger) — HPSS split, phase-locked vocoder + OLA per layer","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.3.0","@audio/stretch-wsola":"^1.0.0","@audio/stretch-pvoc-lock":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/stretch-hybrid_1.1.1_1783701833093_0.951675456644121","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@audio/stretch-hybrid","version":"1.2.0","keywords":["audio","dsp","time-stretch","hpss","harmonic-percussive","hybrid","phase-vocoder","stft"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/stretch-hybrid@1.2.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/stretch/tree/main/packages/stretch-hybrid","bugs":{"url":"https://github.com/audiojs/stretch/issues"},"dist":{"shasum":"6aff0214a51c127f370eac939c9ad79745e65a87","tarball":"https://registry.npmjs.org/@audio/stretch-hybrid/-/stretch-hybrid-1.2.0.tgz","fileCount":8,"integrity":"sha512-IMcHBL5BsFC4qh9tFY1LY38B3a3uq0dX4ZwJp21SVq4M0SCEE4nCUjFz99L1yWQImswNqJ8aZGFCJ2O886ITmg==","signatures":[{"sig":"MEYCIQDm5U9Js9OEIHIvGJSwh2qRHwj2wT7ylXinYIaPWiwJWwIhAKfgVBv83Ctt+w3QVQMHa963kJfpJyK5NB90rovJImSN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13828},"main":"hybrid.js","type":"module","audio":"./audio.js","types":"hybrid.d.ts","engines":{"node":">=18"},"exports":{".":"./hybrid.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"gitHead":"78d915c706fda0a12a6074abbe352147d0a0844a","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/stretch.git","type":"git","directory":"packages/stretch-hybrid"},"_npmVersion":"11.12.1","description":"Hybrid harmonic/percussive time stretch (Driedger) — HPSS split, phase-locked vocoder + OLA per layer","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.3.0","@audio/stretch-wsola":"^1.0.0","@audio/stretch-pvoc-lock":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/stretch-hybrid_1.2.0_1783724423722_0.17924503119605362","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@audio/stretch-hybrid","version":"1.2.1","keywords":["audio","dsp","time-stretch","hpss","harmonic-percussive","hybrid","phase-vocoder","stft"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/stretch-hybrid@1.2.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/stretch/tree/main/packages/stretch-hybrid","bugs":{"url":"https://github.com/audiojs/stretch/issues"},"dist":{"shasum":"6e604b80d0fb8ec2b840f002ac109cea1401397d","tarball":"https://registry.npmjs.org/@audio/stretch-hybrid/-/stretch-hybrid-1.2.1.tgz","fileCount":8,"integrity":"sha512-AuIxpJM8Z7j6lpyQPLo/E2j64t+cA2mOYbnlLNwixKERZyVEO6vQpD5AXlwmLq5sjJqkTd6o9/GK75/7iTtqLQ==","signatures":[{"sig":"MEYCIQCZeClIss7wKYIS7m0MC9Ka3AmCg2F8iP2ijHavzRh4BQIhAKnRLSsC6pVznjkSv3KvFawgNbzXjpmWH9qliKRlR7cW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13880},"main":"hybrid.js","type":"module","audio":"./audio.js","types":"hybrid.d.ts","engines":{"node":">=18"},"exports":{".":"./hybrid.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/audiojs","gitHead":"5f24d6134001e052553442c5a0399103d6c55948","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/stretch.git","type":"git","directory":"packages/stretch-hybrid"},"_npmVersion":"11.12.1","description":"Hybrid harmonic/percussive time stretch (Driedger) — HPSS split, phase-locked vocoder + OLA per layer","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.3.0","@audio/stretch-wsola":"^1.0.0","@audio/stretch-pvoc-lock":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/stretch-hybrid_1.2.1_1783731906805_0.025979381825375514","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"_id":"@audio/stretch-hybrid@1.2.2","bugs":{"url":"https://github.com/audiojs/stretch/issues"},"dist":{"shasum":"c7a0301d4e5f2cafbd0d0a747813f685bcccbeb2","tarball":"https://registry.npmjs.org/@audio/stretch-hybrid/-/stretch-hybrid-1.2.2.tgz","fileCount":8,"integrity":"sha512-+KJR72+BOZOXuomGTgzEycrsIXy/qTkVtQDZl5Jb7Me6fnpQ9nLtsktnHz9fOUoq8mZH7TJR0eSF5AEDUQEmng==","signatures":[{"sig":"MEYCIQD+gwvLa4/hsfr8NpqXV7mYDhD1cevGLQhJd9azwkN5vgIhANqKYLtRzDGP4ZFQzeJiaS96GNfErmyXocK3ErD7l4hE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCMVLjXJorMTfxU0jJIxjiJnHwXmyzE4Jlvh2W3s3NSfgIhAKSn1Hj5Bn0jvHaCnjNrwhb9LlgV2fLr++RDLyyIHoWf"}],"unpackedSize":17206},"main":"hybrid.js","name":"@audio/stretch-hybrid","type":"module","audio":"./audio.js","types":"hybrid.d.ts","author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"engines":{"node":">=18"},"exports":{".":"./hybrid.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/audiojs","gitHead":"3338d83286ba4e13165427a88c79ce9732fcf1bf","license":"MIT","version":"1.2.2","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"homepage":"https://github.com/audiojs/stretch/tree/main/packages/stretch-hybrid","keywords":["audio","dsp","time-stretch","hpss","harmonic-percussive","hybrid","phase-vocoder","stft"],"repository":{"url":"git+https://github.com/audiojs/stretch.git","type":"git","directory":"packages/stretch-hybrid"},"_npmVersion":"11.12.1","description":"Hybrid harmonic/percussive time stretch (Driedger) — HPSS split, phase-locked vocoder + OLA per layer","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.3.0","@audio/stretch-wsola":"^1.2.2","@audio/stretch-pvoc-lock":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/stretch-hybrid_1.2.2_1790192445320_0.965323331499417"}}},"time":{"created":"2026-07-08T19:49:07.888Z","modified":"2026-09-23T19:40:45.587Z","1.0.0":"2026-07-08T19:49:08.322Z","1.0.1":"2026-07-09T19:15:07.437Z","1.1.0":"2026-07-10T14:06:11.494Z","1.1.1":"2026-07-10T16:43:53.271Z","1.2.0":"2026-07-10T23:00:23.899Z","1.2.1":"2026-07-11T01:05:07.000Z","1.2.2":"2026-09-23T19:40:45.403Z"},"bugs":{"url":"https://github.com/audiojs/stretch/issues"},"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","homepage":"https://github.com/audiojs/stretch/tree/main/packages/stretch-hybrid","keywords":["audio","dsp","time-stretch","hpss","harmonic-percussive","hybrid","phase-vocoder","stft"],"repository":{"url":"git+https://github.com/audiojs/stretch.git","type":"git","directory":"packages/stretch-hybrid"},"description":"Hybrid harmonic/percussive time stretch (Driedger) — HPSS split, phase-locked vocoder + OLA per layer","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/stretch-hybrid\n\nHybrid harmonic/percussive time stretch (Driedger & Müller). Median-filter HPSS splits the spectrogram into a harmonic and a percussive layer; the harmonic layer goes through the phase-locked vocoder, the percussive layer through short-frame OLA — chords stay coherent and attacks stay sharp, where a single algorithm must trade one for the other.\n\n```js\nimport hybrid from '@audio/stretch-hybrid'\nlet out = hybrid(data, { factor: 2 })\n```\n\n| Param | Default | |\n|---|---|---|\n| `factor` | `1` | Time stretch ratio |\n| `frameSize` | `2048` | FFT size for HPSS + harmonic path |\n| `hopSize` | `frameSize/4` | Hop between frames |\n| `percFrame` | `512` | OLA frame for the percussive layer |\n| `harmMedian` | `17` | Median filter across time (frames) |\n| `percMedian` | `17` | Median filter across frequency (bins) |\n\n**Use when:** full mixes — drums over tonal material.<br>\n**Cost:** separation + two stretches ≈ 4–6× the CPU of [`@audio/stretch-pvoc-lock`](../stretch-pvoc-lock) alone; on purely tonal or purely percussive material the single-path algorithms match it for less.\n\nPart of [`@audio/stretch`](../..).\n\n## License\n\n[MIT](./LICENSE) · [ॐ](https://github.com/krishnized/license/)\n","readmeFilename":"README.md"}