{"_id":"@audio/filter-resonator","_rev":"6-286181f0622c05f1d4198f2abc8d9a64","name":"@audio/filter-resonator","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@audio/filter-resonator","version":"1.0.0","keywords":["audio","dsp","filter","resonator"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-resonator@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-resonator","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"6caf5fafb5fab971198e8db15c53a0a59587f0cf","tarball":"https://registry.npmjs.org/@audio/filter-resonator/-/filter-resonator-1.0.0.tgz","fileCount":2,"integrity":"sha512-KbVYRYihAjitQDJSAa0XS/6EPP4ezvIPWJJsqNuJ5TDlEbm6FhNEY/J8nJmKbKgFmq2F8yG8R4vOeaT9EOZ0KQ==","signatures":[{"sig":"MEYCIQDSMEnm/fPv7QZzwrW6ADMSGNqdf/FsAnMS4N30SAjMdwIhAKBqpxuER3zmo1+/skFGqp9BVc3ZdGfWf9AEh92+a1x3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2599},"main":"resonator.js","type":"module","engines":{"node":">=18"},"exports":{".":"./resonator.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-resonator"},"_npmVersion":"11.12.1","description":"Constant-peak-gain resonator (JOS two-zero form)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-resonator_1.0.0_1783539834887_0.7413333763732406","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@audio/filter-resonator","version":"1.1.0","keywords":["audio","dsp","filter","resonator"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-resonator@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-resonator","bugs":{"url":"https://github.com/audiojs/filter/issues"},"atom":"./atom.js","dist":{"shasum":"2c1b477083b5d1049b5d113336226063a1006286","tarball":"https://registry.npmjs.org/@audio/filter-resonator/-/filter-resonator-1.1.0.tgz","fileCount":3,"integrity":"sha512-ZX+rUieNfJmp7yQzQ6TTry3nppn8y5LvOwl4FCgjghOrWnxESxulORAKFt/1ROzu73kt9SEwbBTxJVM5ltJ0nQ==","signatures":[{"sig":"MEUCIQDWnQk5sn09zkPqYHymR0vLuzGoaHjC2oWDwfTJ5/lz3QIgSjxYDuFKPkZ/fOlwCq9yCIWoTb/NBo4niXwZq1T9oAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3643},"main":"resonator.js","type":"module","engines":{"node":">=18"},"exports":{".":"./resonator.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-resonator"},"_npmVersion":"11.12.1","description":"Constant-peak-gain resonator (JOS two-zero form)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-resonator_1.1.0_1783635147930_0.46547512094619337","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@audio/filter-resonator","version":"1.1.1","keywords":["audio","dsp","filter","resonator"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-resonator@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-resonator","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"56e22acee65d27151ae9519c65591b4a6b5f8853","tarball":"https://registry.npmjs.org/@audio/filter-resonator/-/filter-resonator-1.1.1.tgz","fileCount":3,"integrity":"sha512-ls4JNCEcao7+9VfQQUXY9/WSYSuS5OOdxhpb5lrkvmb9Pq5tVY4npcZDPHY5pxWuwTCpQAkuYKAI8ZDtKjqUtg==","signatures":[{"sig":"MEQCIBO2ziR2mB+L3nBKQkt484Sm0enT+9aiiiMay93MFVU9AiBDXlURIOrx5X6ZfO/SLNn5nLbsHgr6C1GPxjqMCvZ/0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3651},"main":"resonator.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./resonator.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-resonator"},"_npmVersion":"11.12.1","description":"Constant-peak-gain resonator (JOS two-zero form)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-resonator_1.1.1_1783644930417_0.49999252814879913","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@audio/filter-resonator","version":"1.1.2","keywords":["audio","dsp","filter","resonator"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-resonator@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-resonator","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"5d6def2f0aab176bdb06b0ebe0f8c85f10177621","tarball":"https://registry.npmjs.org/@audio/filter-resonator/-/filter-resonator-1.1.2.tgz","fileCount":4,"integrity":"sha512-JCtHCPJgAJfSrCs7In4nDaVo1MZXaiH+SxC5eATrlDdqUtnDCLSPpXz1jtAQk0sNIuNTDFceojfPt7bdmF7oGQ==","signatures":[{"sig":"MEUCIHlCvz9UFqP7A+BhSoiRmNWS/yp0k3W4llRoHMHGc4EDAiEAqapcdmgc2PfpBDysacJDZzoHmGtSJIYAFvzgpzSqudg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4995},"main":"resonator.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./resonator.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-resonator"},"_npmVersion":"11.12.1","description":"Constant-peak-gain resonator (JOS two-zero form)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-resonator_1.1.2_1783701732288_0.3549273037505938","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@audio/filter-resonator","version":"1.2.0","keywords":["audio","dsp","filter","resonator"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/filter-resonator@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-resonator","bugs":{"url":"https://github.com/audiojs/filter/issues"},"dist":{"shasum":"7c31f8b4cc7102640471c065d7f879b0cd9e2aeb","tarball":"https://registry.npmjs.org/@audio/filter-resonator/-/filter-resonator-1.2.0.tgz","fileCount":4,"integrity":"sha512-WB9iBMh0kRXfhkhZB3fXHPK0m05oloI+SSsXVi2eYwKtsxi38rBJ5t3bUddihbeEUf7td6XZDbT0PlDEQjuf7w==","signatures":[{"sig":"MEUCIQDIOVnaB5YNOX2Uxf9M41Q6jVQgmXUuAjPEHHEVnRuqpAIgSUq32oXEdm7PfpzJQ3ZpFzX05D0bWBjX3h1o9r7VGsw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4991},"main":"resonator.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./resonator.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-resonator"},"_npmVersion":"11.12.1","description":"Constant-peak-gain resonator (JOS two-zero form)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/filter-resonator_1.2.0_1783724460951_0.7790146625668528","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@audio/filter-resonator","version":"1.2.1","description":"Constant-peak-gain resonator (JOS two-zero form)","type":"module","sideEffects":false,"main":"resonator.js","types":"./resonator.d.ts","exports":{".":{"types":"./resonator.d.ts","default":"./resonator.js"},"./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"keywords":["audio","dsp","filter","resonator"],"license":"MIT","author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/audiojs/filter.git","directory":"packages/filter-resonator"},"homepage":"https://github.com/audiojs/filter/tree/main/packages/filter-resonator","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-resonator@1.2.1","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-5MA1NGPYh49s1UFNbiVkVyFkt0SQPf0Y1LF0RmPHUkfAdKPs6j8OWkkR4ABzGLSVZrN3ty6193E8fBqVOz36aA==","shasum":"2408ca3002f9e9b5e27ce83211344a89a33b774d","tarball":"https://registry.npmjs.org/@audio/filter-resonator/-/filter-resonator-1.2.1.tgz","fileCount":6,"unpackedSize":8051,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIALvcXYqgdyYpGGY7KMuU1Hp3bBwD9B6HLVbFYbQPxF7AiBEYoCuglp9XbtYtsov0A9NJ5MZ+6d3LnMNhmwS+2yRcg=="}]},"_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-resonator_1.2.1_1783731592100_0.26753165435579374"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:43:54.690Z","modified":"2026-07-11T00:59:52.429Z","1.0.0":"2026-07-08T19:43:55.034Z","1.1.0":"2026-07-09T22:12:28.074Z","1.1.1":"2026-07-10T00:55:30.550Z","1.1.2":"2026-07-10T16:42:12.467Z","1.2.0":"2026-07-10T23:01:01.105Z","1.2.1":"2026-07-11T00:59:52.243Z"},"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-resonator","keywords":["audio","dsp","filter","resonator"],"repository":{"type":"git","url":"git+https://github.com/audiojs/filter.git","directory":"packages/filter-resonator"},"description":"Constant-peak-gain resonator (JOS two-zero form)","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/filter-resonator [![npm](https://img.shields.io/npm/v/@audio/filter-resonator)](https://www.npmjs.com/package/@audio/filter-resonator) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nConstant-peak-gain resonator (JOS two-zero form)\n\n```\nnpm install @audio/filter-resonator\n```\n\n```js\nimport resonator from '@audio/filter-resonator'\n```\n\nConstant peak-gain bandpass — peak amplitude stays fixed regardless of bandwidth.\n\n$H(z) = \\dfrac{\\frac{1-R^2}{2}(1 - z^{-2})}{1 - 2R\\cos(\\omega_0)z^{-1} + R^2 z^{-2}}$\n\n**Pole radius**: $R = e^{-\\pi \\cdot bw / f_s}$ — controls bandwidth; $bw \\to 0$ gives infinite Q<br>\n**Peak gain**: always 0 dB by construction — the two zeros at $z = \\pm 1$ shape the numerator so $(1-R^2)/2$ normalizes the pole peak regardless of `fc`/`bw` (verified ±0.01 dB across `fc` ∈ {50, 440, 5000, 15000} Hz, `bw` ∈ {5, 20, 200} Hz)<br>\n**Origin**: Julius O. Smith III, *Introduction to Digital Filters with Audio Applications* — Two-Pole, \"Constant Peak-Gain Resonator\"\n\n```js\nresonator(buffer, { fc: 440, bw: 20, fs: 44100 })\n```\n\n| Param | Default | |\n|---|---|---|\n| `fc` | — | required, center frequency Hz |\n| `fs` | `44100` | sample rate, Hz |\n| `bw` | `50` | bandwidth, Hz — smaller = higher Q |\n\nPass the same `params` object on every call to persist the two-pole state across blocks. Internal cache fields are prefixed `_r*` (`_rFc`, `_rA1`, …) so `params` can double as a caller-owned object — e.g. `@audio/speech-formant` shares one params object per formant band.\n\n**Use when:** additive synthesis (bells, gongs), modal synthesis, formant bank building.\n\n**vs Peaking EQ**: resonator has fixed 0 dB peak; peaking EQ has variable gain — use resonator for synthesis, EQ for mixing.\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"}