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.
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!