{"id":18645163,"url":"https://github.com/danigb/synthlet","last_synced_at":"2025-05-08T07:50:28.028Z","repository":{"id":255858209,"uuid":"612534087","full_name":"danigb/synthlet","owner":"danigb","description":"Synth audio worklets","archived":false,"fork":false,"pushed_at":"2025-01-22T00:45:51.000Z","size":4450,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T17:43:17.070Z","etag":null,"topics":["audio","modular-synth","synth","synthesizer","web-audio"],"latest_commit_sha":null,"homepage":"https://danigb.github.io/synthlet/docs/quick-start","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danigb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-11T08:24:12.000Z","updated_at":"2025-01-24T11:45:23.000Z","dependencies_parsed_at":"2024-09-07T14:50:33.390Z","dependency_job_id":"393c39fa-ad57-43b5-81b6-a0d26d7f6328","html_url":"https://github.com/danigb/synthlet","commit_stats":null,"previous_names":["danigb/synthlet"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danigb%2Fsynthlet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danigb%2Fsynthlet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danigb%2Fsynthlet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danigb%2Fsynthlet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danigb","download_url":"https://codeload.github.com/danigb/synthlet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253025335,"owners_count":21842409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","modular-synth","synth","synthesizer","web-audio"],"created_at":"2024-11-07T06:14:54.429Z","updated_at":"2025-05-08T07:50:27.999Z","avatar_url":"https://github.com/danigb.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Synthlet\n\n[![npm version](https://img.shields.io/npm/v/synthlet)](https://www.npmjs.com/package/synthlet)\n\nCollection of synth modules implemented as AudioWorklets.\n\n```ts\nimport {\n  registerAllWorklets,\n  AdsrAmp,\n  Svf,\n  SvfType,\n  PolyblepOscillator\n} from \"synthlet\";\n\nconst ac = new AudioContext();\nawait registerAllWorklets(ac);\n\n// Simplest synth: Oscillator -\u003e Filter -\u003e Amplifier\nconst osc = PolyblepOscillator(ac, { frequency: 440 });\nconst filter = Svf(ac, {\n  type: SvfType.LowPass\n  frequency: 4000,\n});\nconst amp = AdsrAmp(ac, { attack: 0.1, release: 0.5 });\nosc.connect(filter).connect(amp).connect(ac.destination);\n\n// Change parameters\nosc.frequency.value = 1200;\n\n// Start sound\namp.gate.value = 1;\n\n// Stop sound\nvca.gate.value = 0;\n```\n\n## Install\n\nInstall `synthlet` to install all modules:\n\n```bash\nnpm i synthlet\n```\n\nOr each module individually:\n\n```bash\nnpm i @synthlet/adsr\n```\n\n## Documentation\n\nDocumentation and examples are [here](https://danigb.github.io/synthlet/docs/quick-start)\n\n### Why?\n\nMostly, because I want to learn dsp.\n\n### Is it a good idea to write dsp in Typescript?\n\nProbably not, but I've seen [a talk at WAC 2022](https://zenodo.org/records/6767468) about it that made me think it is possible (thanks to JS engine optimizations).\n\n### Should I use it?\n\nJust for fun and curiosity. If you want to make music, [Tone.js](https://github.com/Tonejs/Tone.js) is probably the way to go.\n\nIf you want to deploy dsp modules to web in production, currently [Faust](https://faustdoc.grame.fr/) and [Cmajor](https://github.com/cmajor-lang/cmajor) or [Elementary Audio](https://github.com/elemaudio/elementary) are better alternatives.\n\n## References\n\nThis library wouldn't be possible with all the people writing books, blog posts and awesome libraries... and making music! Thanks to all 💚\n\n### Books\n\n- [Designing Synth Plugins 2nd Edition](https://www.willpirkle.com/)\n- [Developing Virtual Synthesizers with VCV Rack](https://www.routledge.com/Developing-Virtual-Synthesizers-with-VCV-Rack/Gabrielli/p/book/9780367077730)\n- [BasicSynth: Creating a Music Synthesizer in Software](http://basicsynth.com/)\n- [Generating Sound and Organizing Time](https://cycling74.com/books/go)\n- [Designing Audio FX Plugins 2nd Edition](https://www.willpirkle.com/)\n\n### Blogs and papers\n\n- https://github.com/BillyDM/awesome-audio-dsp\n- https://paulbatchelor.github.io/sndkit/algos/\n- https://www.musicdsp.org/\n- [Signalsmith Audio blog](https://signalsmith-audio.co.uk/writing/)\n- [Valhalla DSP Blog](https://valhalladsp.com/category/learn/plugin-design-learn/)\n- http://synthworks.eu/ - DIY Synthetizers\n- [Karplus-Strong original paper](https://users.soe.ucsc.edu/~karplus/papers/digitar.pdf)\n\n### Synthesis open source repositories\n\n- [Faust](https://github.com/grame-cncm/faust)\n- [Cmajor](https://github.com/SoundStacks/cmajor)\n- [VCVRack](https://github.com/VCVRack/Rack)\n- [The Synthesis ToolKit](https://github.com/thestk/stk)\n- [Surge synth](https://github.com/surge-synthesizer/surge)\n- [Surge Rust](https://github.com/klebs6/surge-rs)\n- https://github.com/jd-13/WE-Core\n- https://github.com/mhetrick/nonlinearcircuits\n- https://github.com/timowest/analogue\n- https://github.com/pichenettes/stmlib/tree/master/dsp\n\n### Other\n\n- [Wave Edit wavetable editor](https://waveeditonline.com/)\n\n## License\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanigb%2Fsynthlet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanigb%2Fsynthlet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanigb%2Fsynthlet/lists"}