{"_id":"@audio/saturate-tape","_rev":"6-eb1f8edb3402d64560628af3e55e707a","name":"@audio/saturate-tape","dist-tags":{"latest":"1.1.3"},"versions":{"1.0.0":{"name":"@audio/saturate-tape","version":"1.0.0","keywords":["audio","dsp","saturation","tape"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/saturate-tape@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":"f6c30334b0eb6b30fc66d5f2cb71fd58b488dbab","tarball":"https://registry.npmjs.org/@audio/saturate-tape/-/saturate-tape-1.0.0.tgz","fileCount":2,"integrity":"sha512-gXciwnVnu5aCZ6TwrmqubSqdW983Iv7pmVzzVVGuuroyC+Wlb6L6W91rdVLdGdyc5Gg7mTwZmXtNWSwh9kJv/A==","signatures":[{"sig":"MEYCIQClnutMNdErSg210cj4fzn4mL10Dm3PwJWgTUyRWcCUiQIhALMVqT5sYUUsx2WXDuMCLO0YaiMvcLvYdwLNGsr0yyPj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1284},"main":"tape.js","type":"module","engines":{"node":">=18"},"exports":{".":"./tape.js","./package.json":"./package.json"},"gitHead":"d66dbb92515c68d654294a7500febf8fdac9f627","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Tape saturation — tanh transfer + playback HF rolloff (simplified machine model)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/saturate-core":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/saturate-tape_1.0.0_1783540318994_0.07603813493185618","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@audio/saturate-tape","version":"1.0.1","keywords":["audio","dsp","saturation","tape"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/saturate-tape@1.0.1","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"dist":{"shasum":"853718787ee49230168c33f59f6a8d55ba2c4ec1","tarball":"https://registry.npmjs.org/@audio/saturate-tape/-/saturate-tape-1.0.1.tgz","fileCount":3,"integrity":"sha512-1rYi6MWSSsx3Tw5EpvXYZL8x93gJL0o+wZEPGSyZ+lVk5n3nUD4uRCRt3dDfGKqhk9qDUpU1qtP6QycenhT0rg==","signatures":[{"sig":"MEYCIQD5GnP3Qg4EiwnGe5alYLyzJfaqSar54qRf4t+GZD9zKgIhAOxpUX2obNNc88Ap4Af/nPbYhJ+W3P9v2FyOHR0xzdQ7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2540},"main":"tape.js","type":"module","engines":{"node":">=18"},"exports":{".":"./tape.js","./package.json":"./package.json"},"gitHead":"18a6fb1ccc06c55f4297e6a4f60c5eff28ab0a8d","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Tape saturation — tanh transfer + playback HF rolloff (simplified machine model)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/resample-sinc":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/saturate-tape_1.0.1_1783623898326_0.5277661443810118","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@audio/saturate-tape","version":"1.1.0","keywords":["audio","dsp","saturation","tape"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/saturate-tape@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":"093acb552e8feebc33dc0ce412df8feddfc8db36","tarball":"https://registry.npmjs.org/@audio/saturate-tape/-/saturate-tape-1.1.0.tgz","fileCount":4,"integrity":"sha512-jlhWdMuqwc1pJVKrrCYmkJ2MqG1NJCpUIfMjSa1q6A4VZ278Mqjiy0JneJ+VtchO8FFQoErpw8ywVvV0WM1BDA==","signatures":[{"sig":"MEYCIQDrRf73qxKHVAdbgGTAV9ccsHlaxYP65NCPhr49sqNz/AIhANQQWwjrQgeA0jviC5NR36VlF1loZfCKe+apt4fPySG/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3481},"main":"tape.js","type":"module","engines":{"node":">=18"},"exports":{".":"./tape.js","./atom":"./atom.js","./package.json":"./package.json"},"gitHead":"4eb16d6abc147239b76587018719aed8ea9bbdb0","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Tape saturation — tanh transfer + playback HF rolloff (simplified machine model)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/resample-sinc":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/saturate-tape_1.1.0_1783635169557_0.7568582250485658","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@audio/saturate-tape","version":"1.1.1","keywords":["audio","dsp","saturation","tape"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/saturate-tape@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":"5bdc1a634c3d4a1cc46e241bd8afdd0559922a03","tarball":"https://registry.npmjs.org/@audio/saturate-tape/-/saturate-tape-1.1.1.tgz","fileCount":4,"integrity":"sha512-wUiNbQ1Wf9AonAFOmqhJJtytNJ8AHWU+RidDHL94TGlGiiU4/sTM5MmpJAZ/cc2pSUHy0+qGoQHePM/o1lkGlA==","signatures":[{"sig":"MEYCIQDP8OR+UQf8omsSroYifnPoEXtp5UGPyiV7W7Wl0rr4mQIhAMX6gE+vwP6yz5uyuvto/N4fJbpGvDJTA8qaEzjPiYXy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3487},"main":"tape.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./tape.js","./audio":"./audio.js","./package.json":"./package.json"},"gitHead":"dcd47d2bf50c850b504a9e771ff4f9ed7472530e","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Tape saturation — tanh transfer + playback HF rolloff (simplified machine model)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/resample-sinc":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/saturate-tape_1.1.1_1783645029045_0.6531331934277895","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@audio/saturate-tape","version":"1.1.2","keywords":["audio","dsp","saturation","tape"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/saturate-tape@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":"00d2e1147e1637bace6722f1b40b502597e155ab","tarball":"https://registry.npmjs.org/@audio/saturate-tape/-/saturate-tape-1.1.2.tgz","fileCount":5,"integrity":"sha512-Owu5C0tx0yTYDkHEucGryAdKDl1yWVMRbE7G81oIQhfJpWV52YCP19R4keSaIkCmc+v5sESBzOC5kWwR99s20g==","signatures":[{"sig":"MEUCIQDo2LtmjJr0uhTtl0ePg2n2iEqWSeIC40lddm/W8qKZOQIgGNMtqTAAb+x4svibO5g0vKJhMjC4lgt6ojvvIjGKx9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4929},"main":"tape.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./tape.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":"Tape saturation — tanh transfer + playback HF rolloff (simplified machine model)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/resample-sinc":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/saturate-tape_1.1.2_1783701791791_0.268677622928694","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@audio/saturate-tape","version":"1.1.3","description":"Tape saturation — tanh transfer + playback HF rolloff (simplified machine model)","type":"module","sideEffects":false,"main":"tape.js","exports":{".":"./tape.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"dependencies":{"@audio/resample-sinc":"^1.0.0"},"keywords":["audio","dsp","saturation","tape"],"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-tape"},"funding":"https://github.com/sponsors/audiojs","types":"tape.d.ts","gitHead":"8e5a2f210f134ccb055e9ca88a40c255bcf4985d","_id":"@audio/saturate-tape@1.1.3","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-9U44aqoE3OVY4GSrxToDHI2RouYWXWjHIiMhrOBCJ8uc3wFhdbTbkVYZ0Q76LkFW9RBxGl3AnzSavZHsF9uVcQ==","shasum":"cfb611be4223271f4d1ecb0c0f7b4f76d034d063","tarball":"https://registry.npmjs.org/@audio/saturate-tape/-/saturate-tape-1.1.3.tgz","fileCount":7,"unpackedSize":7853,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC1NVjVb8QqTNXWxnBctlsqtSC6OMT7WovvRXwSv6TZGAiAvn+pH+QT3HuCIg32JXH0f2BnvCjTLPdBOGO63mniPZw=="}]},"_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-tape_1.1.3_1783731755594_0.8621309139217515"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:51:58.779Z","modified":"2026-07-11T01:02:35.885Z","1.0.0":"2026-07-08T19:51:59.120Z","1.0.1":"2026-07-09T19:04:58.466Z","1.1.0":"2026-07-09T22:12:49.685Z","1.1.1":"2026-07-10T00:57:09.216Z","1.1.2":"2026-07-10T16:43:11.946Z","1.1.3":"2026-07-11T01:02:35.743Z"},"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","keywords":["audio","dsp","saturation","tape"],"description":"Tape saturation — tanh transfer + playback HF rolloff (simplified machine model)","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/saturate-tape [![npm](https://img.shields.io/npm/v/@audio/saturate-tape)](https://www.npmjs.com/package/@audio/saturate-tape) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nTape saturation — tanh transfer + playback HF rolloff (simplified machine model)\n\n```\nnpm install @audio/saturate-tape\n```\n\n```js\nimport tape from '@audio/saturate-tape'\n```\n\nSimplified tape-machine model: a mildly asymmetric `tanh`-plus-quadratic transfer (a milder even/odd blend than `tube`/`transistor`), followed by a one-pole low-pass standing in for playback-head HF loss (`warmth` sets the cutoff). Oversampled at the shaping stage (windowed-sinc up → shape → windowed-sinc down) to keep the extra harmonics from aliasing; the low-pass runs at the native rate afterward.\n\n```js\ntape(data, { drive: 2, warmth: 0.4, fs: 44100 })\ntape(data, { drive: 1.5, mix: 0.7 })\n```\n\n| Param | Default | |\n|---|---|---|\n| `drive` | `1.5` | pre-gain into the tanh+quadratic curve |\n| `warmth` | `0.25` | 0..1 — HF rolloff amount (higher = darker, more \"tape\") |\n| `fs` | `44100` | sample rate |\n| `oversample` | `4` | oversample factor for the shaping stage; `1` disables oversampling |\n| `mix` | `1` | 0..1 — wet/dry blend of the *whole* processed signal (shaping + rolloff) against the untouched input |\n\n**Mutates `data` in place** and returns it (same array reference, not a copy). HF content rolls off measurably more than LF content at equal drive (≥3 dB more loss at 8 kHz vs 500 Hz in the family test suite) — the rolloff, not just the nonlinearity, is what reads as \"tape.\"\n\n**Use when:** darker, HF-rolled saturation — mix bus glue, vintage tape color.<br>\n**Not for:** a bright, unfiltered harmonic signature (use `tube`/`transistor`/`waveshaper`, none of which touch the frequency response).\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","homepage":"https://github.com/audiojs/saturate#readme","repository":{"type":"git","url":"git+https://github.com/audiojs/saturate.git","directory":"packages/saturate-tape"},"bugs":{"url":"https://github.com/audiojs/saturate/issues"}}