{"_id":"@dtinth/nes-apu-worklet","_rev":"4-babec3b2bef1813099f620908e585e64","name":"@dtinth/nes-apu-worklet","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.1":{"name":"@dtinth/nes-apu-worklet","version":"1.0.1","description":"NES APU exposed as an HTML5 AudioWorklet. Generate 8-bit sounds fom Web Audio API! Powered by nes-js’s APU code.","main":"nes-apu-node.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/dtinth/nes-apu-worklet.git"},"keywords":["NES","APU","chiptune"],"author":{"name":"Thai Pangsakulyanont","email":"org.yi.dttvb@gmail.com","url":"http://dt.in.th/"},"license":"MIT","bugs":{"url":"https://github.com/dtinth/nes-apu-worklet/issues"},"homepage":"https://github.com/dtinth/nes-apu-worklet#readme","gitHead":"26d61935399dde96725cb77a7daa6b9bf8144096","_id":"@dtinth/nes-apu-worklet@1.0.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","_npmUser":{"name":"dtinth","email":"org.yi.dttvb@gmail.com"},"dist":{"integrity":"sha512-QRq6nbreAFPUgmXiDVv4csTQRoAhMuBdHmXRdbVyvarp0gcxYn5JLzaejC15QeAGD9l/f3h/PDwVocSv1Xj0vg==","shasum":"ea26a8e7be25e3ecd5d7370ce72e450a8224e656","tarball":"https://registry.npmjs.org/@dtinth/nes-apu-worklet/-/nes-apu-worklet-1.0.1.tgz","fileCount":4,"unpackedSize":6162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexCcgCRA9TVsSAnZWagAAr28P/2f+4j2A9YRwp6C+yfZJ\nV7pqpPfVJfydiQ/2VJJxmlCQRuGy2Z5UkQPPCHHP9yoUgl6uGpfdiWedjNTg\n7KoNN16H0g+DMebbhGsz1+45kn/rUq2oL2tpuHvVjGBuDkL0/O+ZLw3V3cUj\n9+jkDCr+vadmPlYp97IcKq/Gb6lAYUHj1//gmd69UF/GcfsD65J8O/tUymsp\nyEXTOKtS9s0ttBpxzNy3tKadr0aPvbcOibOHrO/ujMpyMzJFwfbsXR6kBaNG\n0gUMJv7BcXq8miGElGaPjJiVy4wqBJe/ap+LMUo7hJ68/DKr/CVGhh2EKXwB\nACeKXbjLVwx/OvoY7nOWw1aLbM02qz73mf1P5AwkMsRIWnRSrJ+EE5PEuGQT\nZexx9RO7TGz/2eqOCyuUawtBoCv4KI/p5smfnF03KJ1KZec5xmAeiSsMQJ27\nQNxTow/ZKEyIY2aVrg09XBRiVMH/2u6lP/9uMIlpOCpqA8CARqRQOGWseD0c\nD7aDG0ZTJDwh7iT2W5toFtCJr9bNb5L12qPo4+PMhI3Asa4SCgIZOWyAlFh0\nMFalKd0X9OMB+p1mThVriSx0E7e/p/rYgLkUJaz41by7RKjR683r50M+nR9O\ny4hrz/+bbjMeh1Uzk8gV8FRHO8XsMOKTNJQz+tPBXP3BsEVIJ8lqSNxQx7pz\nBD7Y\r\n=ZpRP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLZVkWRYEVTQH8dSpDZip5XrCOXWV2bodrlTVv9mO2KAIgbd0PI6WjKOwhyGsZRkvGCFbfOAaya32B00eNM8CAvTI="}]},"maintainers":[{"name":"dtinth","email":"org.yi.dttvb@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nes-apu-worklet_1.0.1_1589913375647_0.24460304490907392"},"_hasShrinkwrap":false},"1.1.0":{"name":"@dtinth/nes-apu-worklet","version":"1.1.0","description":"NES APU exposed as an HTML5 AudioWorklet. Generate 8-bit sounds fom Web Audio API! Powered by nes-js’s APU code.","main":"nes-apu-node.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/dtinth/nes-apu-worklet.git"},"keywords":["NES","APU","chiptune"],"author":{"name":"Thai Pangsakulyanont","email":"org.yi.dttvb@gmail.com","url":"http://dt.in.th/"},"license":"MIT","bugs":{"url":"https://github.com/dtinth/nes-apu-worklet/issues"},"homepage":"https://github.com/dtinth/nes-apu-worklet#readme","gitHead":"80edb02a294fa4a407e2344633476515d1446b3f","_id":"@dtinth/nes-apu-worklet@1.1.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","_npmUser":{"name":"dtinth","email":"org.yi.dttvb@gmail.com"},"dist":{"integrity":"sha512-A7491+fbtNQLteylWTDdHdqrQNMbMQrRrpkzsPka29JIih6vuqVAC/0nvokvTyN494g/K1cP2z4ED7DvWmGgDw==","shasum":"e9c781fafece4d503e413a97ff5e7cae574a4613","tarball":"https://registry.npmjs.org/@dtinth/nes-apu-worklet/-/nes-apu-worklet-1.1.0.tgz","fileCount":4,"unpackedSize":6345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexCfmCRA9TVsSAnZWagAANMwP/RbaL6qkiqgcnUatnYVI\nKVr7hZ4kOHJFwni8pBQxZGgyFenfoxYyjKhZ5TYrKd4bpqoCKBeC4zmF/4MC\nD7lnKqf0YxQ5wO+V1MseaYTs3yirlrjPbF1f7/VL38ct6H+vV8YT8Ttvqh4k\nBJMFi4+Z/AK1Teb/9xOk/w2HHXb8AqKKFiBmRCCCjP44q3admSDPJSOOmHnt\nz2TcPcSjoTarPysscPZw8sFgezpV950Ztl9869vYxQR1R+0cU0SvZiQEjJBK\nWcdwCqsVGT+NAPiCtt0JfIV3+NOyswM6hiJ+beHwNLZgtsDpYhFQ6Mtt5cyQ\nIkYBU0/+Xz1sjJlThKO+gRpuj3Wau45RYKMvQnDcZrltuwn2/s89ddE6pIJW\nhF0Iig7uDIIQP3bsLnMg0sQjCTfB32aB1Y1fUlb5v5J1cxVNQCkNjzTv88rf\nVEXS7rdE0LiLCbkvFRWe4a0QK5aJTIdjlxFHnEXFiwCUsVk4ENpBckRDhmUt\nf9lWOfFb3BHTxST67/yG/ldkHSiUFqFBl3zlSUP68YtA8KqwM3YXj5ifksLX\nrpUBnzq7KQiYENHmgjLfSZeFFNKiLvnbJzSzBwu7mJ7E8vng48nM24THi6V6\nuvkCCWqT8Ufu/rOVMHrwWMVneapD/JwSAJKKdMQubS/O73VHVlrxmW95wLkG\nshft\r\n=lSqe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH3Xs5Osg8lxXWWkCt9h/THQCDV21jny3EjnzQvrgXthAiEA3LsoAKqfrAsyTLYnlVqjTV3t3eWlSiNWLPJkqEfXvWI="}]},"maintainers":[{"name":"dtinth","email":"org.yi.dttvb@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nes-apu-worklet_1.1.0_1589913574517_0.5009879602454026"},"_hasShrinkwrap":false},"1.1.1":{"name":"@dtinth/nes-apu-worklet","version":"1.1.1","description":"NES APU exposed as an HTML5 AudioWorklet. Generate 8-bit sounds fom Web Audio API! Powered by nes-js’s APU code.","main":"nes-apu-node.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/dtinth/nes-apu-worklet.git"},"keywords":["NES","APU","chiptune"],"author":{"name":"Thai Pangsakulyanont","email":"org.yi.dttvb@gmail.com","url":"http://dt.in.th/"},"license":"MIT","bugs":{"url":"https://github.com/dtinth/nes-apu-worklet/issues"},"homepage":"https://github.com/dtinth/nes-apu-worklet#readme","gitHead":"a3dcd8cf0e743187758cb944e958f8cce8cdf15d","_id":"@dtinth/nes-apu-worklet@1.1.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","_npmUser":{"name":"dtinth","email":"org.yi.dttvb@gmail.com"},"dist":{"integrity":"sha512-nC2dYkscvnKKKv3cj9QKEPuTJed2SCPCa7zgMYY1m6JVTXJeHuftv3BCc7KqVOdQMrCx7meK7+5fvhNrVa5Aow==","shasum":"621d41378f850ed09a48273b624218bbe6b6ff4b","tarball":"https://registry.npmjs.org/@dtinth/nes-apu-worklet/-/nes-apu-worklet-1.1.1.tgz","fileCount":4,"unpackedSize":6337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexCgICRA9TVsSAnZWagAA6MoP+QFZD00Gj0tFDEVsgmdv\nwt3tg90oW2FAHnmsaq9z8oLdjpNExrDsJNxeRRzm9f6qZH06f/Aq7g5CcMpj\noMbou7LSM82XngjPofmX/xkW+iBZH03LAzS9N2VYZptr9egKNgs+kw3PacZD\n3v1SoTerGgaDilDsToCK7VROZ4UG3DWwBLF3xdxfyb+CLmNisi+M/wtQWcrU\nPXTXgWeqkXrt//6iWK8qBl5Yct4U+uDS4BqGC3dQszVZ/NvMbX9719MG0uww\nth3V4YlWwEEW2FraZRiuExgCAU53FPxYQ2Xfgp40iV6/JdkN+tyPeudzc+Ch\nny1dtMIW2NAXKx3KlCj+p0jwPbyNv237K57yRXRPRC+s4wzq/GY9JEL7kgMK\nZkDm8fVH04uUH2E+sF6hnPqsxbre5SBnLPNxpR8uQh2+uC3Fx4YSL3BWZ/Q3\nJkWxz2TvYczcNweVzNTHbtG9vOX/Bryetb3z4PU96mYWoRWWl78o30MqjLlZ\nzCBpqL9JClMSaWp6fI2criS83iS2TupP9v5Xs/wzaYFFwuY4kwNaI91OLF7E\n6Us8lUiduHYRClvy381EIlILo3ZfigGbe2gPzw72VbgYcQRvFJ0g43R9QK1c\nq+2qCfSHIGitlgLTpwhrrNA8xLZkEhFvttR2LqOambpZAs0sjePJf/iIM9SR\nsF1O\r\n=fyMv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH++jS+e1Cxc1EbTMSAnwTva4Qatd7YlngX3cFv+umetAiEAovCSysy6zZZz2V3jF0NEwJbkLTTPLW5b9lBNcknMnc0="}]},"maintainers":[{"name":"dtinth","email":"org.yi.dttvb@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nes-apu-worklet_1.1.1_1589913607634_0.8700873712915789"},"_hasShrinkwrap":false},"1.1.2":{"name":"@dtinth/nes-apu-worklet","version":"1.1.2","description":"NES APU exposed as an HTML5 AudioWorklet. Generate 8-bit sounds fom Web Audio API! Powered by nes-js’s APU code.","main":"nes-apu-node.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/dtinth/nes-apu-worklet.git"},"keywords":["NES","APU","chiptune"],"author":{"name":"Thai Pangsakulyanont","email":"org.yi.dttvb@gmail.com","url":"http://dt.in.th/"},"license":"MIT","bugs":{"url":"https://github.com/dtinth/nes-apu-worklet/issues"},"homepage":"https://github.com/dtinth/nes-apu-worklet#readme","gitHead":"abab2da591d0378fba4af917a6165e67272a20d3","_id":"@dtinth/nes-apu-worklet@1.1.2","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","_npmUser":{"name":"dtinth","email":"org.yi.dttvb@gmail.com"},"dist":{"integrity":"sha512-zCksFfz5gSVgBaWCus8GBK1gCAShDpSvmiCSLoxZTIu7ZoBkTGvNLIGpyBRl7lE/PCzLr2APVPXWM4Qaxl/z3Q==","shasum":"4f91c0d6a9320efb8f658f2e1609cd5811ee495a","tarball":"https://registry.npmjs.org/@dtinth/nes-apu-worklet/-/nes-apu-worklet-1.1.2.tgz","fileCount":4,"unpackedSize":6487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexGJfCRA9TVsSAnZWagAAALEQAJqAAGDwu3kGWdiW4Bho\nzoQpaxxYDL+CS5dCVGes01i4hFGJOSDOZs2Akv+lW4+NDSz3s3QtXOWhzdJY\nQ/ewCtOjPENASZcI6DgdAAh8uBKYSLGqBEP5cgZ8T8/AFgH7KML/xLVzBR6Z\npA3r1xC1HsfLzy90MmvJFIBLphHK4IR92BgEefbSpA/BJuy8KNrhejbRh2IO\n6/lzdXD0M5criG+7DKpCRRM3xe3/TaDFoU91GCelpCHOS6WoPJekdX78dR0g\n6UYNFbJ3UaM0H0AKsrxFJcFkUDSMsmmu610hs5rA1t29qoTCUQ037crr8EEB\nCByRno9w5NFNHPGmVnW9bczrdVQ/ykZIGHSRXEpnCYUeuDdi8KStx4yHeRyC\nu9Oe1Y7WuZNEp4SUFkaw7OIxAoh8MxqEBrvj5yFjDt5dCJVjRy9IvSgzwRoj\nj8qTmBPX6gPKMUD0Ow6EVzNGJHZZpGyikDjZp+jqN/w1qLDBWVe03aHL+v4+\n9rj6u/5OmEJdlQKmL9I8KqRh+jwRyAGygqR9SOVE445VC0oQTUwcFu5U5aO2\nv7Z6A50gehpHhcmcFPQaSN4pbXkchkJ/Yfvlk9Zck1eCMdLNqKY5jKiWG+Xb\nj/iYeUt0CNwX5eoChneOzl2/OUKvGnvg425DUK8RUJ165FKQXEzcfxpWqbuE\n8uXV\r\n=AgGy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXrVNhqySKgUIYKhXt0SZzWOeVfKSYWAXZqiQLrG2UrQIhAO4BLNd1CCZjNlcwSe9PbhKlYtZhtRnuxf/mm7Sl6F0v"}]},"maintainers":[{"name":"dtinth","email":"org.yi.dttvb@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nes-apu-worklet_1.1.2_1589928542568_0.914748578487744"},"_hasShrinkwrap":false}},"time":{"created":"2020-05-19T18:36:15.601Z","1.0.1":"2020-05-19T18:36:15.804Z","modified":"2022-04-05T06:01:01.449Z","1.1.0":"2020-05-19T18:39:34.650Z","1.1.1":"2020-05-19T18:40:07.732Z","1.1.2":"2020-05-19T22:49:02.722Z"},"maintainers":[{"name":"dtinth","email":"org.yi.dttvb@gmail.com"}],"description":"NES APU exposed as an HTML5 AudioWorklet. Generate 8-bit sounds fom Web Audio API! Powered by nes-js’s APU code.","homepage":"https://github.com/dtinth/nes-apu-worklet#readme","keywords":["NES","APU","chiptune"],"repository":{"type":"git","url":"git+https://github.com/dtinth/nes-apu-worklet.git"},"author":{"name":"Thai Pangsakulyanont","email":"org.yi.dttvb@gmail.com","url":"http://dt.in.th/"},"bugs":{"url":"https://github.com/dtinth/nes-apu-worklet/issues"},"license":"MIT","readme":"# nes-apu-worklet\n\n[NES APU](https://wiki.nesdev.com/w/index.php/APU) exposed as HTML5 AudioWorklet. Generate 8-bit sounds fom Web Audio API! Powered by [Takahiro’s nes-js](https://github.com/takahirox/nes-js/blob/master/src/Apu.js)’s [APU](https://github.com/takahirox/nes-js/blob/master/src/Apu.js) code (imported directly!).\n\n### &rarr; [Demo](https://dtinth.github.io/nes-apu-worklet)\n\n## Usage\n\n```js\nimport { NesApuNode } from 'https://cdn.jsdelivr.net/npm/@dtinth/nes-apu-worklet@1/nes-apu-node.js'\nconst context = new AudioContext()\n```\n\n### Add a worklet module to your `AudioContext`\n\n```js\nawait context.audioWorklet.addModule(\n  'https://cdn.jsdelivr.net/npm/@dtinth/nes-apu-worklet@1/nes-apu-worklet.js',\n)\n```\n\n### Create a `NesApuNode`\n\n```js\nlet apu = new NesApuNode(context)\napu.connect(context.destination)\n```\n\n### Schedule writes to the APU registers\n\n```js\n//                      * Status register\n//                      |            * Disable DMC channel\n//                      |            |* Disable Noise channel\n//                      |            ||* Disable Triangle channel\n//                      |            |||* Disable Pulse 2 channel\n//                      |            ||||* Enable Pulse 1 channel\napu.storeRegisterAtTime(0x4015, 0b00000001, context.currentTime)\n//                      * Pulse 1\n//                      |         ** Duty cycle 12.5%\n//                      |         ||* Disable length counter (do not silence notes automatically)\n//                      |         |||* Use constant volume (no decay)\n//                      |         ||||**** Volume 15/15\napu.storeRegisterAtTime(0x4000, 0b00111111)\n//                      |         ******** = Timer low = 251\napu.storeRegisterAtTime(0x4002, 0b11111011)\n//                      |         ***** Length counter (disabled)\n//                      |         |||||*** = Timer high = 1\napu.storeRegisterAtTime(0x4003, 0b00000001)\n//                      Timer = 1 * 256 + 251 = 507\n//                      Frequency = 1789773 [CPU speed hz] / (16 * (507 [Timer] + 1))\n//                                = 220.1984498031496 hz (~A below Middle C)\n```\n\n## API\n\n### `const apu = new NesApuNode(audioContext)`\n\nCreates a new NES APU node.\n\n### `apu.storeRegisterAtTime(address, value, time)`\n\nEnqueues a command to write a value to the APU registers. Check out [Nesdev wiki](https://wiki.nesdev.com/w/index.php/APU#Registers) for reference of each register.\n\n### `apu.port.onmessage = fn`\n\nBe notified when data is written to the APU register. `fn` is called with `event` object.\n\n- `event.data.address` — Register address\n- `event.data.value` — Register value\n- `event.data.time` — Audio time\n","readmeFilename":"README.md"}