{"_id":"@audio/filter-korg35","_rev":"6-43d7bb3274f43927a98e149466d248e8","name":"@audio/filter-korg35","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@audio/filter-korg35","version":"1.0.0","keywords":["audio","dsp","filter","korg35"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-korg35@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/filter/tree/main/packages/filter-korg35","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"74b398c2e628681d202307d1854d1e09077d707a","tarball":"https://registry.npmjs.org/@audio/filter-korg35/-/filter-korg35-1.0.0.tgz","fileCount":2,"integrity":"sha512-2CIPnq8gl8FcHDspwHDin8kwA4QeKew3+wjPuD+2fxIbAiAdo2jE/EkMnf16/28EdTp1ZLjt5XKELj9rhnucwQ==","signatures":[{"sig":"MEYCIQCi5jtfoiWyUVGl5rFB8VA/RvsrvkUFLyL6xtRl6Cw4kQIhAJVGq182bfc0vA9q9KJE8BWHibJmQFJ6FUNpIplB1QjD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3505},"main":"korg35.js","type":"module","engines":{"node":">=18"},"exports":{".":"./korg35.js","./package.json":"./package.json"},"gitHead":"df0c10910638b429ad2e246e6c0df608999d85cc","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/filter.git","type":"git","directory":"packages/filter-korg35"},"_npmVersion":"11.12.1","description":"Korg MS-20 style filter (Korg35)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-korg35_1.0.0_1783539825859_0.5215763668539763","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@audio/filter-korg35","version":"1.1.0","keywords":["audio","dsp","filter","korg35"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-korg35@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/filter/tree/main/packages/filter-korg35","bugs":{"url":"https://github.com/audiojs/filter/issues"},"atom":"./atom.js","dist":{"shasum":"5a5d33b1147643e224e33cb9970b4f5bcd86faab","tarball":"https://registry.npmjs.org/@audio/filter-korg35/-/filter-korg35-1.1.0.tgz","fileCount":3,"integrity":"sha512-Ow4+qkn4Xooo0X6XT0KkBxd9Bprjj8oV9BAxPEGGuJOs9jQYbfaC9mPzoC00sXx7Ztu6oJD7GiHB1VmH8FtUxg==","signatures":[{"sig":"MEUCIQDnYkcOhygvaga2yZWxeqeZJs9ZLk+qYBcHf+1lPJCpOAIgQudTraTYvNFABnxkY6HEIdjPw39qLS2vATYAVXH2plQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4726},"main":"korg35.js","type":"module","engines":{"node":">=18"},"exports":{".":"./korg35.js","./atom":"./atom.js","./package.json":"./package.json"},"gitHead":"41975fc4f2ec6f0f72da7b3848e7a0509df6f148","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/filter.git","type":"git","directory":"packages/filter-korg35"},"_npmVersion":"11.12.1","description":"Korg MS-20 style filter (Korg35)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-korg35_1.1.0_1783635141698_0.2399664585901531","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@audio/filter-korg35","version":"1.1.1","keywords":["audio","dsp","filter","korg35"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-korg35@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/filter/tree/main/packages/filter-korg35","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"c6036859a1a15c568e53fbaaa734f066ef6a023e","tarball":"https://registry.npmjs.org/@audio/filter-korg35/-/filter-korg35-1.1.1.tgz","fileCount":3,"integrity":"sha512-/rJVozfpNToOk8vx3mzmqxuR4/YejD0ejNdUoCFHwGVuexAH7MDxShBFJ98jLJRzj3dlHcKvnMfyeJ4FNnuC9Q==","signatures":[{"sig":"MEYCIQDWoW3m8Oz+xNptj1g6dsdS1//C9JA73s16xqiQZxrsBAIhAOPd2il3NFRvsO7KVRkpkStksw24IjzrCeUhbfUxlHID","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4734},"main":"korg35.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./korg35.js","./audio":"./audio.js","./package.json":"./package.json"},"gitHead":"b16f16abf03c4b73cb65bdecbba4359933b9d9fe","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/filter.git","type":"git","directory":"packages/filter-korg35"},"_npmVersion":"11.12.1","description":"Korg MS-20 style filter (Korg35)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-korg35_1.1.1_1783644923962_0.4859905442858712","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@audio/filter-korg35","version":"1.1.2","keywords":["audio","dsp","filter","korg35"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-korg35@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/filter/tree/main/packages/filter-korg35","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"20379b2e83459382793f4aa0ce46b710ec480625","tarball":"https://registry.npmjs.org/@audio/filter-korg35/-/filter-korg35-1.1.2.tgz","fileCount":4,"integrity":"sha512-r5kMs9p6D2y6Wl1zG+uCry2Y9wKI2CEDANNXoEs+PZhEphI2vpsuU6uA12bGJyJgXPQAsdbw7SMazqrboXpTTA==","signatures":[{"sig":"MEQCIHLZrZNm4Xqtt3sPh5NLMX7KICwGUlwhA70KYbone4WfAiBtj1q2A7u/ZUch8OlDZ+LBFNjuXpPg/ACdygMo1CA6+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6354},"main":"korg35.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./korg35.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"gitHead":"1d208e2a19acb6248ca6c47fd9211a2f2ee340f4","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/filter.git","type":"git","directory":"packages/filter-korg35"},"_npmVersion":"11.12.1","description":"Korg MS-20 style filter (Korg35)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-korg35_1.1.2_1783701723512_0.45648805480899846","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@audio/filter-korg35","version":"1.2.0","keywords":["audio","dsp","filter","korg35"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-korg35@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/filter/tree/main/packages/filter-korg35","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"7c2fc42553b7ccd3db2446d8acbaeb473f6f35ed","tarball":"https://registry.npmjs.org/@audio/filter-korg35/-/filter-korg35-1.2.0.tgz","fileCount":4,"integrity":"sha512-flTiLPo2eCsc0wYlIpp7F5XLwZS598iAIMboWxXsANlslUfY7hbXZI7AmcTzRc4UZSHF+OguhIyEUiz/y+oxwg==","signatures":[{"sig":"MEQCIBho2qlnovxEjKHNfL/XNBxmo64Kl/XK/xEtoIqgNWyEAiAeBUX7jlPc7GzzFErx8ZfYWjLM4z3HK/1Xh8C7e5cbvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6346},"main":"korg35.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./korg35.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"gitHead":"5e37f6c50e48b5296fee32e00faae5f243eaef9e","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/filter.git","type":"git","directory":"packages/filter-korg35"},"_npmVersion":"11.12.1","description":"Korg MS-20 style filter (Korg35)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-korg35_1.2.0_1783724457366_0.3713911793587379","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@audio/filter-korg35","version":"1.2.1","description":"Korg MS-20 style filter (Korg35)","type":"module","sideEffects":false,"main":"korg35.js","types":"./korg35.d.ts","exports":{".":{"types":"./korg35.d.ts","default":"./korg35.js"},"./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"keywords":["audio","dsp","filter","korg35"],"license":"MIT","author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/audiojs/filter.git","directory":"packages/filter-korg35"},"homepage":"https://github.com/audiojs/filter/tree/main/packages/filter-korg35","bugs":{"url":"https://github.com/audiojs/filter/issues"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"audio":"./audio.js","funding":"https://github.com/sponsors/audiojs","gitHead":"5182c8649144d83c9fda67a36db76f3b195588a3","_id":"@audio/filter-korg35@1.2.1","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-BVnyPPNU3izXWbtWubInx2OPIscoCaHR1HQgNRwIjdJPkbM9m0tFXNokfrv8aCc2c3dlZR5NvgD/Hdlqwwmfag==","shasum":"5c76fbab168afe4e256f8f3123da2dcbe04578e7","tarball":"https://registry.npmjs.org/@audio/filter-korg35/-/filter-korg35-1.2.1.tgz","fileCount":6,"unpackedSize":9983,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGgtS6EGY3cofq0bfbIBH8292sR4T+q3naDYOgIXqZpiAiB0VyIOv0dXpJgvKFKuptL7kinYl1dQWqxPv7/3aiwp6g=="}]},"_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/filter-korg35_1.2.1_1783731583431_0.6324806522941373"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:43:45.703Z","modified":"2026-07-11T00:59:43.722Z","1.0.0":"2026-07-08T19:43:45.990Z","1.1.0":"2026-07-09T22:12:21.881Z","1.1.1":"2026-07-10T00:55:24.115Z","1.1.2":"2026-07-10T16:42:03.659Z","1.2.0":"2026-07-10T23:00:57.512Z","1.2.1":"2026-07-11T00:59:43.557Z"},"bugs":{"url":"https://github.com/audiojs/filter/issues"},"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","homepage":"https://github.com/audiojs/filter/tree/main/packages/filter-korg35","keywords":["audio","dsp","filter","korg35"],"repository":{"type":"git","url":"git+https://github.com/audiojs/filter.git","directory":"packages/filter-korg35"},"description":"Korg MS-20 style filter (Korg35)","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/filter-korg35 [![npm](https://img.shields.io/npm/v/@audio/filter-korg35)](https://www.npmjs.com/package/@audio/filter-korg35) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nKorg MS-20 style filter (Korg35)\n\n```\nnpm install @audio/filter-korg35\n```\n\n```js\nimport korg35 from '@audio/filter-korg35'\n```\n\nKorg MS-10/MS-20, 1978 — 2-pole filter with lowpass and highpass outputs from nonlinear feedback.\n\n**Topology**: 2 cascaded one-pole sections with nonlinear feedback; HP = input − LP<br>\n**Response**: $-12\\,\\text{dB/oct}$; resonance 0–1 adds damping/saturation character — no resonant peak, no self-oscillation at any setting (2 real poles in the loop can't reach the −180° phase Barkhausen's criterion needs at any finite, audible frequency, unlike Moog/Diode's 4-pole loops)<br>\n**Complementarity**: LP+HP=input holds exactly only at resonance=0 (verified to 1e-16); at resonance>0 the HP tap's extra feedback term makes LP+HP diverge from the input (measured −7.5 dB to +1.4 dB error at resonance=0.8 across 200 Hz–5 kHz)\n\n```js\nkorg35(buffer, { fc: 1000, resonance: 0.5, type: 'lowpass',  fs: 44100 })\nkorg35(buffer, { fc: 1000, resonance: 0.5, type: 'highpass', fs: 44100 })\n```\n\n**Circuit**: Korg MS-10/MS-20 (1978)<br>\n**Analysis**: Stilson & Smith, \"Analyzing the Korg MS-20 Filter\" (1996); Zavalishin, *The Art of VA Filter Design* (2012), Ch. 5<br>\n**vs Moog ladder**: 2-pole ($-12\\,\\text{dB/oct}$) vs 4-pole ($-24\\,\\text{dB/oct}$); Korg35 has both LP and HP taps from one circuit, but no self-oscillation\n\n| Param | Default | |\n|---|---|---|\n| `fc` | `1000` | cutoff frequency, Hz |\n| `resonance` | `0` | 0–1; feedback k = 2·resonance; never self-oscillates |\n| `fs` | `44100` | sample rate, Hz |\n| `drive` | `1` | input gain into the feedback-path tanh saturation |\n| `type` | `'lowpass'` | `'lowpass'` or `'highpass'` |\n\nPass the same `params` object on every call to persist the 2 stage states across blocks.\n\n**Use when:** MS-20-style aggressive filter character with a highpass tap available; use `moogLadder` for 4-pole warmth and true self-oscillation instead.\n\n---\n\nPart of [@audio/filter](https://github.com/audiojs/filter) — the filter family umbrella. This README is generated from the umbrella docs.\n\nMIT © [audiojs](https://github.com/audiojs)\n","readmeFilename":"README.md"}