{"id":19772706,"url":"https://github.com/michaelkolesidis/javascript-software-synthesizer","last_synced_at":"2025-04-04T15:06:46.360Z","repository":{"id":39586449,"uuid":"454185034","full_name":"michaelkolesidis/javascript-software-synthesizer","owner":"michaelkolesidis","description":"JSS-01 | JavaScript Software Synthesizer","archived":false,"fork":false,"pushed_at":"2025-01-25T09:26:53.000Z","size":11268,"stargazers_count":130,"open_issues_count":7,"forks_count":9,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-28T14:06:09.755Z","etag":null,"topics":["fm-synthesis","fm-synthesizer","frequency-modulation","midi","midi-keyboard","music","nexusui","piano","piano-keyboard","software-synthesizer","sound","sound-engineering","sound-processing","sound-synthesis","subtractive-synthesis","synth","synthesizer","synthesizers","tonejs","web-audio"],"latest_commit_sha":null,"homepage":"https://javascript-software-synthesizer.vercel.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michaelkolesidis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":"FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":"michaelkolesidis"}},"created_at":"2022-01-31T22:04:22.000Z","updated_at":"2025-03-22T19:18:19.000Z","dependencies_parsed_at":"2024-02-05T00:22:17.741Z","dependency_job_id":"3f9c1abe-0114-48b3-89ed-f95c723ff4df","html_url":"https://github.com/michaelkolesidis/javascript-software-synthesizer","commit_stats":null,"previous_names":["mnkbb699/javascript-software-synthesizer","mkole/javascript-software-synthesizer","michaelkolesidis/javascript-software-synthesizer"],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelkolesidis%2Fjavascript-software-synthesizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelkolesidis%2Fjavascript-software-synthesizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelkolesidis%2Fjavascript-software-synthesizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelkolesidis%2Fjavascript-software-synthesizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaelkolesidis","download_url":"https://codeload.github.com/michaelkolesidis/javascript-software-synthesizer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247198449,"owners_count":20900079,"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":["fm-synthesis","fm-synthesizer","frequency-modulation","midi","midi-keyboard","music","nexusui","piano","piano-keyboard","software-synthesizer","sound","sound-engineering","sound-processing","sound-synthesis","subtractive-synthesis","synth","synthesizer","synthesizers","tonejs","web-audio"],"created_at":"2024-11-12T05:07:26.178Z","updated_at":"2025-04-04T15:06:46.352Z","avatar_url":"https://github.com/michaelkolesidis.png","language":"TypeScript","readme":"**Note: The JavaScript Software Synthesizer is in active devleopment and its currently being refactored/redesigned, thus some of the features might not work as intended. For the latest stable version please visit [this repository](https://github.com/michaelkolesidis/javascript-software-synthesizer-classic).**\n\n![JSS-01 Logo](./public/assets/logo/logo_256_white.png#gh-dark-mode-only)\n![JSS-01 Logo](./public/assets/logo/logo_256.png#gh-light-mode-only)\n\n\u003ch1\u003eJSS-01\u003cbr\u003eJavaScript Software Synthesizer\u003c/h1\u003e\n\n[![made-with-typescript](https://img.shields.io/badge/Made%20with-TypeScript-01004c.svg)](https://developer.mozilla.org/en-US/docs/Web/JavaScript)\n[![MIT license](https://img.shields.io/badge/License-AGPLv3-01004c.svg)](https://www.gnu.org/licenses/agpl-3.0.html)\n[![Version](https://img.shields.io/badge/version-3.0.0-01004c.svg)](https://shields.io/)\n\n\u003ca href='https://ko-fi.com/michaelkolesidis' target='_blank'\u003e\u003cimg src='https://cdn.ko-fi.com/cdn/kofi1.png' style='border:0px;height:45px;' alt='Buy Me a Coffee at ko-fi.com' /\u003e\u003c/a\u003e  \n\n![Attention! Free Software](./public/assets/attention-free-software.png)\n\nThis software is free (as in freedom). **If you use any part of this code, you must make your entire project's source code publicly available under the same license.** This applies whether you modify the code or use it as it is in your own project. This ensures that all modifications and derivative works remain free software, so that everyone can benefit. If you are not willing to comply with these terms, you must refrain from using any part of this code.\n\nFor full license terms and conditions, you can read the AGPL-3.0 at: [gnu.org/licenses/agpl-3.0.html](https://www.gnu.org/licenses/agpl-3.0.html).\n\n## Technologies Used\n\n\u003ca href=\"https://tonejs.github.io/\"\u003e\u003cimg src=\"https://github.com/michaelkolesidis/tech-icons/blob/main/icons/tonejs/tonejs-original.png\" height=\"50px\" /\u003e\u003c/a\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://webmidijs.org/\"\u003e\u003cimg src=\"https://webmidijs.org/img/webmidijs-logo-dark.svg\" height=\"50px\" /\u003e\u003c/a\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://www.typescriptlang.org/\"\u003e\u003cimg src=\"https://github.com/michaelkolesidis/tech-icons/blob/main/icons/typescript/typescript-original.svg\" height=\"50px\" /\u003e\u003c/a\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://sass-lang.com/\"\u003e\u003cimg src=\"https://github.com/michaelkolesidis/tech-icons/blob/main/icons/sass/sass-original.svg\" height=\"50px\" /\u003e\u003c/a\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://www.yarnpkg.com/\"\u003e\u003cimg src=\"https://github.com/michaelkolesidis/tech-icons/blob/main/icons/yarn/yarn-original.svg\" height=\"50px\" /\u003e\u003c/a\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://vitejs.dev/\"\u003e\u003cimg src=\"https://vitejs.dev/logo.svg\" height=\"50px\" /\u003e\u003c/a\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\nMore info about the technologies can be found \u003ca href=\"https://github.com/michaelkolesidis/javascript-software-synthesizer/blob/main/README.md#technologies-used-extended\"\u003ehere\u003c/a\u003e.\n\n## Description\n\nThe _JSS-01 | JavaScript Software Synthesizer_ is a web application enabling you to make and play music in the browser. It is a [software synthesizer](https://en.wikipedia.org/wiki/Software_synthesizer) utilizing the [Web Audio API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API) by implementing a variety of JavaScript frameworks and libraries, such as [Tone.js](https://tonejs.github.io/) and [NexusUI2](https://github.com/michaelkolesidis/nexusui2). Its design is fully modular, thus it can easily be adapted and integrated into any kind of project.\n\nMy aim when creating the JSS-01 was to offer a powerful synthesizer that is simple, easy and, above all, fun to use!\n\n\u003cimg width=\"900px\" src=\"./screenshots/v.0.5.4-large.png\"\u003e\n\nMore screenshots can be found \u003ca href=\"https://github.com/michaelkolesidis/javascript-software-synthesizer/blob/main/README.md#screenshots\"\u003ehere\u003c/a\u003e.\n\n## Build \u0026 Run\n\nFirst clone the project from GitHub:\n\n```\ngit clone git@github.com:michaelkolesidis/javascript-software-synthesizer.git\ncd javascript-software-synthesizer\n```\n\nInstall the project dependencies:\n\n```\nyarn\n```\n\nStart the Vite development server:\n\n```\nyarn dev\n```\n\n### For versions 1.x.x\n\nBefore the introduction of Vite in version 2.0.0, after installing the dependencies, users could run _JavaScript Software Synthesizer_ locally by using a VSCode extension like **Live Server** ([Live Server on the Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)) or Python's **http.server** module.\n\nFor more information, please refer to MDN's excellent article: [MDN article](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/Tools_and_setup/set_up_a_local_testing_server)\n\n### Demo\n\nThere is an online demo available at [https://javascript-software-synthesizer.vercel.app/](https://javascript-software-synthesizer.vercel.app/)\n\n## Introduction\n\nKeys, knobs, sliders and buttons to tweak your sound and generate immersive soundscapes. You can also connect your MIDI keyboard and play with it!\n\n### Quick Start\n\nThe _JSS-01 | JavaScript Software Synthesizer_ uses \u003cstrong\u003eFM Synthesis\u003c/strong\u003e (frequency modulation synthesis). In FM Synthesis there is an oscillator that produces the sound signal, the \u003cstrong\u003eCarrier\u003c/strong\u003e, and an oscillator that modulates the carrier's wave frequency, the \u003cstrong\u003eModulator\u003c/strong\u003e.\n\n\u003cimg width=\"300px\" src=\"./public/assets/fm.png\"\u003e\n\n\u003cp\u003e\u003cstrong\u003eSine wave:\u003c/strong\u003e\u003c/p\u003e\n\u003cimg width=\"300px\" src=\"./public/assets//waveforms/sine_wave.png\"\u003e\n\n\u003cp\u003e\u003cstrong\u003eFrequency-modulated sine wave:\u003c/strong\u003e\u003c/p\u003e\n\u003cimg width=\"300px\" src=\"./public/assets//waveforms/sine_wave_mod.png\"\u003e\n\n\u003cbr\u003e\u003cbr\u003e\n\n\u003cimg width=\"50px\" src=\"./screenshots/elements/synth.png\"\u003e\nIn JSS-01, the \u003cstrong\u003eSynth Section\u003c/strong\u003e of the synthesizer includes the controls for the \u003cstrong\u003eCarrier\u003c/strong\u003e oscillator.\n\n\u003cbr\u003e\u003cbr\u003e\n\n\u003cimg width=\"100px\" src=\"./screenshots/elements/modulation.png\"\u003e\nThe \u003cstrong\u003eModulation Section\u003c/strong\u003e includes the controls for the \u003cstrong\u003eModulator\u003c/strong\u003e oscillator.\n\n\u003cbr\u003e\u003cbr\u003e\n\n\u003cimg width=\"58px\" src=\"./screenshots/elements/effects.png\"\u003e\nThe \u003cstrong\u003eEffects Section\u003c/strong\u003e includes the controls of the various effects that can be applied to the sound. The effects are connected in series with the following connectivity: Oscillator 2 --\u003e Oscillator 1 --\u003e Auto Filter --\u003e Phaser --\u003e Crusher --\u003e Chebyshev --\u003e Feedback Delay --\u003e Ping Pong Delay --\u003e Reverb --\u003e Chorus --\u003e Tremolo --\u003e Vibrato --\u003e Distortion --\u003e Frequency Shifter --\u003e Output.\n\n#### How to Play\n\nYou can play the JSS-01 by using the on-screen keyboard, your computer keyboard, or a MIDI keyboard.\n\n\u003cimg width=\"500px\" src=\"./public/assets/keyboard/keyboard_bg_w.png\"\u003e\n\n#### Oscilloscope\n\nThe [Oscilloscope](https://en.wikipedia.org/wiki/Oscilloscope) shows the waveform of the sound. You can click on it to pause or you can right-click on it to save the current waveform as an image.\n\n#### Modulation Index\n\n\u003cimg width=\"80px\" src=\"./screenshots/elements/mod_index.png\"\u003e\nThe Modulation Index determines the amount of the modulation that will be applied to the Carrier. If you set the \u003cstrong\u003eModulation Index\u003c/strong\u003e to 0 (can be found at the top line of the Synth section) you get the unmodulated output of the carrier oscillator.\n\n#### MIDI\n\nIn order to use your [MIDI keyboard](https://en.wikipedia.org/wiki/MIDI_keyboard) with the JSS-01 you should connect it and turn it on, prior to accessing the web app. If you connect it while already on the JSS-01, you should refresh the page. The available MIDI devices will appear inside the MIDI display, located on top left. You can click on the MIDI device you would like to use and wait for the confirmation message. You are now ready to use your MIDI keyboard. Enjoy playing!\n\n#### Sequencer\n\n\u003cimg width=\"900px\" src=\"./screenshots/elements/sequencer.png\"\u003e\nRight above the on-screen keyboard you can find the Sequencer. There is an included sequence preinstalled, so you can just press the \u003cstrong\u003ePlay button\u003c/strong\u003e and listen to it. \u003cbr\u003e\u003cbr\u003e\n\nThe first input from the left controls the rate of the sequence (speed). The second input is the base value of the notes of the sequence (16n stands for a 16th note value, 8n for an 8th and so on). You can input your own sequences in the main input by writing the sequence of the desired notes in this form: \u003cstrong\u003e\"C4\", \"F5\", \"D2\"\\*\\*\u003c/strong\u003e. You can include parts with notes of half the base value by including them in brackets, ex. \u003cstrong\u003e\"C4\", [\"F5\", \"D2\"]\u003c/strong\u003e. In these examples, if the base value is 16n (16th notes), C4 will have a value of 16th, and each of the F5 and D2 will have a value of 32th (or a value of a 16th combined).\n\nWhen your sequence is ready, you can add it to the sequencer using the \u003cstrong\u003eAdd button\u003c/strong\u003e. In order to go back to the default sequence, you can simply write \u003cstrong\u003edefault\u003c/strong\u003e in the sequence input field and then click the Add button. There are two extra sequences included, the bassline of \"I Feel Love\" by Donna Summer (produced by Giorgio Moroder), which can be accessed by writing \u003cstrong\u003ei feel love\u003c/strong\u003e in the sequence input field and then pressing the add button, and the riff of \"Funky Town\", that can be accessed by writing \u003cstrong\u003efunky town\u003c/strong\u003e.\n\nYou can find some additional information about the JSS-01 and sound synthesis in this short [presentation](./public/assets/presentation/JSS%20Presentation.pdf).\n\n## System Requirements\n\nThe _JSS-01 | JavaScript Software Synthesizer_ is quite heavy, especially on the CPU. We would suggest these indicative minimum requirements:\n\n| Component  | Minimum                                 | Recommended                            |\n| ---------- | --------------------------------------- | -------------------------------------- |\n| CPU        | Quad-core x86-64 (2014 or later)        | Quad-core x86-64 (2018 or later) or M1 |\n| RAM        | 8GB                                     | 16GB                                   |\n| Display    | 1600x900                                | 1920X1080                              |\n| Sound Card | On-board, dedicated, or audio interface | Audio interface                        |\n| Speakers   | Monitor speakers or mixing headphones   | Monitor speakers or mixing headphones  |\n\n#### Browser Requirements\n\n| Browser                                                                                                                       |\n| ----------------------------------------------------------------------------------------------------------------------------- |\n| Chrome or other Chromium-based browsers                                                                                       |\n| Safari                                                                                                                        |\n| Firefox with the \u003ca href=\"https://addons.mozilla.org/en-US/firefox/addon/midi-input-provider/\"\u003eMIDI Input Provider add-on\u003c/a\u003e |\n\n## Documentation\n\nFull documentation will be released at some point in the future. In the meantime, you can refer to the [Tone.js documentation](https://tonejs.github.io/docs/), as well as the [NexusUI2 documentation](https://nexus-js.github.io/ui/api/#intro).\n\n## Guides \u0026 Tutorials\n\nThe JSS-01 is using FM synthesis implementing the FMSynth of Tone.js, While there aren't any guides and tutorials specifically for the JSS-01 yet, there are plenty of excellent guides on FM synthesis:\n\n### FM Synthesis\n\n- [Synth Secrets: An Introduction To Frequency Modulation from Sound on Sound](https://web.archive.org/web/20160403123704/http://www.soundonsound.com/sos/apr00/articles/synthsecrets.htm)\n- [Synth Secrets: More On Frequency Modulation from Sound on Sound](https://web.archive.org/web/20160404062919/http://www.soundonsound.com/sos/may00/articles/synth.htm)\n- [FM Synthesis Collection by Yamaha](https://www.yamahasynth.com/learn/synth-programming/fm-synthesis-collection)\n- [FM Synthesis entry in Wikipedia](https://en.wikipedia.org/wiki/Frequency_modulation_synthesis)\n\n## Contributing\n\nFeel free to submit issues and pull requests. It would be great to create a community around JSS-01, to continue its development and evolution, making it more capable and easier to use, increasing its creative and artistic potential.\nIf you are interested in becoming part of out community it would be useful to have a look to our dedicated document regarding [Contributing](https://github.com/michaelkolesidis/javascript-software-synthesizer/blob/main/CONTRIBUTING.md), as well as, out [Code of Conduct](https://github.com/michaelkolesidis/javascript-software-synthesizer/blob/main/CODE_OF_CONDUCT.md). In a nutshell, we want our community to be a safe space for everyone, so that we can all have a pleasant and joyful experience!\n\n## Changelog\n\nPlease refer to the project's [Changelog](https://github.com/michaelkolesidis/javascript-software-synthesizer/blob/main/CHANGELOG.md) document.\n\n## Technologies Used (Extended)\n\n- [Tone.js](https://github.com/Tonejs/Tone.js/)  \n  One could say that Tone.js is the \"soul\" of our project. It provides us with the synthesizers we use to generate sounds, as well as their various properties that can be tweaked and adjusted.\n- [NexusUI2](https://github.com/michaelkolesidis/nexusui2)  \n  NexusUI2 provides us with the UI components that are connected to the synthesizers and make parameters adjusting easy and playful.\n- [WEBMIDI.js](https://github.com/djipco/webmidi)  \n  WEBMIDI.js makes Web MIDI API easy to implement. It allows users to connect their MIDI keyboards and play the synthesizer the way it is meant to be played. Because, who likes playing music with a [mouse](https://web.archive.org/web/20150928202135im_/https://kathytemean.files.wordpress.com/2014/11/46289.jpg?w=500\u0026h=540)?\n- [Sass](https://github.com/sass/sass)  \n  The SCSS (Sassy CSS) syntax is utilized for the styling of our project.\n- [TypeScript](https://www.typescriptlang.org/)  \n  In version 0.6.1, TypeScript was first introduced in the project, with significant parts of it migrating to TypeScript for increased type safety. In version 1.0.0 migration to TypeScript was completed.\n- [Vite](https://vitejs.dev/)  \n  Vite provides the frontend tooling, a local server and packaging\n\n## Roadmap\n\n### Completed\n\n- Dark Mode. Users are now able to switch the UI to dark mode. Dark mode makes the whole experience easier on the eyes and greatly improves readability and accessibility for certain users. It was one of the most common feature requests we were getting as feedback from our users.\n- Migration to TypeScrip\n\n### Currently Working On\n\n- Bug fixes\n\n### Future Plans\n\nSome of the features to be implemented in the future are:\n\n- Recorder\n- Presets\n- All parameters controllable with MIDI\n- Other types of sound synthesis to choose from (currently only FM synthesis)\n- Rewriting the app using React\n\n## References and Inspiration\n\n- [Synth Secrets from Sound on Sound](https://www.soundonsound.com/series/synth-secrets-sound-sound)\n- [Learning Synths by Ableton](https://learningsynths.ableton.com/en/playground)\n- [Syntorial](https://www.syntorial.com/)\n- [Dexed - FM Plugin Synth](https://github.com/asb2m10/dexed)\n- [Teenage Engineering OP-1](https://teenage.engineering/products/op-1)\n- [Helm](https://tytel.org/helm/)\n\nA full(-ish) list of references can be found in the [References](https://github.com/michaelkolesidis/javascript-software-synthesizer/blob/main/REFERENCES.md) document.\n\n## Screenshots\n\n#### Medium Screens\n\n\u003cimg width=\"900px\" src=\"./screenshots/v.0.5.4-medium.png\"\u003e\n\n#### Small Screens\n\n\u003cimg width=\"900px\" src=\"./screenshots/v.0.5.4-small.png\"\u003e\n\n## Contributors\n\n- [Michael Kolesidis](https://github.com/michaelkolesidis)\n- [Chris Strawser](https://github.com/mcochris)\n- [Margarita Marmaridou](https://github.com/mamarmar)\n- [Omar Shehata](https://github.com/OmarShehata)\n- [Jens B](https://github.com/error-four-o-four)\n\nYour name could be here and it would be great to have you aboard!\n\n## Other\n\n- You can find a mirror of this repository in [Codeberg](https://codeberg.org/michaelkolesidis/javascript-software-synthesizer).\n- The project has a total of 3,342 lines of code (excluding blank lines and comments).\n\n## Special Thanks To\n\n- [Mohammed Amine Grid](https://github.com/mohammed-amine-grid), for his guidance and dedication throughout this journey.\n- All the students and the tutors at the [Social Hackers Academy](https://github.com/SocialHackersAcademy), for creating a nice little community of passionate people offering their best for each other.\n\n## 💖 Support the Project\n\nThank you so much for your interest in my project! If you want to go a step further and support my work, buy me a coffee:\n\n\u003ca href='https://ko-fi.com/michaelkolesidis' target='_blank'\u003e\u003cimg src='https://cdn.ko-fi.com/cdn/kofi1.png' style='border:0px;height:45px;' alt='Buy Me a Coffee at ko-fi.com' /\u003e\u003c/a\u003e\n\n## License\n\n\u003ca href=\"https://www.gnu.org/licenses/agpl-3.0.html\"\u003e\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/0/06/AGPLv3_Logo.svg\" height=\"100px\" /\u003e\u003c/a\u003e\n\nCopyright (c) 2023 Michael Kolesidis  \nLicensed under the [GNU Affero General Public License v3.0](https://www.gnu.org/licenses/agpl-3.0.html).\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"400px\" src=\"./public/assets/visual.png\"\u003e\n\u003c/p\u003e\n","funding_links":["https://github.com/sponsors/michaelkolesidis","https://ko-fi.com/michaelkolesidis'","https://cdn.ko-fi.com/cdn/kofi1.png'"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelkolesidis%2Fjavascript-software-synthesizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaelkolesidis%2Fjavascript-software-synthesizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelkolesidis%2Fjavascript-software-synthesizer/lists"}