I’ve been working with Tone.Js recently and it’s been quite pleasant! Seems like it could handle this use case as well, fairly trivially. Worst part has been finding good royalty free sample sources for instruments.
There's also Tidal Cycles Drum Machines (and by the looks of things quite a few other tidal sample repos), but I'm not actually sure if this is public-domain
I dug around on Freesound, but the search UI is pretty poor and sometimes broken. Seems like a great resource, but in need of a lot of work on the discovery side of things.
Because JSON today is some sort of "lingua franca" of data exchange and there is a vast library of tools to handle JSON.
If you have something that "plays sound" from JSON it becomes easy to imagine using existing JSON based tools to create music. Building a "graphical music editor" for example would be easy for most web devs.
"Synthesizing Music from JSON" to me means something I could feed JSON into, and it would somehow transform it into music.
This is just using JSON as an encoding format. (And as a "legacy" one, too, it seems like its moved to JS.)
> it becomes easy to imagine using existing JSON based tools to create music.
No … it really doesn't? I am trained in both music and JSON, and I have no idea how that'd work.
Because you don't have "something that 'plays sound' from JSON" you have something that plays sound from application/sonant-x+json ; the interesting bits are in the "application/sonant-x" but your tooling only understands the "+json".
It's amazing to see FOSS music trackers still being made, each time a bit more modernized. Although the new "single instrument tracks" model may take a while to click for me, I think it may allow for more dynamic songs.
P.S. what's the license for pl_synth? I couldn't find one on the repo.
For WASM with C++, I recently created a simple example using the new-ish AudioWorklet support in Emscripten, showing how to create an AudioWorklet oscillator with parameters. It removes a lot of the boiler plate you used to have to do, but the docs are a bit lacking.
https://ericoporto.github.io/bgmJs/
Much simpler implementation, you can read the JS code that was manually written. There is a link to the repository in the page.