Tidal – mini language for live coding pattern
Tidal is a mini language designed for live coding pattern, embedded in the Haskell pure functional programming language. It’s made by me (Alex), developed through a lot of performances (including as part of slub) and a few rewrites over a number of years. Now a few other people are starting to make music with it, so I thought it was about time I shared news of its existence here.
Tidal represents patterns as recipes for how to make infinitely repeating cycles, rather than as a score-like sequence of events. Time structures can be messed with freely, just by stacking extra pattern transformations on top of one another. The end result is a pretty terse way of describing, and more importantly (for live coding) changing musical patterns. Any synthesis parameter (describable as OpenSoundControl) can be patterned independently, using a variety of pattern transformations. For more info you can see some short technical demo videos, read a paper describing some of the ideas behind it, or have a look at the documentation.
This year (2014) Mike Hodnick has started putting up a Tidal pattern every day, and they’re sounding good. Here’s a couple from the start of the series, along with the Tidal code used to generate them:
Correct me if I'm wrong, but I don't know of anyone apart from myself who has performed live with Tidal yet, so here's a quick video clip of me playing solo late last year:
Installation instructions (currently for Linux and Mac OS), documentation, source code and discussion mailing list can be found via the project home page.
It's worth noting that many other languages, including Supercollider and Common Music, include mini languages for manipulating pattern. Laurie Spiegel wrote a nice paper motivating all this, "Manipulations of Musical Patterns", back in 1981.