From around the year 2000, musicians, visual artists and choreographers have been popping up around the world to form a community of live coders. This community uses programming languages to create live work, predominantly in the performing arts. This idea appeared from different places in various flavours, such as just-in-time programming and on-the-fly programming, although the term live coding has became standard.
Patchwork portrait of seminal live coding band Powerbooks Unplugged (2004-),
film by Jonas Hummel (2010)
But, liveness and code form an unlikely friendship. On one side, liveness is about direct, unmediated connection, in the moment. On the other, code is about abstraction, generalisation, procedures to be replayed across different timespans and media. From this perspective live coding is almost oxmoronic — liveness is about now, code is about whenever. It is no wonder that many live coders purposefully embrace error and failure — their practice runs against our understanding of what code is for.
But when we write code not to make reuseable software, but to create in the moment, it takes on a very different quality, something closer to the embodied experience of speech. Live coders can work across networks or across disciplinary boundaries, pushing against the distinction between natural and computer languages.
Shared Buffer (Alexandra Cardenas, David Ogborn, Eldad Tsabary, Alex McLean)
@ Pikselfest Norway, 2014
Live coding has developed and grown over the past 17 years into a thriving, international community, meeting to create symposia [1,2], festivals [1,2], conferences, concerts and long nights of techno. All these performances involve the act of computer programming as performance: instructions are written and modified by a human while a computer executes them. Proclaiming “show us your screens”, live coders open up the developing structure and movement behind their work by projecting their screens, so the audience can experience the code grow alongside the development of its output.
Study in Keith, Andrew Sorensen
The experience of live coding is a strange one. Locked in a state of creative flow, working in a world made entirely of symbols, words and text, while simultaneously hyper-aware of the passing of time, and of the sound generated from the composition of those symbols. Hearing is a sense of touch, a way to feel the code. This is amplified further by the presence of others in the room, whose expectations you play with and respond to.
Kindohm @ ICLC 2016, Hamilton
Live coding isn’t a genre, or a set of tools, but a community of diverse practices, rolling back history to look for paths not taken — stripping back the graphical user interface to find the language machine underneath. Then, not using the language to describe already-made designs but to explore live thought, externalised through language.
REPL Electric — The Stars
On xmas eve I made a bot
Hello I’m a @tidalcycles bot, if you tweet a tidal pattern at me (without prefixing with “d1 $” or similar) then I’ll try to play it for you
— TidalCycles bot (@tidalbot) December 25, 2016
The source is here. It’s been a little unstable (any tips for running the jack audio subsystem on a virtual server?) but generally works well. There have been some nice patterns coming up, a random selection:
— TidalCycles bot (@tidalbot) December 27, 2016
— TidalCycles bot (@tidalbot) December 26, 2016
— TidalCycles bot (@tidalbot) December 27, 2016
— TidalCycles bot (@tidalbot) December 26, 2016
Then some mystery person (or bot) made a bot called tidalbotbot that is generating patterns for tidalbot, e.g.:
— TidalCycles bot (@tidalbot) December 27, 2016
We’ve been meaning to include examples in the tidalcycles docs for a while, should get around to this.. Also planning on a tidal pattern sharing website, which could interface nicely with tidalbot. More soon!
For upcoming collaborations with musicbox maestro David Littler, and to explore data input to Tidal as part of my ODI residency, I wanted to use one of these paper tape-driven mechanical music boxes as a controller interface:
You can see from the photo that I have quite a messy kitchen. Also that I’ve screwed the musicbox onto a handmade box (laser cut at the ever-wondrous Access Space). The cable coming out of it leads to a webcam mounted inside the box, that is peeking up through a hole underneath the paper as it emerges from the music box. With a spot of hacked-together python opencv code, here is the view from the webcam and the notes it sees:
Now I just need to feed the notes into Tidal, and use them to feed into live coded patterns. Should be good enough for upcoming performances with David tonight at a semi-private “Digital Folk” event at Access Space and another tomorrow in London at the ODI lunchtime lecture.
By the way the music in the above was made by my Son and I clipping out holes more or less at random. The resulting tune has really grown on me, though!
UPDATE – first live coding experiment:
Algorithmic approaches to music involve working with music as language, and vice-versa, in fact music and language become inseparable. This allows a musician to describe many layers of patterns as text, in an explicit way that is not possible by other means. By this I mean that musical behaviours are given names, allowing them to then be combined with other musical behaviours to create new behaviours. This process of making language for music is not one of cold specification, but of creative exploration. People make new language to describe things all the time, but there’s something astonishing about making languages for computers to make music, and it’s something I want to share.
Here’s a recording of one of the live streams I’ve been doing while working on my solo album Spicule from my home studio:
I start with nothing, but in the last few minutes everything comes together and I have a couple of different parts that start feeling like a whole track. There isn’t really a musical structure to the session apart from the slow building of parts, and a sudden cut when everything comes together. The macro structure of the track will come later, but by a process of trying rough ideas, and listening to see where they go, the music emerges from the words.
I generally go through much the same process when I’m doing improvised performances, making music from nothing, but this feels very different.. Instead of being tied to the structure of a performance, making continual changes to work with the audience’s expectations, I’m dealing with repetitions even more than usual. I’ve started experimenting with lights, at first to try accentuating the sound but I think now more to help focus, to get inside the repetition and maintain flow. Unfortunately doesn’t quite work in the video because the sound and video are slightly out of sync.. But the left/right light channels map to the left/right speakers, and each sound has a different colour.
As live coding develops, I still really enjoy improvisation, but am finding myself doing polished performances more often, involving prepared tracks, with risk low, and the original making processes behind them hidden. This is probably for the best, but then it feels important to share the behind-the-scene improvisation and development that goes on.. My pledgemusic crowdfund is a great way to do this, thanks to the generous critical feedback, encouragement and (gulp) hard deadline.. If you haven’t joined it yet, you can do it here!
I collaborated with xname on a performance as xynaaxmue on Saturday, audio+video up soon I hope.. xname performs with circuits that turn light into sound, improvising noise using stroboscopic lights. I was live coding with tidalcycles, as ever.
In the past I’ve created flashing patterns on an external monitor for xname’s circuits to feed off, check here for a recording of that one. This time I wanted to control a pair of RGB flash panels over DMX.. I used a tinkerit DMX hat for the arduino, officially retired but you can still find them online and the library is downloadable on github.
I hacked together a Tidal interface the night + morning before the conference, and it worked pretty well.. The Haskell and Arduino code is here.
With everything loaded up, Tidal code like this triggers flashes of light as well as sound:
x2 $ every 2 (slow 2) $ (jux (rev) $ foldEvery [5,7] (slow 2) $ (slowspread (chop) [64,128,32] $ sound "bd*2 [arpy:2 arpy] [mt claus*3] [voodoo ind]")) # dur "0.02" # nudge (slow 4 sine1) The basic features:
- sound – (sample name) is translated into colour in a semi-arbitrary way (a mapping which falls back on some crypto hashing)
- pan – (kind of) pans between the two lights
- dur – controls the duration of the flash
- the flashes have a linear fade, which works across chop and striate
Will update with documentation of the performance itself when it’s up.
Not much time to reflect right now, but taking some time to think about ongoing and upcoming activities at least..
Making Spicule LP is going pretty well, the crowdfund is past the halfway mark, the graphic and hardware design coming together with ace collaborators I’m hardly worthy of working with, and I’m looking forward to spending a lot more time in my studio over the summer.
My Open Data Institute sound art residency isn’t going too badly either, I’ve been working on an exhibition there called Thinking Out Loud with curator in residence Hannah Redler which opens soon. It’ll include great work by Felicity Ford, David Griffiths and Julian Rohrhuber, Ellen Harlizius-Klück, Dan Hett, David Littler, Antonio Roberts, Sam Meech, and Amy Twigger-Holroyd, and a ‘looking screen’ where I’ll be able to make my activities during the residency public, as I move from a research phase to making some strange things. I’ve also brought my 2002 “forkbomb.pl” software artwork out of retirement.
A few writing projects wrapping up – the Oxford Handbook on Algorithmic Music coming out of its formal review stage, a special issue of Textile journal coming together, polishing off an article in a special issue of Contemporary Theatre review with Kate Sicchio about our Sound Choreographer <> Body Code collaboration (deadline tonight, erp).. Plus a collaborative book project on live coding emerging nicely.
Quite a few events coming up, including organising an euleroom event, an Algorave tent at EMFCamp, and looming on the horizon — a new festival on Algorithmic and Mechanical Movement (AlgoMech for short) in November. AlgoMech will be a big focus really, but I’m on the way I’m looking forward to some collaborative performances, an audio/visual noise performance with xname (interleaved as xynaaxmue) at the third iteration of Live Interfaces, and a performance at computer club in Sheffield with Alexandra Cardenas. Hoping to play again with Matthew Yee-King as Canute soon, and maybe Slub will burst out on the scene again as well.
I’m also finding more time to contribute to TidalCycles, which is starting to feel like a proper free/open source project now, with quite a few exciting developments and side-projects spinning off it.
I’ve had a great time there, but am wrapping up my research and teaching work in the University of Leeds, just a spot of supervision to do now and I’m done. All being well, I’ll be joining a new five-year project in a research institution, starting in a couple of months time, lead by Ellen Harlizius-Klück and working also with FoAM Kernow.
That’s about it I think.. It seems like a lot, but it actually feels like everything is coming together and becoming easier to think about.. Especially the AlgoMech festival which brings together just about everything I’ve been doing and interested in since.. forever, really.. and can’t wait to get stuck into a new strand of research.
Part of the reason I might have been a bit slow the past year or so – the draft table of contents (subject to change) for the Oxford Handbook on Algorithmic Music that I’ve been editing with Roger Dean. Amazing work by amazing people including many superheroes of mine. Still some work to do, but hopefully out this year!
Section 1: Grounding algorithmic music
1/ Algorithmic music: an introduction to the field (Alex McLean and Roger Dean)
2/ Algorithmic music and the philosophy of time (Julian Rohrhuber)
3/ Action and perception: embodying algorithms and the extended mind (Palle Dahlstedt)
4/ Origins of algorithmic thinking in music (Nick Collins)
5/ Algorithmic Thinking and Central Javanese Gamelan (Charles Matthews)
Perspectives on Practice A
6/ Thoughts on Composing with Algorithms (Laurie Spiegel)
7/ Mexico and India: diversifying and expanding the live coding community (Alexandra Cárdenas)
8/ Deautomatization of Breakfast Perceptions (Renate Wieser)
9/ Why do we want our computers to improvise? (George Lewis)
Section 2: What can algorithms in music do?
10/ Compositions Created with Constraint Programming (Torsten Anders)
11/ Linking sonic aesthetics with mathematical theories (Andy Milne)
12/ The Machine Learning Algorithm As Creative Musical Tool (Rebecca Fiebrink and Baptiste Caramiaux)
13/ Biologically-Inspired and Agent-Based Algorithms for Music (Alice Eldridge and Ollie Bown)
14/ Performing with Patterns of Time (Thor Magnusson, Alex McLean)
15/ Computational Creativity and Live Algorithms (Geraint Wiggins and Jamie Forth)
16/ Tensions and Techniques in Live Coding Performance (Charlie Roberts and Graham Wakefield)
Perspectives on Practice B
17/ When Algorithms Meet Machines (Sarah Angliss)
18/ Notes on Pattern Synthesis (Mark Fell)
19/ Algorithms and music (Kristin Erickson)
Section 3: Purposes of algorithms for the music maker
20/ Network music and the algorithmic ensemble (David Ogborn)
21/ Sonification != music (Carla Scaletti)
22/ Color is the Keyboard: Transcoding from Visual to Sonic (Margaret Schedel)
23/ Designing interfaces for musical algorithms (Jamie Bullock)
24/ Ecooperatic Music Game Theory (David Kanaga)
25/ Algorithmic Spatialisation (Jan C Schacher)
Perspectives on Practice C
26/ Form, chaos and the nuance of beauty (Mileece I’Anson)
27/ Beyond Me (Kaffe Matthews)
28/ Mathematical theory in music practice (Jan Beran)
29/ Thoughts on algorithmic practice (Warren Burt)
Section 4: Algorithmic Culture
30/ The audience reception of algorithmic music (Mary Simoni)
31/ The sociology of algorithmic music (Christopher Haworth)
32/ Algorithms across music and computing education (Andrew Brown)
33/ Towards a Tactical Media Archaeology of Algorithmic Music (Geoff Cox and Morten Riis)
34/ Algorithmic music for mass consumption and universal production (Yuli Levtov)
ICLC 2015 is now behind us and was awesome. It was great to have so many enthusiastic people come together, and to witness how far things have come over the past 15-year life of the live coding community. It was also great to work with a great team, Thor Magnusson (co-chair), Kia Ng (scientific chair) and Shelly Knotts (performance chair). Then due to illness Kia was very sadly unable to take part in the latter part of the organisation, but Joanne Armitage stepped up to take on a large part of the local organisation as chair of Workshops and special sessions, I don’t know how we’d have coped otherwise. Ash Sagar also helped with production of off-campus events (i.e. the Algoraves), and helped keep things smooth during the day too.. Jon Harrison did a fantastic job capturing everything on film too, we’ll be uploading the fruits of that too.
Beyond thanking all these people (and there are a great deal more volunteers and collaborators to thank) I’ve been struggling to find words to summarise the conference. Part of the problem is as chair I missed a fair amount of it, while working behind the scenes. We’ve asked the attendees to share conference reports though, so hopefully I will find out what happened this way! It felt really great to get so much of the community together though, and discover that live coding is as interesting and interdisciplinary as ever, while still very much having a playful, fun spirit at its heart. For 2016, we’ve passed the baton on to David Ogborn, who’ll be hosting it in some incredible looking venues in Hamilton, can’t wait…
Thanks so much for coming everyone! An inaugural event will always be a leap of faith for everyone concerned, and we landed it together.
Here’s another collaboration I haven’t had time to blog about, Shared Buffer. It has so far been with David Ogborn of the Cybernetic Orchestra in Hamilton, Eldad Tsabary of Concordia Laptop Orchestra in Concordia (and both a lot more besides). Our idea of a Shared Buffer, only partly realised so far, is to explore collaborative editing of the same code. Building on a history of network music, we want to see how far we can push the practicalities of co-editing the same piece of code. We expect to perform from different continents via networks, although this is primarily an issue of geographic practicality more than anything!
All the concrete R&D + tech has largely been by David so far, but now we have some nice medium term aims for working together integrating his ESPGrid timing system and developing some of my ideas around visuo-spatial language. We also plan to expand the collaboration, happily esteemed composer and live coder Alexandra Cardenas has agreed to join.
We’ve so far performed at the TransX transmission art symposium in Toronto, with our next gig at the Network Music Festival in Birmingham UK (where I’ll also be playing an algorave set with Matthew Yee-King as Canute).
Really excited to be involved with this dream event in London next month:
Sonic Pattern and the Textility of Code
11am to 6pm, 13th May 2014
Limewharf, Vyner St, London E2 9DJ
An event that brings together diverse viewpoints on weaving, knitting, live coding, dyadic mathematics, generative music and digital making, in order to see how patterned sound and threads allow us to both sense the abstract and conceptualise the tactile. We will look for a rich view of technology as a meeting point of craft, culture and live experience.
The invited speakers will explore aspects of making, process, language, material and output in the relation to their own practice and related contexts.
The discussion will be lead by Bronac Ferran, Janis Jefferies, and David Toop, and practitioners include Alessandro Altavilla, Sarah Angliss, Felicity Ford, Berit Greinke, Ellen Harlizius-Klück, Alex McLean and Becky Stewart.
There will be audio-visual interludes through the day, including a screening of Ismini Samanidou and Scanner’s film Weave Waves, commissioned for the Sound Matters exhibition in 2013 by Craft Council, and a short performance by Felicity Ford.
The event will close with a live music performance from Leafcutter John, Matthew Yee-King and Alex McLean, exploring code, pattern and sound.
Curated by Karen Gaskill, Crafts Council
A collaboration between the Craft Council, ICSRiM (School of Music, University of Leeds), the Thursday Club (Goldsmiths), V&A Digital Futures and the Live Coding Research Network.
Made possible through funding and support by the Craft Council, Sound and Music, the Arts and Humanities Research Council and the Centre for Creative Collaboration.