No Diary: No computer music diary this week.
This workshop is the first time we will use Strudel in this course. This workshop will get you up to speed on Strudel so that you’re ready to make music with it for next week’s diary.
This week we flip the switch to making computer music with a text-based programming system. Depending on your background, this could feel freeing, confusing or a bit of both.
The programming system will use now is called Strudel. Strudel is a web-based programming system for live coding music. Strudel first appeared in 2022 and it’s under fairly active development. In contrast, Pd, released in 1996, hasn’t changed all that much over the last 10 years.
The broad idea of live-coding is to set up musical processes in a text-based programming system, and then edit your program over time to create a changing piece of music. Rather than triggering notes and sounds directly with a keyboard, they are likely to be triggered by an algorithm, so you’ll be making algorithmic music.
Music making in Strudel tends to be at a somewhat higher level than in Pd. Strudel comes with pre-made synths and the craft of live-coding tends to be in creating algorithms to control those synths. You can still build your own synths from the ground up, just like in Pd (and it’s pretty interesting), but that’s not our focus this week.
In this week’s workshop you will use some of Strudel’s algorithmic music feature to create music with multiple parts.
To get started on this task we suggest running through the Strudel Workshop which introduces the music making concepts.
Goals for this week#
-
Complete the Strudel “Workshop” here (“First Sounds”—“Recap”) so that you understand basic sound making and patterns in Strudel.
-
Understand how musical concepts (pitch, loudness, duration, timbre, texture) can be represented & manipulated in a textual computer music language
-
Create algorithmic music using the mini notation pattern language that you can manipulate in real time to develop the concepts listed above over time. Now you’re a live coder!
Pd and Strudel are both great systems for musical expression but their design tends to emphasis different kinds of music. It might be better to lean into Strudel-y music this week rather than to replicate what you were doing in Pd.
Hints for live coding#
-
Create some text files in your portfolio 2 repository to store your work. Strudel uses the JavaScript programming language so you coudl create files like “2025-05-01-live-coding.js”.
-
Strudel can do a lot of exciting stuff, but it’s a bit experimental and some parts are not well documented. Be gentle on it and yourself and if you can’t work something out, ask on the forum.
-
Strudel works fine on the web (Chrome/Chromium preferred), but if you want to run it locally, you can clone the github repository, and follow the instructions to run a development server on your computer.
-
Strudel’s source code is probably not too hard to modify if you want to start hacking. There’s some technical documentation introducing the main concepts.
{:.info-box} Strudel is actually a JavaScript port of Tidal created by Alex Mclean who popularised the idea of live coding music. Tidal itself is written in Haskell. At this point somebody is about to start asking on the forum “Whyyyyyy can’t we just live code in Haskell???!”. Well. Tidal is awesome, but by using a web-based system, we get a lot of convenience and access to collaborative tools like Flok which we will explore next week.
Strudely Links#
-
Main strudel.cc REPL
-
Strudel documentation
-
Making new sounds in strudel
-
Strudel source code
Resources#
-
Nick Collins et al. 2003. Live Coding in Laptop Performance
-
Magnusson, Thor (2014) Herding cats: observing live coding in the wild
-
Shelly Knotts (2016) Algorithmic Interfaces for Collaborative Improvisation
There are a couple of maths-y/music-y pre-reqs which you’ve probably already seen before, but are often helpful in algorithmic composition:
-
pitch classes provide a way to think about which notes fit with which other notes (scales, intervals, chords)
-
modular arithmetic is handy for both rhythmic and harmonic (pitch) algorithms
-
all the music theory crash course stuff mentioned in week 1 will be helpful here as well, especially because now you’re working in a textual programming langugage you might be interested in doing more “note-based” stuff
Algorithmic Composition Resources#
A few more places to get ideas for algorithmic composition:
-
Check out Ben Swift’s livecoding sets and ask him to explain anything you have questions about
-
D. Herremans, C.-H. Chuan, and E. Chew. A functional taxonomy of music generation systems. ACM Comput. Surv., 50(5):69:1–69:30, Sept. 2017. DOI:10.1145/3108242
-
Oxford Handbook of Algorithmic Music (available through ANU library)
-
Algorithmic Composition: Computational Thinking in Music (Michael Edwards)
-
Algorithmic Composition - Cambridge Companion to Electronic Music (Karlheinz Essl)
-
Euclidean rhythms; here’s a blog post version and here’s a deep dive academic paper (note that Extempore has a
euclidfunction for generating Euclidean rhythms) -
https://generative.fm/ is a super-cool website full of generative/algorithmic compositions
-
evolutionary algorithms for music composition (e.g., darwintunes, evolutionary music slides)
-
AI/ML composition (e.g., Magenta project)
-
cool algorithmic artists: Renick Bell, kindohm/Mike Hodnick, William Fields