{"_id":"@audio/spectral-freeze","_rev":"2-6bb7fce04f65aa6481f88ca5803e29fa","name":"@audio/spectral-freeze","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@audio/spectral-freeze","version":"1.0.0","keywords":["audio","dsp","spectral","freeze"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/spectral-freeze@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":"d7c94a28d4a37b7279cfc5572dc70eb8ba0500ad","tarball":"https://registry.npmjs.org/@audio/spectral-freeze/-/spectral-freeze-1.0.0.tgz","fileCount":2,"integrity":"sha512-GKRdlZjd76u1aCuWTRSThKAkzLEq6LEiT2BZgGsTOXEvmh4xCEeWqdjYEXew1DUKpMwrupsxmdSODyIdqK/6TQ==","signatures":[{"sig":"MEUCIQCbwJ31C8jpfZ0VgvYpfeUY8/CFF/0UQeCiBrashqFJ5AIgDpOplsmp+a/hygwczNPDtbEttgPX4/Dcj0aAIot8lS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2653},"main":"freeze.js","type":"module","engines":{"node":">=18"},"exports":{".":"./freeze.js","./package.json":"./package.json"},"gitHead":"a1aba4f2662a0f284ef88a04047c6cfa3c3ce6e5","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Spectral freeze — sustain a spectral frame with phase dispersion (Spectral Time class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/spectral-freeze_1.0.0_1783540018236_0.6585385452545769","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@audio/spectral-freeze","version":"1.0.1","description":"Spectral freeze — sustain a spectral frame with phase dispersion (Spectral Time class)","type":"module","sideEffects":false,"main":"freeze.js","exports":{".":"./freeze.js","./package.json":"./package.json"},"dependencies":{"fourier-transform":"^2.2.0"},"keywords":["audio","dsp","spectral","freeze"],"license":"MIT","author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"types":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/audiojs/spectral.git","directory":"packages/spectral-freeze"},"funding":"https://github.com/sponsors/audiojs","gitHead":"0bf461273c2acb2401ff9842afec35a43fd05a9a","_id":"@audio/spectral-freeze@1.0.1","bugs":{"url":"https://github.com/audiojs/spectral/issues"},"homepage":"https://github.com/audiojs/spectral#readme","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-bOGw032BLAeDOcIJT6S4glUFTZW6IH62vWfllaAkV1o7hgJOlkEHPi1CWNTwHy0B6JnVtpNwKtI4uRhDEsCCIA==","shasum":"b93db9fef3c3dbb84108777d44059553ad0c4820","tarball":"https://registry.npmjs.org/@audio/spectral-freeze/-/spectral-freeze-1.0.1.tgz","fileCount":4,"unpackedSize":4861,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIB78GoEZlaa4klT7acPMbVR2Cq+FpInJYEAkOrQFu79CAiEA4nK1ufmnJDsdAAlTjgIxJ7J++/aJsOcyW5pT9qAUQts="}]},"_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/spectral-freeze_1.0.1_1783731880892_0.5933790412821971"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:46:58.021Z","modified":"2026-07-11T01:04:41.246Z","1.0.0":"2026-07-08T19:46:58.378Z","1.0.1":"2026-07-11T01:04:41.007Z"},"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","keywords":["audio","dsp","spectral","freeze"],"description":"Spectral freeze — sustain a spectral frame with phase dispersion (Spectral Time class)","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/spectral-freeze\n\n> Spectral freeze — sustain one spectral frame indefinitely, phase advanced per bin with random dispersion against buzz (Ableton Spectral Time / Paulstretch-freeze class).\n\n`npm install @audio/spectral-freeze`\n\n```js\nimport freeze from '@audio/spectral-freeze'\n\nlet out = freeze(data, { fs: 44100, at: 1.5, duration: 4, frameSize: 4096 })\n// Float32Array(round(duration * fs)) — new audio, the frame at `at` sustained for `duration` seconds\n```\n\nTakes the magnitude spectrum of one analysis frame (windowed at `at`), then resynthesizes it hop\nby hop: each bin's phase advances by its own bin frequency plus a small random offset (seeded by\n`seed`), so the sustained tone doesn't beat/buzz from perfectly periodic phase increments the way\na naive frame-repeat would.\n\nOptions: - `fs` — sample rate (default 44100, Hz) · `at` — frame to freeze, seconds (default 0) · `duration` — output length, seconds (default 2) · `frameSize` — STFT frame (default 4096) · `seed` — phase-dispersion RNG seed (default 1, deterministic)\n\nUse when: pad/drone textures from a single frozen instant, spectral \"hold\" effects — not a\ngeneral time-stretch (use `@audio/spectral-pvoc` / `@audio/stretch` for that).\n\nPart of [@audio/spectral](https://github.com/audiojs/spectral).\n","readmeFilename":"README.md","homepage":"https://github.com/audiojs/spectral#readme","repository":{"type":"git","url":"git+https://github.com/audiojs/spectral.git","directory":"packages/spectral-freeze"},"bugs":{"url":"https://github.com/audiojs/spectral/issues"}}