This is pretty incredible to watch. I initially thought she must be pulling some kind of trick to make that look so fluid, but the fact that she is making very small typos and correcting them as she goes make it look very believable. This is really the first time I've watched someone use one of these tools and it feel like a musician using a new kind of instrument.
Just to add some context, Strudel is TidalCycles ported from Haskell to JS. IMO, Haskell is a much nicer language for this stuff. Hopefully, now that GHC can output WebAssembly, someone can build a web-based music programming environment around the original TidalCycles instead.
I've watched a couple of her stuff, it's really inspiring and feels very cosy, like a slice of Internet that lives on its own and creates without being too bothered about the Algorithm™.
The person in that video really has an ear for synthesis. I've spent quite some time watching all the strudel videos and this creator consistently shows the best skill across genres.
In order, the most popular ones of these are probably
* Max. It's built into a popular DAW, and is shockingly capable as an actual programming language too. The entire editor for the Haken line of products is written in Max.
* Pure Data or Supercollider.
* Csound.
Not ordering things like Scala or LilyPond that are much more domain-specific.
When I was first introduced to Max it was on a Mac SE in 1989, and I really only used it for saving & restoring patches (on my SY77 and U110) until someone walked me through how it really worked. I didn't understand what it could do, and I rejected it at first because it was too open-ended for me to see utility. Lol. How things changed after that.
What really blows my mind is that I wasn't at all put off by the tiny little Mac monitor, it just seemed normal. No way I could work with such a small b&w screen today I'd go mad. (weirdly I feel less creative than i did in the 1980's and NOW i have near infinite recording & mixing options. The irony.)
Csound (I think v3) was the first music language I played with, back in the early 90s, under DOS even. Back then, running in real-time wasn't a thing. Generate a WAV file and play it after the program finished.
Later, at the end of the 90s, I remember playing with CLM/CM, in common lisp.
But the most productive experience was definitely SuperCollider. I can only recommend giving it a try. Its real-time sound synthesis architecture is great. Basically works sending timestamped OSC messages AOT (usually 0.2s). It also has a very interesting way of building up so-called SynthDefs from code into a DAG. I always wondered if a modern rewrite of the same architecture using JIT/AOT technology would be useful. But I digress... SC3 is a great platform to play with sound synthesis... Give it a try if you find the time.
I can vouch for the tutorial series from Eli Fieldsteel[0] for getting into SuperCollider and audio synthesis in general. If you were ever curious on how to bridge the gap between signal processing and music theory through mathematical operations, I think this is one of the best series out there.
Sonic Pi is missing imo. (Some have mentioned Strudel, it’s a similar live-coding music platform). Admittedly Ruby-based, but it seems some of the other ones on the list are libraries/forms of other langs too.
Sonic Pi is by far the most accessible way to play with these tools. It's designed to teach music and coding to kids and has great starter tutorials, and a ton of depth as well. Check it out!
Most of the languages on the list have not been maintained in decades with many being for functionally extinct if not completely extinct systems. It is not really a list meant to guide you to a language to use, it is more about historical/academic interest.
Relevant to this discussion - my project Glicol (https://glicol.org) addresses this space. Currently working on a no_std rewrite, demo coming next year :)
I really hope that Max becomes fully accessible in a text based format one day. It's so cool and I've spent a few months randomly through the years building neat plugins for Ableton but, for me, it would be so much stickier if it was code. Especially now with AI assistance, Claude can still be helpful but it hallucinates a lot harder when trying to describe visual code.
Would love to see this, as someone who has been heavily using Live since 2006 and is finally getting into proper coding in middle-age. Having a way to augment Live in a text-based coding format would be greatly welcome.
While I'm not holding my breath, Ableton the company are transitioning into a steward-ownership model in which the stewards will have decision rights over the company. So I have hope that it will continue to grow in ways that are less affected by market considerations and that are a little more opinionated and specialized. Not to mention that Ableton own Cycling 74 (creators of Max/MSP).
you can get the LLM to output max patches in JSON and copy paste directly into max. it was pretty decent at it when I tried and would probably be even better with relevant recent documentation in context.
I love seeing a Definition List (DL/DT/DD html tags) in the wild. Often more hassle than its worth to make them appear the way you want, but semantically pleasing and underused.
combine it with a <details> and <summary> inside the <dd> and a little CSS checkbox toggle for JS-less "show all details"/"hide all details" and it's pure gold.
Their structure in the markup can be a bit confusing imo - something more like a <figcaption> inside a <figure> or a <legend> inside a <fieldset> would be much nicer imo.
The spec even mentions [0] that you're allowed to use <div>s to group dt/dd pairs for styling purposes.
I haven't, yet, found a good way to implement filters (low-pass, high-pass, band-pass, etc.). It does not have Fourier transform, and we cannot operate on the frequency domain. However, the moving average can suffice as a simple filter.
```
I wonder if there's a way to implement the FFT using subqueries and OVER/partitioning? That would create a lot of room for some interesting stuff to happen, specifically making it easy/possible to implement filters, compression, reverberation, and other kinds of effects.
Two other primitives that would be valuable to figure out:
1. How to implement FM/phase distortion. You can basically implement a whole universe of physical modeling if you get basic 6 op sine wave primitives right with FM + envelopes.
2. Sampling/resampling - given clickhouse should do quite well with storing raw sample data, being able to sample/resample opens up a whole world of wavetable synthesis algorithms, as well as vocal editing, etc.
Honestly, although the repo's approach is basic, I think the overall approach is wonderful and have wanted to be able to use SQL to write music for a while. I've spent a lot of time writing music in trackers, and being able to use SQL feels like it would be one of the few things that could spiritually be a successor to it. I've looked at other live coding languages, many of which are well built and have been used by talented people to make good music (such as Tidal, Strudel, etc). But all of it seems like a step down in language from SQL. I'd rather have their capabilities accessible from SQL than have to use another language and its limitations just to get those capabilities.
Food for thought -- thanks for the interesting and thoughtful work!
Very creative guy operating this site (look at this! https://timthompson.com/spacepalette/) though it looks like it’s been idle the past 4 years or so? The live-coding community around tidal cycles will point you to a the fruit of missing projects like tidal-cycles and strudel. A strong inviting community: https://club.tidalcycles.org/
Sonic Pi is SuperCollider, but using Ruby instead of the default sclang language. Overtone is similar (and possibly originally by the same developer, iirc?) but using Clojure, and is also missing from the list.
Yesterday i used Claude Code to define and implement a YAML based DSL for playing backing tracks. I can ask an LLM to generate this DSL for any well known song, and it will include chord progression, lyrics, bass, drums, strumming pattern, etc. It's a go command line tool that plays the DSL via midi, and displays the chords, strumming patterns, and lyrics. Also does export to Strudel.
The problem I see is: people are not going to use a project that is AI generated for long really, unless they do it just for a one-off task. I'd like to constantly generate new music. I also have ideas based on existing music so I want to adjust this, but do so programmatically, and that seems ... hard.
Depending on the source music, there are many aspects of this that normally require a license with a records company or some proxy. Especially the lyrics part. Be careful not to get into very expensive trouble. Just because the LLM can do it, doesn’t mean it’s ok to do it.
Musicabc has some really nice JS and Obsidian plugins that essentially allow you to create little scrapbooks of musical ideas in markdown that are also playable as sound and viewable as sheet music.
[+] [-] sandebert|2 months ago|reply
https://youtu.be/aPsq5nqvhxg
[+] [-] AlexB138|2 months ago|reply
[+] [-] george_____t|2 months ago|reply
[+] [-] NeutralForest|2 months ago|reply
[+] [-] AStrangeMorrow|2 months ago|reply
I feel like that’s kinda how people imagined navigating whatever cyber domain when the first big cyberpunk novels came out
[+] [-] lagniappe|2 months ago|reply
[+] [-] unknown|2 months ago|reply
[deleted]
[+] [-] ar_lan|2 months ago|reply
Writing code to make music feels so natural to me (a musically inept, but proficient coder) and this breaks down so many barriers.
I wonder how Cursor fares with Strudel so far.
[+] [-] theossuary|2 months ago|reply
[+] [-] unknown|2 months ago|reply
[deleted]
[+] [-] Blackthorn|2 months ago|reply
* Max. It's built into a popular DAW, and is shockingly capable as an actual programming language too. The entire editor for the Haken line of products is written in Max.
* Pure Data or Supercollider.
* Csound.
Not ordering things like Scala or LilyPond that are much more domain-specific.
[+] [-] why-o-why|2 months ago|reply
What really blows my mind is that I wasn't at all put off by the tiny little Mac monitor, it just seemed normal. No way I could work with such a small b&w screen today I'd go mad. (weirdly I feel less creative than i did in the 1980's and NOW i have near infinite recording & mixing options. The irony.)
[+] [-] quantpunk|2 months ago|reply
There is value in what has already been built for these languages but once you move beyond that, life is so much easier to just use python.
Cecilia5 is a great example of that being rewritten from csound to pyo.
[+] [-] veunes|2 months ago|reply
[+] [-] lynx97|2 months ago|reply
But the most productive experience was definitely SuperCollider. I can only recommend giving it a try. Its real-time sound synthesis architecture is great. Basically works sending timestamped OSC messages AOT (usually 0.2s). It also has a very interesting way of building up so-called SynthDefs from code into a DAG. I always wondered if a modern rewrite of the same architecture using JIT/AOT technology would be useful. But I digress... SC3 is a great platform to play with sound synthesis... Give it a try if you find the time.
[+] [-] whilenot-dev|2 months ago|reply
[0]: https://www.youtube.com/watch?v=yRzsOOiJ_p4&list=PLPYzvS8A_r...
[+] [-] azath92|2 months ago|reply
[+] [-] lovich|2 months ago|reply
If it’s the same, it’s one that if I win the lottery I’d spend my time learning along with this tool from Imogen https://mimugloves.com/
I don’t think I’d ever produce something worth listening to, but if I won the lottery, why would I care beyond my own enjoyment?
[+] [-] elxr|2 months ago|reply
It's giving me some ideas for a TUI video editor using that grid interface. What a cool project.
[+] [-] iansteyn|2 months ago|reply
[+] [-] jweather|2 months ago|reply
[+] [-] benrutter|2 months ago|reply
Here's a currently active list on github in case somebody's left needing a fix of music programming: https://github.com/zoejane/awesome-music-programming
[+] [-] ofalkaed|2 months ago|reply
[+] [-] chaosprint|2 months ago|reply
[+] [-] heuermh|2 months ago|reply
Or maybe it is already possible, to be fair I haven't looked closely.
https://daisy.audio/hardware/, https://github.com/electro-smith/libDaisy
[+] [-] fnordlord|2 months ago|reply
[+] [-] Slow_Hand|2 months ago|reply
While I'm not holding my breath, Ableton the company are transitioning into a steward-ownership model in which the stewards will have decision rights over the company. So I have hope that it will continue to grow in ways that are less affected by market considerations and that are a little more opinionated and specialized. Not to mention that Ableton own Cycling 74 (creators of Max/MSP).
So it's not out of the realm of possibility.
[+] [-] scragz|2 months ago|reply
[+] [-] veunes|2 months ago|reply
[+] [-] rriley|2 months ago|reply
Another fun esoteric music language missing in the comments is ORCA: https://git.sr.ht/~rabbits/orca
[+] [-] scelerat|2 months ago|reply
[+] [-] TheRealPomax|2 months ago|reply
[+] [-] tempaccsoz5|2 months ago|reply
The spec even mentions [0] that you're allowed to use <div>s to group dt/dd pairs for styling purposes.
[0]: https://html.spec.whatwg.org/multipage/grouping-content.html...
[+] [-] zX41ZdbW|2 months ago|reply
[+] [-] yowlingcat|2 months ago|reply
```
Limitations
I haven't, yet, found a good way to implement filters (low-pass, high-pass, band-pass, etc.). It does not have Fourier transform, and we cannot operate on the frequency domain. However, the moving average can suffice as a simple filter.
```
I wonder if there's a way to implement the FFT using subqueries and OVER/partitioning? That would create a lot of room for some interesting stuff to happen, specifically making it easy/possible to implement filters, compression, reverberation, and other kinds of effects.
Two other primitives that would be valuable to figure out: 1. How to implement FM/phase distortion. You can basically implement a whole universe of physical modeling if you get basic 6 op sine wave primitives right with FM + envelopes. 2. Sampling/resampling - given clickhouse should do quite well with storing raw sample data, being able to sample/resample opens up a whole world of wavetable synthesis algorithms, as well as vocal editing, etc.
Honestly, although the repo's approach is basic, I think the overall approach is wonderful and have wanted to be able to use SQL to write music for a while. I've spent a lot of time writing music in trackers, and being able to use SQL feels like it would be one of the few things that could spiritually be a successor to it. I've looked at other live coding languages, many of which are well built and have been used by talented people to make good music (such as Tidal, Strudel, etc). But all of it seems like a step down in language from SQL. I'd rather have their capabilities accessible from SQL than have to use another language and its limitations just to get those capabilities.
Food for thought -- thanks for the interesting and thoughtful work!
[+] [-] rausr|2 months ago|reply
[+] [-] erk__|2 months ago|reply
The handbook for the language is sadly only in Danish so it might not be super interesting: https://datamuseum.dk/bits/30002486
Here is the code for movement 1 and 2 of Eine Kleine Nachtmusik: https://datamuseum.dk/aa/gier/30000644.html
[+] [-] listenfaster|2 months ago|reply
[+] [-] veunes|2 months ago|reply
[+] [-] philprx|2 months ago|reply
[+] [-] opminion|2 months ago|reply
[+] [-] 1313ed01|2 months ago|reply
[+] [-] ako|2 months ago|reply
[+] [-] shevy-java|2 months ago|reply
[+] [-] isodev|2 months ago|reply
[+] [-] veunes|2 months ago|reply
[+] [-] 3ds|2 months ago|reply
[+] [-] rhdunn|2 months ago|reply
[+] [-] bebb|2 months ago|reply
One interesting feature is it has built-in vibe coding, to produce an LLM-generated loop program to start one's creative journey.
[+] [-] jackkinsella|2 months ago|reply
https://abc.hieuthi.com/