> perfectn0ir's home

look at my memory. a red dragon falls from the heavens...

programming as a performance

Live coding is programming as a performance. People usually live code music and videos but it has a myriad of other uses. I first stumbled upon live coding while looking for ambient/experimental music. I discovered this video of an "algorave". Algoraves are "algorithm raves", dance raves where one or more performer(s) program on stage with their screen projected behind them. Algoraves are usually minimal, loopy techno. People attending are encouraged to dance to the algorithm and examine the live coding. From the videos I've seen, it seems there is a real sense of community inside these raves. I am yet to attend one, so I decided to do the next best thing: learn how to do it myself!

I decided to begin my live coding journey with TidalCycles: one of the most popular live coding languages for music. I chose TidalCycles because most of the live coding performances I enjoyed used it and because it was written in Haskell. After a hellish installation process (mostly due to the fact that I still use Windows, I know, I know, I'm trying to muster up the courage to switch to Linux), I finally had it running on my computer and began learning the basics of the programming language. TidalCycles is cool because it works in loops. For example:

d1 $ s "bd bd"        -- runs a bass drum sound every other beat
d1 $ s "[hh hh]"      -- plays a hi hat sound twice every four beats
d1 $ s "bd hh bd hh"  -- simple rhythm pattern, alternates bass drum and hi hat every beat 

The examples above are extremely basic and the only tip of the iceberg with what one can do with TidalCycles. There are also synthesizers, oscillators and effects to play with. However, the best part of TidalCycles is how one can add random variation to the sounds:

d1 $ n "e? f? a? c?"      -- 50% chance of playing each note
  # sound "superpiano"    -- using the "superpiano" synthesizer to play notes E F A C 

I am still awful at TidalCycles. I would love to perform with a real live audience, but for now, I will continue practicing on my off time. Either way, I hope this blogpost has encouraged some of you to give TidalCycles and live coding a look!


Check out these links for more information and some performances!
https://tidalcycles.org/ - official tidalcycles website
https://algorave.com/ - official algorave website
https://www.youtube.com/watch?v=C2GH5JmJwhU - some of the crazy stuff you can do with TidalCycles
Herding cats: observing live coding in the wild - interesting article
https://www.youtube.com/watch?v=Tjf-NJNfOP4 - algorave performances (my favourites are Atsushi Tadokoro, Akihiro Kubota and Alex McLean)