Live Coding with Tidal Cycles and Strudel 🥐

:bookmark: ITT we are discussing the software-defined music coding environments Tidal Cycles and Strudel. I will be documenting myself learning this platform and will share original patterns as well as live-streamed events. Artists are invited to share tips, patterns, and performances of their own in the subsequent discussion.

:warning: This post contains affiliate links. This site receives commissions upon sales generated from such links. Thank you for your support!

First Impressions

Software-defined infrastrcuture is an IT principle that separates software applications from the hardware on which they run. This offers many advantages to enterprise environments in respect to repeatability, reliability, and maintenance. Software-defined music is a relatively new method of musical notation that could have similar implications for the art form. While the Tidal Cycles syntax may seem wholly unrelated to traditional Western notation on the surface, those familiar with Jazz chord charts and twelve-tone numeric notations will likely find elements of the code quite comprehensible.

Strudel

I first learned about Strudel through electronic music artist, Switch Angel. I am especially fascinated by how she explains the syntax and craft in real time - simultaneously a performance and a tutorial.

Tidal Cycles

Running the standalone client rather than using the web application allows for the use of Jack2 audio drivers on Linux. This is exceptionally powerful, as the inputs and outputs for the live coded performances can be routed to external software such as Ardour and OBS. Additionally, the Tidal Cycles community also uses Discourse and can be federated with this instance on eom.dev. A full course for learning the platform is available on their forum.

Ansible

The full Tital Cycles stack requires several components to run. Fortunately, an Ansible role is provided to automate the process. The role was added to the software-infrastructure repository as a remote submodule and was deployed on the Dell Tower Plus.

Accuracy and Precision

On first impressions, traditional Western musical notation seems less precise but perhaps more accurate than software-defined music. Consider these two performances of J.S. Bach’s WTC I C Minor Prelude and Fugue:

Glenn Gould

Sviatoslav Richter

Both accurate performances of the piece, but even a single performer is unlikely to play exactly the same way twice. Tidal Cycles, by contrast, does play the piece exactly the same way every time, barring programmed randomness (which is usually not actually random). Human perception simply cannot compete with a sampling rate of 48kHz; however, it seems like it would be quite difficult to transcribe the C Minor Prelude into the Tidal Cycles syntax - let alone the fugue. While the computer may be able to execute the piece with super-human precision, it may not be possible to achieve an accurate transcription of Bach on this platform for the computer to execute in the first place.

Ideas

At the very least, Tidal Cycles can be used as a metronome. Given the increasing importance of software in the world, there is an argument to be made that students should be encouraged to do so as a minor means of developing technical literacy. From there, students could develop two skills at once by programming backing tracks for their own performances and practice routines. One could program an entire band for jam sessions or create a modular library of rhythms and chord progressions to be combined later. Collaboration over platforms such as Jamulus and Owncast or even more software-oriented project management tools such as Git are also possible. As a starting point, I created a repository to collect transcriptions from The Real Book. Please submit a pull request if you would like to contribute to the project!

1 Like

Exploring the Basics

Today we are starting to learn the fundamentals of Tidal Cycles. As I said in the previous post, this series is intended to document my learning process and I am going into this blind. I have a music theory degree that is helpful for basic compositional skills, but I do not know the syntax of this language at all and have no experience writing electronic music. It would probably be wise to follow the official curriculum from the Tidal Cycles Discourse, but sometimes exploring on one’s own is just more fun. We will probably make use of these tutorials in future episodes, though.

Exploring Sounds and Writing Beats

Still working on the very basics of live coding, in this episode I am exploring the default library of samples that comes with Tidal Cycles and using them to create a few basic drum beats.

We also make our first addition to th3-f4k3-r3p0 with these loops. My intention is to import these patterns into future jazz charts to create a modular library of song parts to be combined into full charts. Also, just a note that this is the first video on my platform recorded in 4k60 UHD. It is admittedly a bad example, as the 4k camera has been shrunk into the corner and I am screensharing a 1080p monitor, but I am especially excited to be able to record in this higher resolution for Travel videos and other scenarios where the higher resolution will be of value.

Independent Voices

This was a fairly brief stream where I added a bit more detail to the drum patterns I created in the previous episode to make each part of the kit independent. The patterns sound exactly the same after this change, but doing so allows for more finesse in controlling how each voice is defined. I was also joined by @Ozoned, so I took some time to put this project into the context of self-hosted software such as Owncast, Jamulus, and Luanti.

1 Like