What is this course about?

In this course, we’ll be learning how to live code music in a system called TidalCycles. TidalCycles, or Tidal for short, allows you to create complex music from small pieces of code. It’s not just a different way of producing music, but a different way of thinking about music entirely: as programmable patterns of sound and transformations on patterns.

For example if we take the single line program

d1 $ degradeBy 0.25 $ s "bd(<13 15>,16,<0 1 2>)" # speed "[0.5|0.75|1]"

and attempt to describe what it does in words it would be [deep breath here]:

this plays a pattern of bass drum samples that alternate between 13 and 15 beats spread as evenly as possible across 16 even beats per loop, rotating the pattern in time either 0, 1, or 2 beats each iteration, randomly pitching the samples down to half-speed, 3/4-speed, or not at all, and replacing each drum hit with an equal length silence 25% of the time.

And the result sounds like

which is a pretty nice drum beat for something that only takes a few seconds to type once you’re familiar with Tidal.

The really fun and exciting thing about this kind of algorithmic music is that since you can do so much with so little typing you can actually engage in live coding, the practice of improvising music and writing code in front of an audience. Live coding is a relatively young field of performance but it’s a weird and exciting one, unlike anything else.

So over the course of these lessons you’ll be learning how to make make patterns of sound, change them, transform them, and use randomness to create music that’s strange and surprising.