{"_id":"@audio/saturate-multiband","_rev":"6-73b8915ab40de8578dc7ed9401456c36","name":"@audio/saturate-multiband","dist-tags":{"latest":"1.1.4"},"versions":{"1.0.0":{"name":"@audio/saturate-multiband","version":"1.0.0","keywords":["audio","dsp","saturation","multiband"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/saturate-multiband@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":"ea3f89e8f1ccb83588671641251fe977a40c7215","tarball":"https://registry.npmjs.org/@audio/saturate-multiband/-/saturate-multiband-1.0.0.tgz","fileCount":2,"integrity":"sha512-uD1FVsw4rxWe+LFDHPeXex51fQ+9+arkbzkGPNMWprkaMPJv0nbGHlmY28Xoj+C7Sk02xLtjrfJ8/qdpvFlBpg==","signatures":[{"sig":"MEUCIQDlbuyawZsRBfHJIbOifZRX5Ua62chcsahSFLIDwE3w0gIgPB4ZiT5oBJ6/eC1lvrjRG9NRcWf+k5wYvX07L9S54OU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1639},"main":"multiband.js","type":"module","engines":{"node":">=18"},"exports":{".":"./multiband.js","./package.json":"./package.json"},"gitHead":"d66dbb92515c68d654294a7500febf8fdac9f627","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Multiband saturation — LR split + per-band tube drive (Saturn class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/eq-crossover":"^1.0.0","@audio/saturate-tube":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/saturate-multiband_1.0.0_1783540316872_0.9028177408212934","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@audio/saturate-multiband","version":"1.1.0","keywords":["audio","dsp","saturation","multiband"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/saturate-multiband@1.1.0","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"atom":"./atom.js","dist":{"shasum":"0815e96ca1921e7b9b59947fb9d7f554457a517c","tarball":"https://registry.npmjs.org/@audio/saturate-multiband/-/saturate-multiband-1.1.0.tgz","fileCount":3,"integrity":"sha512-tI2Y2pUTWWOmRheuAeOkU/uq5qnwnsjy9IZ38Z6s3DpjJ5BTZcmjoqsXmPW+tpG5Igdak2BADVRBcnoC8yRjAw==","signatures":[{"sig":"MEYCIQDsas1XsOG8Y05xgPqOrEAnMbAJKE67sVK/t0CbxSffGgIhAPLQ5IzKkQQH4qiyFzlELaSev1Tw2MjQTcNHETOKM7KO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2826},"main":"multiband.js","type":"module","engines":{"node":">=18"},"exports":{".":"./multiband.js","./atom":"./atom.js","./package.json":"./package.json"},"gitHead":"4eb16d6abc147239b76587018719aed8ea9bbdb0","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Multiband saturation — LR split + per-band tube drive (Saturn class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/eq-crossover":"^1.0.0","@audio/saturate-tube":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/saturate-multiband_1.1.0_1783635175447_0.3590647921266956","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@audio/saturate-multiband","version":"1.1.1","keywords":["audio","dsp","saturation","multiband"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/saturate-multiband@1.1.1","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"dist":{"shasum":"7648523f5dd5da2793d4589621ace4d9add7b58c","tarball":"https://registry.npmjs.org/@audio/saturate-multiband/-/saturate-multiband-1.1.1.tgz","fileCount":3,"integrity":"sha512-BndiliopX+Xr4nfr51nhIKA83bYF27Snrli6CxzFNtkwvrMCPOfYy6F6chTX24tUjfPZyyXYa14vQZ6e3whqwA==","signatures":[{"sig":"MEYCIQCp2f4OjiacgYZqsxn+xZdhzpwReJHD6gzG4QZ41oO7YAIhAOeB+KBfKLg2gtBdve+nMt7HgD5Wx72nyZUiAR9JD75B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2831},"main":"multiband.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./multiband.js","./audio":"./audio.js","./package.json":"./package.json"},"gitHead":"dcd47d2bf50c850b504a9e771ff4f9ed7472530e","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Multiband saturation — LR split + per-band tube drive (Saturn class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/eq-crossover":"^1.0.0","@audio/saturate-tube":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/saturate-multiband_1.1.1_1783645027324_0.052324946479840984","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@audio/saturate-multiband","version":"1.1.2","keywords":["audio","dsp","saturation","multiband"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/saturate-multiband@1.1.2","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"dist":{"shasum":"2d6d52c896f1b0718783654941238f85af068902","tarball":"https://registry.npmjs.org/@audio/saturate-multiband/-/saturate-multiband-1.1.2.tgz","fileCount":4,"integrity":"sha512-lwry7hL1gd6p+vDpyjLvxw6ZvJpAV6GjekYYL6Tf6Fh6B/6V8UWzz9vna/bU+PtBe4mwVfd+WR41g6dfsq/7mw==","signatures":[{"sig":"MEYCIQCqmEYDgulFnnpnEFl8akt65oT8HlV/ATev79ew85u3ywIhAMxNv7NGIYMumOA7DRq6Ii0cLBGV+SPTf+iHo9ih7VEV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4426},"main":"multiband.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./multiband.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"gitHead":"b5ad7689b2358b09a03cc5eeb458308711a01cce","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Multiband saturation — LR split + per-band tube drive (Saturn class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/eq-crossover":"^1.0.0","@audio/saturate-tube":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/saturate-multiband_1.1.2_1783701789931_0.46224632417456224","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@audio/saturate-multiband","version":"1.1.3","keywords":["audio","dsp","saturation","multiband"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/saturate-multiband@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/saturate#readme","bugs":{"url":"https://github.com/audiojs/saturate/issues"},"dist":{"shasum":"83b6fbfa63d55b8bf474989d28ea9453c7c72e42","tarball":"https://registry.npmjs.org/@audio/saturate-multiband/-/saturate-multiband-1.1.3.tgz","fileCount":4,"integrity":"sha512-5IkGFndy6LeUII8MNyxVbl6ZtR5Gpc3Z/PXOs78Kk5gRRXsRB5xtoUDBwoj5ieerBOClIinvDencS7PcXkmMvw==","signatures":[{"sig":"MEYCIQDg/xH2gpj0BbgDi+zlMWJhGFus6plF+6zNL16ZhGBLHwIhANZWs+3j0MMm/52/Ejp3xdDAsUNU21As/e0Nq5D9nXBE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4510},"main":"multiband.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./multiband.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"gitHead":"7016343e8baafa0500d2c93b17b34b4835891375","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/saturate.git","type":"git","directory":"packages/saturate-multiband"},"_npmVersion":"11.12.1","description":"Multiband saturation — LR split + per-band tube drive (Saturn class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/biquad":"^1.1.0","@audio/eq-crossover":"^1.0.0","@audio/saturate-tube":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/saturate-multiband_1.1.3_1783726328338_0.05163809295331934","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@audio/saturate-multiband","version":"1.1.4","description":"Multiband saturation — LR split + per-band tube drive (Saturn class)","type":"module","sideEffects":false,"main":"multiband.js","exports":{".":"./multiband.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"dependencies":{"@audio/eq-crossover":"^1.0.0","@audio/saturate-tube":"^1.0.0","@audio/biquad":"^1.1.0"},"keywords":["audio","dsp","saturation","multiband"],"license":"MIT","author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"audio":"./audio.js","repository":{"type":"git","url":"git+https://github.com/audiojs/saturate.git","directory":"packages/saturate-multiband"},"funding":"https://github.com/sponsors/audiojs","types":"multiband.d.ts","gitHead":"8e5a2f210f134ccb055e9ca88a40c255bcf4985d","_id":"@audio/saturate-multiband@1.1.4","bugs":{"url":"https://github.com/audiojs/saturate/issues"},"homepage":"https://github.com/audiojs/saturate#readme","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-dc7YYNSAa1mOF1CcpTBu1Kz1qfEQ225hKFz+VC5YKldddD1w1+jFl6dm3s3U0Ia85t9wrDgNoaUwq2N0WO5yHw==","shasum":"679b395ee6b6837f5e2c3100c324740dd4e375e7","tarball":"https://registry.npmjs.org/@audio/saturate-multiband/-/saturate-multiband-1.1.4.tgz","fileCount":6,"unpackedSize":7857,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDiLrYps6WsjKE+e9rBwBgbV1aWIUqOs9qtSc4jZ0EJ1QIhAK4KeemrgKHgdN4xpmMddJJnaLbrGzjyZSdc8e26AQYY"}]},"_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/saturate-multiband_1.1.4_1783731753483_0.021742184603382064"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:51:56.742Z","modified":"2026-07-11T01:02:33.745Z","1.0.0":"2026-07-08T19:51:57.016Z","1.1.0":"2026-07-09T22:12:55.574Z","1.1.1":"2026-07-10T00:57:07.473Z","1.1.2":"2026-07-10T16:43:10.107Z","1.1.3":"2026-07-10T23:32:08.486Z","1.1.4":"2026-07-11T01:02:33.635Z"},"bugs":{"url":"https://github.com/audiojs/saturate/issues"},"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","homepage":"https://github.com/audiojs/saturate#readme","keywords":["audio","dsp","saturation","multiband"],"repository":{"type":"git","url":"git+https://github.com/audiojs/saturate.git","directory":"packages/saturate-multiband"},"description":"Multiband saturation — LR split + per-band tube drive (Saturn class)","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/saturate-multiband [![npm](https://img.shields.io/npm/v/@audio/saturate-multiband)](https://www.npmjs.com/package/@audio/saturate-multiband) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nMultiband saturation — LR split + per-band tube drive (Saturn class)\n\n```\nnpm install @audio/saturate-multiband\n```\n\n```js\nimport multiband from '@audio/saturate-multiband'\n```\n\nLinkwitz-Riley crossover splits the signal into bands, each band gets its own `@audio/saturate-tube` drive (or none), and the bands sum back flat (FabFilter Saturn class — drive the low end without smearing the highs, or vice versa). `bands` is either one options object applied to every band, or an array with one entry per band — `null`/`undefined` in the array means that band passes through the crossover split unsaturated but still summed back in.\n\n```js\nmultiband(data, { freqs: [200, 2000], fs: 44100 })                          // 3 bands, no drive (crossover only)\nmultiband(data, { freqs: [1000], bands: [null, { drive: 5 }], fs: 44100 })  // drive only the high band\nmultiband(data, { freqs: [200, 2000], bands: { drive: 3 }, fs: 44100 })     // same drive on every band\n```\n\n| Param | Default | |\n|---|---|---|\n| `freqs` | `[200, 2000]` | crossover split points in Hz — `N` points produce `N+1` bands |\n| `bands` | `undefined` (no drive) | one options object for every band, or an array of per-band options / `null` |\n| `order` | `4` | Linkwitz-Riley crossover order |\n| `fs` | `44100` | sample rate |\n\nEach band's `@audio/saturate-tube` options accept its own `drive`/`bias`/`oversample` — pass them inside the per-band object, e.g. `{ drive: 5, bias: 0.3 }`.\n\n**Mutates `data` in place** and returns it (same array reference, not a copy). No top-level `mix`: banded drive is applied per band via `bands`, and an unlisted/`null` band is the \"0% wet\" case for that band specifically.\n\n**Use when:** driving one frequency region without smearing the others — bass warmth without top-end grit, or the reverse.<br>\n**Not for:** a single full-band character (use `tube`/`transistor`/`tape`/`waveshaper` directly — cheaper, no crossover phase interaction).\n\n---\n\nPart of the [@audio/saturate](https://github.com/audiojs/saturate) family.\n\nMIT © [audiojs](https://github.com/audiojs)\n","readmeFilename":"README.md"}