{"_id":"@audio/filter-oberheim","_rev":"6-e1e8eacaf11179f6789a6344866331d5","name":"@audio/filter-oberheim","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@audio/filter-oberheim","version":"1.0.0","keywords":["audio","dsp","filter","oberheim"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-oberheim@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-oberheim","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"4a91b2b84253a0780cd2f2d771b657f41acd7489","tarball":"https://registry.npmjs.org/@audio/filter-oberheim/-/filter-oberheim-1.0.0.tgz","fileCount":2,"integrity":"sha512-seA1ArYxduEEgA7TsGKJ+7Eopugg3lPE0E17OMkaerymVXOxbz3goMv8kJDXpWNcpZmqKrIwJukuCzGJg3L6rQ==","signatures":[{"sig":"MEUCIQDeqRWJkyL6/q84OsKHAk0lFUPFC4KWwoMehb8xKRiUKwIgDu7I5hlsZw8RpKeS6qEVbKMZPRSBNwUrt54oTHlA9B8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2828},"main":"oberheim.js","type":"module","engines":{"node":">=18"},"exports":{".":"./oberheim.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-oberheim"},"_npmVersion":"11.12.1","description":"Oberheim SEM state-variable filter (–12 dB/oct multimode)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-oberheim_1.0.0_1783539830229_0.5176868268071888","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@audio/filter-oberheim","version":"1.1.0","keywords":["audio","dsp","filter","oberheim"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-oberheim@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-oberheim","bugs":{"url":"https://github.com/audiojs/filter/issues"},"atom":"./atom.js","dist":{"shasum":"17380a596e902730bbe9d019ac4daf42920ec1cc","tarball":"https://registry.npmjs.org/@audio/filter-oberheim/-/filter-oberheim-1.1.0.tgz","fileCount":3,"integrity":"sha512-NYSQtGOY88770r8O5wgsmZFYLyFvebpfJzew8Ez4rQSn4uAFWTaObCi0IJLDNFc2IOv3yTjeJUSav24xZCvjBw==","signatures":[{"sig":"MEQCIBXueplH/NTdUbTk3Ulq0qcnVmgRHMyz8NP8qrAawLJXAiAVIMZqLUafTaeMbO+ENm+43LhdM7hTmReugc1GY5eW0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3982},"main":"oberheim.js","type":"module","engines":{"node":">=18"},"exports":{".":"./oberheim.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-oberheim"},"_npmVersion":"11.12.1","description":"Oberheim SEM state-variable filter (–12 dB/oct multimode)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-oberheim_1.1.0_1783635145942_0.48832765141679313","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@audio/filter-oberheim","version":"1.1.1","keywords":["audio","dsp","filter","oberheim"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-oberheim@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-oberheim","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"9f59d434a23c86ae2f2bc9e46f234acd67c2d87a","tarball":"https://registry.npmjs.org/@audio/filter-oberheim/-/filter-oberheim-1.1.1.tgz","fileCount":3,"integrity":"sha512-YdrCl+ajwcB2selY2WPzDS+ybRhudCvQb5P5UURa/RNQ7kcqHXmmK7BkGntuaoGV7fz8qvfNyiEafs8Ez+sc5g==","signatures":[{"sig":"MEQCIGKLCqLXOLxH61ToDUI1KxqReJIxdBADgCOHyiJT6ykwAiAwhJ9++Y9+sXqmOJAUYAhV4nSw2AIoubNvn5qrIOlizQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3990},"main":"oberheim.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./oberheim.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-oberheim"},"_npmVersion":"11.12.1","description":"Oberheim SEM state-variable filter (–12 dB/oct multimode)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-oberheim_1.1.1_1783644927126_0.666849979271511","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@audio/filter-oberheim","version":"1.1.2","keywords":["audio","dsp","filter","oberheim"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-oberheim@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-oberheim","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"2f0721900301df877774269f9a79ff41aae1dd0e","tarball":"https://registry.npmjs.org/@audio/filter-oberheim/-/filter-oberheim-1.1.2.tgz","fileCount":4,"integrity":"sha512-R7woeEvW+FCRfbVvqYtCnP01uC/Uprl/ODjwjeu6LW7RD2TIrHtRlj6jCohYcR+/8bHrXCDZf0fnH6kMBitXnQ==","signatures":[{"sig":"MEUCIQCrR8D+4f6WhIPAZq8tzta1rip/i74U3NhRpfDumdZG8AIgLLdBKi75jDracoqoucvYWtDLsMrDCn+K0Vpktkth+tM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5537},"main":"oberheim.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./oberheim.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-oberheim"},"_npmVersion":"11.12.1","description":"Oberheim SEM state-variable filter (–12 dB/oct multimode)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-oberheim_1.1.2_1783701728079_0.6756230424968157","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@audio/filter-oberheim","version":"1.2.0","keywords":["audio","dsp","filter","oberheim"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-oberheim@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-oberheim","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"d7791768b0c47e282ec69e6bf4a013dde4facf44","tarball":"https://registry.npmjs.org/@audio/filter-oberheim/-/filter-oberheim-1.2.0.tgz","fileCount":4,"integrity":"sha512-ttqW+zn1XDAmRZxuFM1amM0TG8JbbUc3ES8K24DkBogc4XT9r4hot9tAmBnahdX+52kgrBNwG03/54sJKpjCOQ==","signatures":[{"sig":"MEYCIQDOhyJXMdDl2QNV/jXbohgfm8058KUKs6ZwQV8vGdQdQAIhAIByoxfavMzDCx67uQ8By+YX/Rdx4HioqZ9tvuzU+RGg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5529},"main":"oberheim.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./oberheim.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-oberheim"},"_npmVersion":"11.12.1","description":"Oberheim SEM state-variable filter (–12 dB/oct multimode)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-oberheim_1.2.0_1783724459088_0.8233916576399523","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@audio/filter-oberheim","version":"1.2.1","description":"Oberheim SEM state-variable filter (–12 dB/oct multimode)","type":"module","sideEffects":false,"main":"oberheim.js","types":"./oberheim.d.ts","exports":{".":{"types":"./oberheim.d.ts","default":"./oberheim.js"},"./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"keywords":["audio","dsp","filter","oberheim"],"license":"MIT","author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/audiojs/filter.git","directory":"packages/filter-oberheim"},"homepage":"https://github.com/audiojs/filter/tree/main/packages/filter-oberheim","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-oberheim@1.2.1","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-M5KXeM74pWaU4C79403h3WZFwnXwIMn+Aqsou7V94gmx6+IpFzslXxl5vUbEqNoKyphK7iGvXgFaZuDffNAJwg==","shasum":"2202d9f7b3f7461dc811683156a30a7eb8a31850","tarball":"https://registry.npmjs.org/@audio/filter-oberheim/-/filter-oberheim-1.2.1.tgz","fileCount":6,"unpackedSize":9086,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDNrrB2eMB+eEROelR3tJBDMr+FtW0C49dmkbQuyQKf0gIhAOwvwn6SseXgL6jU7GryAZut2B5cQkZed4Ua8MAGJiw3"}]},"_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-oberheim_1.2.1_1783731587628_0.6640679654585881"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:43:50.065Z","modified":"2026-07-11T00:59:47.890Z","1.0.0":"2026-07-08T19:43:50.357Z","1.1.0":"2026-07-09T22:12:26.071Z","1.1.1":"2026-07-10T00:55:27.252Z","1.1.2":"2026-07-10T16:42:08.220Z","1.2.0":"2026-07-10T23:00:59.260Z","1.2.1":"2026-07-11T00:59:47.760Z"},"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-oberheim","keywords":["audio","dsp","filter","oberheim"],"repository":{"type":"git","url":"git+https://github.com/audiojs/filter.git","directory":"packages/filter-oberheim"},"description":"Oberheim SEM state-variable filter (–12 dB/oct multimode)","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/filter-oberheim [![npm](https://img.shields.io/npm/v/@audio/filter-oberheim)](https://www.npmjs.com/package/@audio/filter-oberheim) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nOberheim SEM state-variable filter (–12 dB/oct multimode)\n\n```\nnpm install @audio/filter-oberheim\n```\n\n```js\nimport oberheim from '@audio/filter-oberheim'\n```\n\nOberheim SEM (1974) — 2-pole state-variable filter with four modes from one circuit.\n\n**Topology**: 2 trapezoidal integrators with nonlinear feedback; multimode output (LP/HP/BP/notch)<br>\n**Response**: $-12\\,\\text{dB/oct}$; warm, musical resonance; continuous mode morphing<br>\n**Implementation**: ZDF (zero-delay feedback) via trapezoidal integration — Zavalishin, *The Art of VA Filter Design* (2012), Ch. 4–5; $\\tanh$ saturation on the integrator states (not on a separate `drive` input — unlike the ladder filters in this repo, `oberheim` takes no `drive` parameter)\n\n```js\noberheim(buffer, { fc: 1000, resonance: 0.5, type: 'lowpass',  fs: 44100 })\noberheim(buffer, { fc: 1000, resonance: 0.5, type: 'highpass', fs: 44100 })\noberheim(buffer, { fc: 1000, resonance: 0.5, type: 'bandpass', fs: 44100 })\noberheim(buffer, { fc: 1000, resonance: 0.5, type: 'notch',    fs: 44100 })\n```\n\n**Circuit**: Oberheim SEM (1974), Two Voice, Four Voice, Eight Voice<br>\n**vs Moog/Korg**: 2-pole like Korg35 but true state-variable topology; LP/HP/BP/notch from one circuit; warmer resonance character\n\n| Param | Default | |\n|---|---|---|\n| `fc` | `1000` | cutoff frequency, Hz |\n| `resonance` | `0` | 0–1; damping R = 1 − resonance (inverted — resonance=1 gives R=0, max resonance); bandpass peak gain is exactly 1/(2R) |\n| `fs` | `44100` | sample rate, Hz |\n| `type` | `'lowpass'` | `'lowpass'`, `'highpass'`, `'bandpass'`, or `'notch'` |\n\nPass the same `params` object on every call to persist the 2 integrator states across blocks.\n\n**Use when:** multimode synth filter (LP/HP/BP/notch from one set of coefficients) with warm, musical resonance — mode-switch by changing `type` without recomputing coefficients.\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"}