{"_id":"@audio/dynamics-opto","_rev":"7-d863efcd0cf9e82a72fac40e27d722f4","name":"@audio/dynamics-opto","dist-tags":{"latest":"0.2.4"},"versions":{"0.1.0":{"name":"@audio/dynamics-opto","version":"0.1.0","keywords":["audio","dsp","dynamics","compressor","opto"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/dynamics-opto@0.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/dynamics/tree/main/packages/dynamics-opto","bugs":{"url":"https://github.com/audiojs/dynamics/issues"},"dist":{"shasum":"5c3aaa4327066edca8795d320d018ff0c723176e","tarball":"https://registry.npmjs.org/@audio/dynamics-opto/-/dynamics-opto-0.1.0.tgz","fileCount":2,"integrity":"sha512-SNlmoHXAp3pD+DAJ+OYELuz6TN6rQquc6BTAv3qLRxpHav8pUFXbWal9hRRxG25HBBhdiySEI7X13Jnf0iaMDQ==","signatures":[{"sig":"MEYCIQDXCNKCjn0vT6wIMh1v2Gzz6VYVIVbbV0rsPWuBzpDTZgIhAKmgX3oPxD6KQrX7GiZnpLE7ks1fmEiw+4AyYHikhmtW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2746},"main":"opto.js","type":"module","engines":{"node":">=18"},"exports":{".":"./opto.js","./package.json":"./package.json"},"gitHead":"7c71fa7240f20cea48a583fecdd02cdc0db12852","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/dynamics.git","type":"git","directory":"packages/dynamics-opto"},"_npmVersion":"11.12.1","description":"Optical compressor model — RMS detector, wide knee, T4 program-dependent release (LA-2A class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/dynamics-core":"^0.1.0","@audio/dynamics-envelope":"^0.1.0","@audio/dynamics-compressor":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamics-opto_0.1.0_1783540356523_0.22502321131789338","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@audio/dynamics-opto","version":"0.1.1","keywords":["audio","dsp","dynamics","compressor","opto"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/dynamics-opto@0.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/dynamics/tree/main/packages/dynamics-opto","bugs":{"url":"https://github.com/audiojs/dynamics/issues"},"dist":{"shasum":"a3ace72ab377cbb6852d8916492aacd373542dc8","tarball":"https://registry.npmjs.org/@audio/dynamics-opto/-/dynamics-opto-0.1.1.tgz","fileCount":3,"integrity":"sha512-KNUan/EVXPVIsy8sOhBRJ1gHF1XCq57eY65lKxIqNg5gFmev+e3vhgUvAyUcpimDJ1QrvxSZqlNjBu/29keYuQ==","signatures":[{"sig":"MEUCIAngWBBMnAK1GXr6W4sxHpndWQoAA4Gkqm+vrCBKW+JnAiEAk5AXfQzKw+hE0K78yH3nVcH6hJNnBw9mW6OI//pdCg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3495},"main":"opto.js","type":"module","engines":{"node":">=18"},"exports":{".":"./opto.js","./package.json":"./package.json"},"gitHead":"ebb279f869b62cebd718e8da04b0f6f9ad386eab","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/dynamics.git","type":"git","directory":"packages/dynamics-opto"},"_npmVersion":"11.12.1","description":"Optical compressor model — RMS detector, wide knee, T4 program-dependent release (LA-2A class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/dynamics-envelope":"^0.1.0","@audio/dynamics-compressor":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamics-opto_0.1.1_1783623826876_0.09906434544366904","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@audio/dynamics-opto","version":"0.2.0","keywords":["audio","dsp","dynamics","compressor","opto"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/dynamics-opto@0.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/dynamics/tree/main/packages/dynamics-opto","bugs":{"url":"https://github.com/audiojs/dynamics/issues"},"atom":"./atom.js","dist":{"shasum":"68575118ae95f5fe10dc08ce4e6e3c3688c305f3","tarball":"https://registry.npmjs.org/@audio/dynamics-opto/-/dynamics-opto-0.2.0.tgz","fileCount":4,"integrity":"sha512-9VMNGrTXl5IYlFHf0ly/afyewlSOZCWLgXAptd9S59N3G25dPbqfgQDaDbHwyGfB3/WIUF+ffJDqmCcOLh5CRA==","signatures":[{"sig":"MEUCIQDJmf+q8WeP8hQr7Pj+T/u/z5uCXtPj2D4bE6V+UnK51gIgZ9cfURduCWeYaA3191rXAq5r3Fg55KFNL+wtlBddAq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4950},"main":"opto.js","type":"module","engines":{"node":">=18"},"exports":{".":"./opto.js","./atom":"./atom.js","./package.json":"./package.json"},"gitHead":"b90b956d3f4e3e99cdd62d69f979e991f406500c","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/dynamics.git","type":"git","directory":"packages/dynamics-opto"},"_npmVersion":"11.12.1","description":"Optical compressor model — RMS detector, wide knee, T4 program-dependent release (LA-2A class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/dynamics-envelope":"^0.1.0","@audio/dynamics-compressor":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamics-opto_0.2.0_1783635131961_0.6039045063860371","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@audio/dynamics-opto","version":"0.2.1","keywords":["audio","dsp","dynamics","compressor","opto"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/dynamics-opto@0.2.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/dynamics/tree/main/packages/dynamics-opto","bugs":{"url":"https://github.com/audiojs/dynamics/issues"},"dist":{"shasum":"7ddf8d3b27352bdb9598a5d922e6344d92381303","tarball":"https://registry.npmjs.org/@audio/dynamics-opto/-/dynamics-opto-0.2.1.tgz","fileCount":4,"integrity":"sha512-qbkNSWU23/OiWtVD+ML6R1g4NnUkt48OMSofXa8hQgFfmn1J3jnM+Jb05wWUo3UolKI/vhBBs2754hWhWaOQgA==","signatures":[{"sig":"MEUCIQD0E5R5OLZi/cjoZu8RCCljaaXsRNKg/ahCCVW1qxohfgIgNpJByeL+g74J/3CM8NmXDjaZTn5gJCvKKuXQKhalmLs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4955},"main":"opto.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./opto.js","./audio":"./audio.js","./package.json":"./package.json"},"gitHead":"bd990cde847fa5c7f7cc09e0cbf6fa6958c402ee","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/dynamics.git","type":"git","directory":"packages/dynamics-opto"},"_npmVersion":"11.12.1","description":"Optical compressor model — RMS detector, wide knee, T4 program-dependent release (LA-2A class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/dynamics-envelope":"^0.1.0","@audio/dynamics-compressor":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamics-opto_0.2.1_1783644807357_0.2453381376749475","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@audio/dynamics-opto","version":"0.2.2","keywords":["audio","dsp","dynamics","compressor","opto"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/dynamics-opto@0.2.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/dynamics/tree/main/packages/dynamics-opto","bugs":{"url":"https://github.com/audiojs/dynamics/issues"},"dist":{"shasum":"c88614cc9bb273ec0306c36fa32b38bd793fcb4e","tarball":"https://registry.npmjs.org/@audio/dynamics-opto/-/dynamics-opto-0.2.2.tgz","fileCount":5,"integrity":"sha512-HD8numd705aWlQ4v/YrnsetkmytyQjyK9Yau/vVEwvDcOjzJF0kbDlrwmSYRqnuyS2TQHQ2Ak2FHIPUzOB3rFg==","signatures":[{"sig":"MEUCIFinpGg0+1PAPv/fhiPqdQJ75XwjT0AeJwhotVZHcBKWAiEA32Bjeml/Ii635RuV1TTWAp/1w0XFkCRklRxGXZ04x1Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6715},"main":"opto.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./opto.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"gitHead":"089832c3dab3b885182248bd804e361286156804","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/dynamics.git","type":"git","directory":"packages/dynamics-opto"},"_npmVersion":"11.12.1","description":"Optical compressor model — RMS detector, wide knee, T4 program-dependent release (LA-2A class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/dynamics-envelope":"^0.1.0","@audio/dynamics-compressor":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamics-opto_0.2.2_1783701626679_0.4006878587059086","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@audio/dynamics-opto","version":"0.2.3","keywords":["audio","dsp","dynamics","compressor","opto"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/dynamics-opto@0.2.3","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/dynamics/tree/main/packages/dynamics-opto","bugs":{"url":"https://github.com/audiojs/dynamics/issues"},"dist":{"shasum":"324752b9a2705bbec8a0fc57d03912be43fbc732","tarball":"https://registry.npmjs.org/@audio/dynamics-opto/-/dynamics-opto-0.2.3.tgz","fileCount":5,"integrity":"sha512-veZ5/BrJwmbLytjZvFNhMW07TVYi3aYdQxcE2BHTh3LoDDe4UhZZ0t/rs9m03QXI/gx+vqF3FN4Zpu924nq7bA==","signatures":[{"sig":"MEQCIFQWPRuG7gzcdN9rA7uisjOcNCCHAMc2GCYty+GHrTnAAiATZijCQp5PHXC6XCBIu/aLcWBaZBeFzKaFrWshkSFSbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6715},"main":"opto.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./opto.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"gitHead":"9780f3274d42241b2b712c1c0560a57226a2ff28","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"repository":{"url":"git+https://github.com/audiojs/dynamics.git","type":"git","directory":"packages/dynamics-opto"},"_npmVersion":"11.12.1","description":"Optical compressor model — RMS detector, wide knee, T4 program-dependent release (LA-2A class)","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"@audio/dynamics-envelope":"^0.1.0","@audio/dynamics-compressor":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dynamics-opto_0.2.3_1783717802429_0.7878913965764807","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@audio/dynamics-opto","version":"0.2.4","description":"Optical compressor model — RMS detector, wide knee, T4 program-dependent release (LA-2A class)","type":"module","sideEffects":false,"main":"opto.js","exports":{".":"./opto.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"dependencies":{"@audio/dynamics-envelope":"^0.1.0","@audio/dynamics-compressor":"^0.2.0"},"keywords":["audio","dsp","dynamics","compressor","opto"],"license":"MIT","author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/audiojs/dynamics.git","directory":"packages/dynamics-opto"},"homepage":"https://github.com/audiojs/dynamics/tree/main/packages/dynamics-opto","bugs":{"url":"https://github.com/audiojs/dynamics/issues"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"types":"./opto.d.ts","audio":"./audio.js","funding":"https://github.com/sponsors/audiojs","gitHead":"28b8fc7ed183f5872771bc2066b7b2db0585a644","_id":"@audio/dynamics-opto@0.2.4","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-0LggPoDbS5vh3bxnKBq0ZHjqESc6uppfoGbZlX1yj9EhBxUumHtNNfounF7gN8yHjEGxtglHa23XPBgYCHI+RA==","shasum":"fa712aad07cde918d7a59b834dda4ef759fc35de","tarball":"https://registry.npmjs.org/@audio/dynamics-opto/-/dynamics-opto-0.2.4.tgz","fileCount":7,"unpackedSize":9962,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE34MSZg+Mf+OC7lTJ0Jqy+1luzMenxa6jNdRf3A0yTpAiEAkr0HeOz55dNjvCBOX3XmxrEI9iov4eAaJmTYzqh2QBI="}]},"_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/dynamics-opto_0.2.4_1783731447401_0.24221889014283926"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:52:36.393Z","modified":"2026-07-11T00:57:27.705Z","0.1.0":"2026-07-08T19:52:36.696Z","0.1.1":"2026-07-09T19:03:47.016Z","0.2.0":"2026-07-09T22:12:12.095Z","0.2.1":"2026-07-10T00:53:27.539Z","0.2.2":"2026-07-10T16:40:26.816Z","0.2.3":"2026-07-10T21:10:02.573Z","0.2.4":"2026-07-11T00:57:27.547Z"},"bugs":{"url":"https://github.com/audiojs/dynamics/issues"},"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","homepage":"https://github.com/audiojs/dynamics/tree/main/packages/dynamics-opto","keywords":["audio","dsp","dynamics","compressor","opto"],"repository":{"type":"git","url":"git+https://github.com/audiojs/dynamics.git","directory":"packages/dynamics-opto"},"description":"Optical compressor model — RMS detector, wide knee, T4 program-dependent release (LA-2A class)","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/dynamics-opto [![npm](https://img.shields.io/npm/v/@audio/dynamics-opto)](https://www.npmjs.com/package/@audio/dynamics-opto) [![MIT](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://github.com/krishnized/license)\n\nOptical compressor model (LA-2A class) — RMS detection, wide soft knee, program-dependent release\n\n```\nnpm install @audio/dynamics-opto\n```\n\n```js\nimport opto from '@audio/dynamics-opto'\n```\n\nModels a Teletronix LA-2A-style electro-optical gain cell: RMS-detected soft-knee compression (`~3:1`, wide `10 dB` knee) plus the T4 cell's signature — release time that slows the longer gain reduction persists. An internal ~3 s memory of time-under-reduction stretches `release` up to 7× on sustained material, then relaxes back toward the nominal value once the signal clears.\n\n```js\nopto(data, { threshold: -20, ratio: 3 })                 // batch\nopto(data)                                                 // defaults\n\nlet write = opto({ threshold: -20, ratio: 3 })            // streaming\nlet out1 = write(block1)\nlet tail = write()                                         // flush\n```\n\n| Param | Default | |\n|---|---|---|\n| `threshold` | `-20` | dB |\n| `ratio` | `3` | — |\n| `knee` | `10` | dB (wide) |\n| `attack` | `10` | ms |\n| `release` | `300` | ms (nominal; program-dependent stretch multiplies this up to 7×) |\n| `makeup` | `0` | dB |\n| `sampleRate` | `44100` | Hz (alias `fs`) |\n\n**Use when:** vocals, bass — smooth, program-dependent gain riding without pumping.<br>\n**Not for:** fast peak-catching character — use [`fet`](https://github.com/audiojs/dynamics-fet). Aggressive drive-dependent ratio — use [`varimu`](https://github.com/audiojs/dynamics-varimu).\n\n---\n\nPart of [@audio/dynamics](https://github.com/audiojs/dynamics) — the dynamics family umbrella.\n\nMIT © [audiojs](https://github.com/audiojs)\n","readmeFilename":"README.md"}