Tidal Cycles – Live coding music with Algorithmic patterns
tidalcycles.org
tidalcycles.org
an alternative audio engine for Strudel with Glicol
[1] Dean, Roger T. The Oxford handbook of algorithmic music. Oxford University Press, 2018.
[2] Blackwell, Alan F., et al. Live coding: a user's manual. MIT Press, 2022.
[3] Kirkbride, Ryan Philip. Collaborative interfaces for ensemble live coding performance. Diss. University of Leeds, 2020.
[4] Roberts, Charlie, et al. "Rethinking networked collaboration in the live coding environment Gibber." (2022).
After experimenting with PD, Csound, SC, Tidal, and Glicol for several years, I am now working on a time-stretching/pitch-shift algorithm, together with some FM synthesis with LLM: https://github.com/chaosprint/glicol/discussions/139
What I want to say is that there are also many underlying algorithmic patterns in sound itself. In digital music, it's the sample-level pattern. It's fascinating to think about it, especially in the context of collaboration.
I started around 2014 or so, when there were fewer systems available. I saw Alex McLean perform with Tidal and that was enough for me, although I like to think I would have ended up using it anyway.
The main thing that initially grabbed me was the arbitrary subdivision of time in the mini-notation, something I’d spent countless hours doing painfully by hand in a DAW. I love the terse syntax and simple yet powerful philosophies underlying Tidal.
So-called 'visual programming languages' I don't find interesting for performance, since they rely on the mouse for program manipulation.
For me Tidal's mini-notation is the greatest music sequencing tool of all time, bar none. Every time someone shows me a sequencer I can usually write the Tidal code in my head on the spot, and save $1000s on redundant hardware. It could only be beaten by being turned into a physical instrument, something I've tried to do in the past: https://github.com/jarmitage/Stenophone.
That being said, even though I'm evidently a big Tidal fan I would still call attention to ICLC and HLCI, where amazingly creative and interesting new systems and approaches are being proposed every year:
Compared to PD and max/msp, Tidal is far more focused on the pattern language and the magic that can come out of that. Any 'programming as programming' has to be done with Haskell and loaded in as its own functions. Puredata and max/msp both are full (graphical) programming environments with their own quirks and special tricks, but in a way a bit more like Supercollider in that they can speak midi and do playback inside their own engines (afaik).
note(`[ [ [e5 [b4 c5] d5 [c5 b4]] [a4 [a4 c5] e5 [d5 c5]] [b4 [~ c5] d5 e5] [c5 a4 a4 ~] [[~ d5] [~ f5] a5 [g5 f5]] [e5 [~ c5] e5 [d5 c5]] [b4 [b4 c5] d5 e5] [c5 a4 a4 ~] ],[ [[e2 e3]4] [[a2 a3]4] [[g#2 g#3]2 [e2 e3]2] [a2 a3 a2 a3 a2 a3 b1 c2] [[d2 d3]4] [[c2 c3]4] [[b1 b2]2 [e2 e3]2] [[a1 a2]*4] ] ]/16`)
Versus
<score lang="ABC"> X:1 T:The Legacy Jig M:6/8 L:1/8 R:jig K:G GFG BAB | gfg gab | GFG BAB | d2A AFD | GFG BAB | gfg gab | age edB |1 dBA AFD :|2 dBA ABd |: efe edB | dBA ABd | efe edB | gdB ABd | efe edB | d2d def | gfe edB |1 dBA ABd :|2 dBA AFD |] </score>
One could probably write a parser that would convert between these