{"_id":"@audio/reverb-fdn","_rev":"5-c2474ad4df76c202632bcc6ea677b54a","name":"@audio/reverb-fdn","dist-tags":{"latest":"1.1.3"},"versions":{"1.0.0":{"name":"@audio/reverb-fdn","version":"1.0.0","keywords":["audio","dsp","reverb","fdn"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/reverb-fdn@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":"4bd114b737cc9f92afcce01427330e157ccfdfd3","tarball":"https://registry.npmjs.org/@audio/reverb-fdn/-/reverb-fdn-1.0.0.tgz","fileCount":2,"integrity":"sha512-wz5of4nzO/Gl9MUcwuyMPQDWrVvq+9mVjOmi3q/d1Sem7a0DEn2JZb2dgFit+oojJzNhOHHYGwJjEjAIHzOYPg==","signatures":[{"sig":"MEQCIHF0bC+8R/jkukgE7Py17jFmAhoVgliFb+Xad2gfPDpoAiA+2KgWhmcVWR934prWkRRpPSIOAl9rNcDdMUBUwF7JDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2708},"main":"fdn.js","type":"module","engines":{"node":">=18"},"exports":{".":"./fdn.js","./package.json":"./package.json"},"gitHead":"e3fbdb11e067705f21e8c18a562f1dac70a4e3db","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"FDN reverb — 8 mutually-prime delays, O(N) Householder feedback, per-line damping (Jot topology)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/reverb-fdn_1.0.0_1783539854376_0.31477883535103324","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@audio/reverb-fdn","version":"1.1.0","keywords":["audio","dsp","reverb","fdn"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/reverb-fdn@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":"2c73c75a3d6a96db0091fd0413b86f453e149220","tarball":"https://registry.npmjs.org/@audio/reverb-fdn/-/reverb-fdn-1.1.0.tgz","fileCount":3,"integrity":"sha512-pE937q0lNnUQDuTg7yCO3EyVWLRLa0NcJpY8hBAZnzWAHyi/xv7uTyljOYQIzMGqIj+ycZQiyM5J/t7J278Q3g==","signatures":[{"sig":"MEUCIQDz1YLR3W1i3bFV5MygIpHOb248PdS9/9yQsef/WxxXdQIgQwOf6vJ5b+7czvf4pmWeo6P82oT8WYpxycnAuVwUlIw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4040},"main":"fdn.js","type":"module","engines":{"node":">=18"},"exports":{".":"./fdn.js","./atom":"./atom.js","./package.json":"./package.json"},"gitHead":"4c2c72cd5de59281228f3de3a87170d339bb457a","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"FDN reverb — 8 mutually-prime delays, O(N) Householder feedback, per-line damping (Jot topology)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/reverb-fdn_1.1.0_1783635124270_0.15219707546166417","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@audio/reverb-fdn","version":"1.1.1","keywords":["audio","dsp","reverb","fdn"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/reverb-fdn@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":"caec7a29bf6a04ca78e45472b21f50a0ac895c83","tarball":"https://registry.npmjs.org/@audio/reverb-fdn/-/reverb-fdn-1.1.1.tgz","fileCount":3,"integrity":"sha512-1r0y/lZt8kIiALB76DKhMcbmb9UmKpv7EredDrVHkboorTXKjnYpwphegfju+x9R2ztzp/GLt5qy/JkA8Ap4Xw==","signatures":[{"sig":"MEYCIQCHoZ946NxtZYaUc/hR4qe42p7UvOxucN67JjSjx5rxfwIhAPpwvPGm0Kon5AuVQqQYY4xi+24TzODFjhY47pn+6JS2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4045},"main":"fdn.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./fdn.js","./audio":"./audio.js","./package.json":"./package.json"},"gitHead":"b16714728a59fd6d56cd8ab33f305dad4165a694","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"FDN reverb — 8 mutually-prime delays, O(N) Householder feedback, per-line damping (Jot topology)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/reverb-fdn_1.1.1_1783645014268_0.19031028295093577","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@audio/reverb-fdn","version":"1.1.2","keywords":["audio","dsp","reverb","fdn"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/reverb-fdn@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":"82157ca5b70687d3d99da7cb8d93bbb42aec80d3","tarball":"https://registry.npmjs.org/@audio/reverb-fdn/-/reverb-fdn-1.1.2.tgz","fileCount":4,"integrity":"sha512-bcSf2TrdwugGoqoaUhWGxXkjiPIqjFCXXZ9n2zDyK/rkh/5CryQURl1LWu9Jp8XrGNbRlYibfKJwSZa5J8SkDQ==","signatures":[{"sig":"MEUCIBdmKCW4nHDqn6bPQqYB/BUB3Hfysg0CV0lvmC+BDI+OAiEApKqVqX9+ifbBJ/k+bTe0AUZL2ab8VvsI4uBjpWiPGu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5545},"main":"fdn.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./fdn.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"gitHead":"44f8107e10040cdbd0945e4965f0ed6144b44fb5","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"FDN reverb — 8 mutually-prime delays, O(N) Householder feedback, per-line damping (Jot topology)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/reverb-fdn_1.1.2_1783701780214_0.23469897456208155","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@audio/reverb-fdn","version":"1.1.3","description":"FDN reverb — 8 mutually-prime delays, O(N) Householder feedback, per-line damping (Jot topology)","type":"module","sideEffects":false,"main":"fdn.js","exports":{".":"./fdn.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"keywords":["audio","dsp","reverb","fdn"],"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/reverb.git","directory":"packages/reverb-fdn"},"funding":"https://github.com/sponsors/audiojs","types":"fdn.d.ts","gitHead":"66500e037dac15d3fd697a23d00e3bd08300fdd1","_id":"@audio/reverb-fdn@1.1.3","bugs":{"url":"https://github.com/audiojs/reverb/issues"},"homepage":"https://github.com/audiojs/reverb#readme","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-UlLR67I4vAIPgakUvaQXuW3IbXW6yIB8KVG6WWYhXB149q2nyb+RCNe7atZGzafMHPlltKzBYOQ6XmpXSogRaQ==","shasum":"9b886f4e163bddb8f2851a700fd441592704263a","tarball":"https://registry.npmjs.org/@audio/reverb-fdn/-/reverb-fdn-1.1.3.tgz","fileCount":6,"unpackedSize":8806,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDCuLU3/y52nH94qP2hSvYj6qGZYTsXqZvdj+HRGdeOXgIgQUcdRf04Yo0N3aHhro8YYOcLWDIFUZdxipPno6U0J3o="}]},"_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/reverb-fdn_1.1.3_1783731739640_0.22110455332382806"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:44:14.165Z","modified":"2026-07-11T01:02:19.927Z","1.0.0":"2026-07-08T19:44:14.527Z","1.1.0":"2026-07-09T22:12:04.396Z","1.1.1":"2026-07-10T00:56:54.407Z","1.1.2":"2026-07-10T16:43:00.432Z","1.1.3":"2026-07-11T01:02:19.775Z"},"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","keywords":["audio","dsp","reverb","fdn"],"description":"FDN reverb — 8 mutually-prime delays, O(N) Householder feedback, per-line damping (Jot topology)","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/reverb-fdn [![npm](https://img.shields.io/npm/v/@audio/reverb-fdn)](https://www.npmjs.com/package/@audio/reverb-fdn) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nFDN reverb — 8 mutually-prime delays, O(N) Householder feedback, per-line damping (Jot topology)\n\n```\nnpm install @audio/reverb-fdn\n```\n\n```js\nimport fdn from '@audio/reverb-fdn'\n```\n\nFeedback delay network: 8 mutually-prime delay lines coupled through a Householder feedback matrix (`I − 2/N·11ᵀ`, applied in O(N) rather than a full N×N multiply), one-pole damping per line, and Jot's per-line decay gains `g_k = 10^(−3·len_k / (T60·fs))` so every line decays at the same rate — a uniform, colorless T60 regardless of which delay you're listening to (Jot & Chaigne, 1991). Output taps use orthogonal `±1` sign patterns per channel for stereo decorrelation from a mono or stereo input. Strictly stereo, not N-channel: only `data[0]`/`data[1]` are read and written.\n\n```js\nfdn(data, { t60: 1.5, damping: 0.3, mix: 0.3, fs: 44100 })\nfdn([left, right], { decay: 0.9, mix: 0.4 })  // stereo, decay-derived T60\n```\n\n| Param | Default | |\n|---|---|---|\n| `t60` | derived from `decay` | seconds — decay time to −60 dB; overrides `decay` when set |\n| `decay` | `0.6` | 0..1 convenience knob → `t60 = 0.3 + 5·decay²` (ignored if `t60` is set) |\n| `damping` | `0.3` | 0..1 — one-pole high-frequency loss per delay line |\n| `mix` | `0.3` | 0..1 — wet/dry blend |\n| `fs` | `44100` | sample rate; delay lengths scale to it |\n\n**Mutates `data` in place** and returns it. Fresh line state is allocated per call — no state carries across calls, reprocess the whole buffer each time. Measured T60 (Schroeder backward-integrated energy decay curve) lands within ~30% of the configured value — see the family test suite.\n\n**Use when:** a colorless, uniform-decay tail is the goal — algorithmic reverb without per-mode coloration.<br>\n**Not for:** plate/spring character (use `dattorro`/`spring`) or the cheapest possible CPU budget (use `schroeder`).\n\n---\n\nPart of the [@audio/reverb](https://github.com/audiojs/reverb) family.\n\nMIT © [audiojs](https://github.com/audiojs)\n","readmeFilename":"README.md","homepage":"https://github.com/audiojs/reverb#readme","repository":{"type":"git","url":"git+https://github.com/audiojs/reverb.git","directory":"packages/reverb-fdn"},"bugs":{"url":"https://github.com/audiojs/reverb/issues"}}