https://strudel.cc has been the most intuitive music livecoding experience I've come across. In-line piano rolls and waveform visualizers, highlighting current notes - I love it.
I'm currently halfway through making an album entirely in Strudel
I'm just going to mention Pure Data here, because I'm always surprised when people don't know about it. https://puredata.info/
I use it in my art and music practice to interface with hardware like a GameTrak controller, and to control drone motors for bowing/drumming physical things for computer controlled electroacoustic music. I also use it at a university lab for the development of assistive musical instruments for disabled musicians. It is both an extremely useful tool, and an incredibly fun musical playground for the mind.
The first time I came across puredata was while I was debugging a networking issue at $JOB. After ssh-ing into the host machine, I was looking through what tools were installed, and came across `pd` in $PATH. I ended up discovering that someone had added `pd` to the provisioning script years ago, thinking they were installing pandas (the Python package).
> Orca is a two-dimensional esoteric programming language in which every letter of the alphabet is an operator, where lowercase letters operate on bang, uppercase letters operate each frame.
Amazing job! The live editor capabilities are really well-thought.
I've inspected the code briefly [1] and it seems that there is a fairly sophisticated domain specific parser which handles live updates, history tracking and WebAssembly hot reaload. It also uses AssemblyScript [2] as an intermmediate language.
I wonder whether all if this was implemented manually or with the help of LLMs. In either case, author has my respect.
Tysm! Technically, about the audio engine, the language is fully Turing complete, compiling bytecode which then gets swapped out in realtime and executed by a VM running in WebAssembly/AssemblyScript. All the gens/effects/filters are implemented in a custom DSL that gencodes AssemblyScript classes with all the permutations of parameters whether they're scalar or audio inputs in order to achieve the maximum performance possible. I had a lot of help from the LLMs but all of the components had been previously implemented by hand as well multiple times in previous versions, so I had a clear direction. If you have any questions feel free to ask, we also have a Discord you can find it in the homepage at the footer.
It's a compromise of speed vs quality. You can do `oversample(8, ()-> ...)` to get an increase in quality on certain occassions but that will slow down the performance.
If anyone wants to contribute gens/filters[0] the code is open source under MIT.
Ah, I overlooked that info, not expecting to see it in the very readily shown ‘welcome’ tab. Looks like it’s copylefted, too. And present on the Fediverse. Very nice!