Live Coding at V2_ Test Lab, practices, ideas, and environments
Interview with Michel Van Dartel and Artem Baguinski about live coding, by Silvia Scaravaggi. Published in the Italian magazine Digicult.
Baguinski works as a software engineer at V2_Lab since 2000, working
with artists in residency and on lab's own research and development
projects. The projects he's working on range from unconventional
graphical interfaces for multimedia databases through realtime video
processing to virtual and augmented reality. Artem is an avid user and
advocate of open fource software and contributes to various open source
projects whenever he can with code, advise or bug-reports. For the last
couple of years Artem has been contributing to fluxus - a software tool
for live coding of visuals - and using it in spontaneous VJ/musician
collaborations. Among Artem's other interests are natural and computer
linguistics, philosophy and natural sciences.
Michel van Dartel works as a project manager and assistant curator at V2_, Institute for the Unstable Media, which he joined in 2005. As project manager he is involved in a variety of artistic R&D projects at V2_Lab. Besides that, as assistant curator, Michel coordinates a bi-monthly event named Test_Lab -a platform to demonstrate, test, present, and/or discuss contemporary artistic Research and Development (aRt&D)- and is involved in other V2_ public events such as the Dutch Electronic Art Festival (DEAF). Prior to his current appointments at V2_, Michel worked as a researcher at Maastricht University, where he investigated knowledge representation in robot models and from which he received a PhD in Artificial Intelligence and an MSc in Cognitive Psychology. Besides electronic art, artificial intelligence, and cognitive psychology, Michel's main interest is music. He is a performer and songwriter in The Rose Frustrates and is active as a DJ.
V2_ is internationally renowned as one of the most active places for new media art practices and research.
You recently presented the event 'Test_Lab:Live_Coding' featuring debates, presentations, performances on Live Coding. Which kind of activity does the Test_Lab support and organize?
[MvD] The core idea of Test_Lab is to create an informal setting, or platform, for artists and developers to 'test' their latest artistic Research and Development (aRt&D) work. For each edition, we invite artists working within a specific aRt&D theme to bring their prototypes to Test_Lab for a live demonstration and, preferably, for the audience to try out out and play with. In this sense, Test_Lab always works in two directions: Artists use the Test_Lab audience as a 'test panel' to receive feedback on their ideas and work before it enters the museums and festivals or before moving on to a next development stage. At the same time, the Test_Lab audience learns about the latest in artistic R&D and has buckets of fun trying things out themselves. Regarding the format of test_Lab we like to experiment a lot, and let the format depend on what we'd like to show or who we'd like to invite. In the past, we've done things like taking our audience out onto the street to play games; had concerts, Second Life performances, dj performances, and audience jam-sessions; relocated Test_Lab to the Erasmus Medical Center; and included fashion shows, theater, and various mini-workshops in the program. For each edition of Test_Lab we develop a different theme, and with those themes we try to tap into what we think are important developments and issues in current aRt&D. Moreover, the themes come forth from discussions in the V2_ Lab; questions that arise from projects that we're working on, technologies or approaches that we think are interesting, or things that we'd like to learn more about in view of an upcoming project at V2_. In past editions, we've focused on broad themes like technologies for the performance arts, technology in fashion, and the notion of play in electronic art, but also on more specific topics, such as physical audio interfaces and, most recently, Live Coding.
How is V2_Lab involved on Live Coding experience and how did you arrive at this kind of event on Live Coding?
[MvD] Test_Lab: Live_Coding is a typical example of how a Test_Lab theme evolved from V2_Lab discussions. For years, Artem has been involved in Live_Coding and has been bugging the other Lab members with info on the software paradigm and how it is revolutionary in its approach. But it was only until we recently encountered some difficulties in the development of one of our projects, a collaboration between Rnul, Carla Mulder and V2_, that we decided to turn it into a Test_lab theme. The problem that the project team encountered had to do with making an Augmented Reality environment more dynamic, so that it could be applied to improvised theater performances. Artem, logically, offered Live Coding techniques as a possible solution to the problem, and from there on we decided to present the project, and its first steps towards a Live Coding solution, to the Test_lab audience within a context of other Live Coding projects and performances. In this way we hoped to receive feedback that would be beneficial to the project's further development and, at the same time, to introduce the audience with the Live Coding software paradigm.
What did 'Test_Lab:Live_Coding' event feature?
[MvD] The evening was opened by Florian Cramer of Piet Zwart Institute who gave a very clarifying and entertaining presentation on the history of Live_Coding. Besides introducing what is understood by Live Coding, he also related it to the philosophy of early free jazz and worked his way from there, through early electronic composers, towards the groundbreaking Live Coding work of TOPLAP. After Florian's introduction, Live Coding audio performance collective Powerbooks Unplugged introduced their approach and, following, gave a beautiful unplugged performance with their Powerbooks, positioned spread-out through the audience. After PBUPs performance, all chairs were taken out to make room for a combined presentation by interaction developers Rnul, theatre maker Carla Mulder, and V2_Lab's Jan Misker and Jelle van der Ster. They demonstrated the result of a week of trying to apply Live Coding techniques to an Augmented Reality environment. First they handed out 3D glasses to the audience, so everyone could see the 3D projection of the Augmented Reality installation, and then Carla Mulder presented what they had developed so far and how Carla was planning on using it in her theatre performance. In fact, Carla's presentation had a lot of a theatre performance in itself, making it a perfect test of what had been developed during the week before. Following was a parallel session in which the audience could choose to attend either one of the mini-workshops on Live Coding programming languages SuperCollider, lead by PBUP, and Fluxus, lead by Artem Baguinski, or to play with the Augmented Reality installation. The evening was closed with drinks and a very dance-able audio performance, based on Live Coding environment MAX/MSP, by Susie Jae, aka Jean van Sloan.
How did you, Michel and Artem, cooperate to this event?
[MvD] Although I curated the program, Artem was definitely the main source of information during the event's preparation. First he gave me a personal introduction course to Fluxus and then directed me to a collection of relevant papers and websites on Live Coding. From there on, Artem focussed on preparing his contribution to Test_Lab, the Fluxus mini-workshop, and I got in contact with Florian Cramer and some TOPLAP people; Alex McLean, Dave Griffiths, Adrian Ward, and Julian Rohrhuber, to further develop the program. Although not all of them could make it to Rotterdam for the event, they were a big help in setting up the program by getting me in touch with the right people. Of course, with any decision regarding the program I consulted Artem's expertise on the topic.
Which were the emerging themes during the presentations and the debates?
[MvD] It's funny that you call them 'emerging' themes, because the evening slightly surprised me in the issues that came up during the debates. While we had set up the evening around the live improvisation aspect of Live Coding, and I had expected much discussion on things related to that (such as the discussion on whether actually showing the 'raw code' during Live Coding performances is essential), the discussion got most heated up regarding the definition of Live Coding. For instance, according to some, what was used to make the Augmented Reality experience dynamic in the demo by Rnul, Carla Mulder, and V2_Lab did not fall within the definition of Live Coding, since the calls to the visuals were performed live but the visuals were not live-generated. According to others their approach did fall within the definition of Live Coding, since there was no need for compiling or rendering to make dynamic changes in the output of the software.
[AB] Live Coding isn't always about making code and media from absolute zero: although you definitely may start from scratch, often you'd use pre-written scripts as well as resources - textures, fonts, samples etc. The crucial part is how you then manipulate them - once you've started editing the code that uses those resources and execute the new version of the code on-the-fly and on-stage, you are coding live. In this case, what was coded live was behaviour and not appearance of objects, that's probably why it wasn't so apparent.
[MvD] Furthermore, there was a lot of discussion on the differences between using GUIs and Live Coding, but maybe Artem can explain this better
[AB] I guess in my corner of the floor discussion went somewhat different way: I found myself discussing some instruments frequently used in Live Coding - ChucK, fluxus and supercollider and how various aspects of their languages and GUIs help to code (be it live or not). Neither using GUIs, nor visual programming (as in PureData or Max/MSP or StarLogo TNG ) is foreign to Live Coding, it is the attitude - the desire to make public your thought process by displaying the code behind the media, that counts. To quote TOPLAP manifesto: "Live coding is not about tools. Algorithms are thoughts. Chainsaws are tools. That's why algorithms are sometimes harder to notice than chainsaws." Some practitioners of Live Coding are constantly in search for more tangible ways to represent, create and input algorithms then traditional text-based programming languages / editors. Some examples are BetaBlocker  and Al-Jazari  by David Griffiths, and Rubik's Cube DJ  by Douglas Edric Stanley. This might not be approved by TOPLAP as "official" live coding instruments, but they do show existing interest in alternatives to plain text.
Where does live coding come from?
[AB] Live Coding consists of programming in front of the audience, while the program one writes is running. Most often the program being (re)written generates or processes sound or visuals - "rich media". So, what happens is - the performer has some sort of system that can generate or process rich media, and the way it actually does that can be specified by a program of some sort. The performer starts the system and opens a program for it, or one could start from scratch, in an editor. OK, he/she thinks, I want this or that to happen and here is how I'd program that and he or she types in the program or modifies the existing one and starts it up. Now the audience and the performer can see or hear the result of the program that has just been written. It could be that the program doesn't do exactly what was intended - due to an error or some misunderstanding; or the program does exactly that, but the performer now wants something different, maybe more complex, but still based on the original idea. So he/she goes back to the editor and modifies the program and starts it again and repeats the process in the course of the performance again and again. Now, to make it more interesting for the audience, care is usually taken to make the transitions between the old version and the new seem smoother, or even that the original program doesn't really stop, but just changes over time. Different artists use different tools and different ways to make Live Coding feel like a continuous coherent performance and not like a series of experiments. In practice one doesn't often start really from scratch - you've got some code fragments prepared, some ideas tried out, maybe some library (code that you use without it actually appearing in the editor).
[MvD] In the mini-workshops Jan-Kees van Kampen (of Powerbooks Unplugged) illustrated this very clearly by starting up a simple sine tone in SuperCollider, typing the command for sine and some parameters between brackets to define its variables, the amplitude etcetera. Then while fiddling with the parameters a bit, changing the height of the tone and such, and by adding some more commands to the line, introducing temporal manipulations on the tone and such, the tone changes into a cute repetitive pattern. He explains that this is the type of thing that he prepares for a performance, then during the performance he doesn't write every sound from scratch, but prepares some lines of code like he did just now, and simply pastes this into the running editor. The pasting of these pre-prepared code fragments and the fiddling with the parameters in the fragments is used to improvise with the other Live Coders or whoever is 'jammed' with.
And how is it changing the programmer role in the creative approach?
[AB] In the context of performance I'm not sure it does - there are artists who can code and practice performing arts, both activities are creative endeavours and eventually some of such artists find themselves combining the two - by creating their own instruments or coding during the performance or both. Rather then changing their role, Live Coding allows them to demystify it - look, I am programming now and here is how I do it and here is what my code looks like and here is what it does - this all at the same time as a coherent and completely open performance. However, when we at V2_Lab, use Live Coding practices in an augmented reality art production process, I think the character of our, engineers' involvement changes - it becomes much more direct, immediate - due to the much faster feedback that we and the artists have. Production of complex electronic installations is always an iterative process of trial-error-reevaluation, and the ability to try various ideas out on-the-fly, as they arise in a brainstorming / improvisation session, transforms the engineer into a sort of organic interface to the technology or an augmented actor - depending on the perspective taken.
How would you describe the contemporary Live Coding art scene?
[AB] On the theoretical side: self-criticising, self-defining, self-searching - there is a lot of reflection going on: what constitutes Live Coding, is it an autonomous form of art, or is it a stylistic addition to more traditional audio visual performance? What is the importance of making the code visible and does it matter which form the code takes on the screen? What does it mean to the artist and the audience? On the practical side: experimental and daring. The theoretical discussion arise from praxis and re-evaluation of own experience and motivation but doesn't constrain what people actually do. You can say the theory of Live Coding, if there is such thing, is descriptive rather than prescriptive - it analyses what's going on and attempts to reinvent itself accordingly, rather then give guidelines on how Live Coding should be exercised.
How can you define the kind of 'interaction/interactivity' Live Coding is able to realize?
[AB] Ideally, what we aim at, it is the interaction of the physical environment surrounding the artist and the software system, on a very intimate level of code constituting this very system. There are multiple feedback loops here because the input/output of the software system connects it to the environment, just like artists own sensory system does.
What does Live Coding mean, on your opinion, in terms of: improvisation, live performance and interface
[AB] Many artists or programmers make art with computer code - look at runme.org or at the obfuscated C code contest - I consider some of the entries there sort of code-poetry. Code based art is very holistic - often its beauty is only apparent when seen against a background of a certain computer subculture or language. Obfuscated code might use unconventional formatting to represent the structure or some properties of the algorithm the very same code implements, just like the Tale poem in Carol's Alice in Wonderland. And just like you've got to understand English to see the link between its content and its mouse-tail-like shape, you've got to understand code and often be familiar with programmers' culture, folklore and mythos, to see all the "inside jokes", references and analogies. By creating the code on the fly and modifying it as it runs, live coder gives the audience a chance to get a feeling as to what it means, even if the language is unfamiliar or text is barely readable. By following the editing actions, fixing mistakes, hesitation and scrolling through the code, and hearing / seeing the result of the code at the same time, the audience comes somewhat closer to the holistic appreciation of what is going on - since they not only experience the media output, or only see the code behind it - but experience both simultaneously as they come to life and evolve. Improvisation is the goal of live coding - that's why you do it live, that's why you create and improve the instruments to get as much out of the way while remaining useful and powerful. And in fact, the interface has dual use: for performer the editor is the interface to the instrument, it can constrain or empower. On the other hand, for the audience the editor is yet another interface to the artist's mind, compensating for the physical body often being hidden behind the laptop.
What happens between the 'live coder' and the DJs, or the dancer, or his audience in real time?
[AB] Technically the simplest but otherwise the most important connection with other performers is the one that goes through ones brain - just like in any collaborative improvisation you watch / listen to your co-performers and let them influence your ideas as to where to go next. Often you'd know upfront what you can expect from the collaborators, it helps to prepare your own material that would work well with that. But again - you can start blank and work toward coherence on-the-fly. But since we've got computers, we can let them do some boring tasks, freeing ourselves for more abstract and high level "linking". Thus when working with a musician you could make a computer analyse the microphone input and turn the sound into input for the code. When collaborating with other computer performers you could send each other signals or even fragments of code over the local wired or wireless network.
[MvD] I think that in terms of interaction between a Live Coder and other kinds of artists and/or the audience, the strength of Live Coding is not so much in that it produces completely different audio or visuals than could be achieved with standard software and hardware... Live Coding's real strength is in that it provides absolute freedom in the manipulations that can be carried out there and then at that moment, and therefore has a great impact on the possibilities for live improvisation, and thus results in a completely different improvisation (interactive) process than would be possible using standard software and hardware. In other words, it basically enlarges the creative space by mineralising the parameters defining that space. When you use a sequencer to manipulate a tone you are restricted to the functions of the faders and knobs and predefined procedures of the sequencer, with Live Coding there are basically no such restriction, and any manipulation that you'd like to do can be coded at that moment, there and then, providing a much larger freedom to improvise. As a musician I find this very appealing, although it seems to take a while to develop the skills required, since, so far, i'm still only fiddling with the parameters of simple sine tones... On the other hand, people spend lifetimes mastering the piano, so why not spend as much time mastering your laptop?
: (BetaBlocker): http://www.youtube.com/watch?v=-G8qDTYuhOM
: (Al-Jazari): http://www.youtube.com/watch?v=Uve4qStSJq4
: (Rubik's Cube DJ): http://www.youtube.com/watch?v=4_Ta6TIJTQQ
This text was used for an article about the Live Coding Test-lab, published in the Italian magazine Digicult: http://www.digicult.it/digimag/article.asp?id=1106.