Live coding (sometimes referred to as 'on-the-fly programming', 'just in time programming') is a programming practice centred upon the use of improvised interactive programming. Live coding is often used to create sound and image based digital media, and is particularly prevalent in computer music, combining algorithmic composition with improvisation. Typically, the process of writing is made visible by projecting the computer screen in the audience space, with ways of visualising the code an area of active research. There are also approaches to human live coding in improvised dance. Live coding techniques are also employed outside of performance, such as in producing sound for film or audio/visual work for interactive art installations.
Live coding is also an increasingly popular technique in programming-related lectures and conference presentations, and has been described as a "best practice" for computer science lectures by Mark Guzdial.
Live coding techniques
A range of techniques have been developed and appropriated for the purposes of live coding.
Representation and manipulation of time
The pressures on time-based media and live interaction with code has led to a number of novel developments and uses in programming language design. The ChucK language introduced an approach to "strongly timed" programming in 2002, embedding precision timing into control flow, via straightforward syntax.
"Temporal recursion" was a term initially coined in relation to the Impromptu programming environment. While the general form of a temporal recursion, being any asynchronous function recursion through time, is available to any event driven system, Impromptu has placed a special emphasis on this particular design pattern, making it the centre piece of the concurrency architecture on that platform. Temporal recursion has since been implemented in the Fluxus environment , Overtone and the Extempore programming language.
Another functional approach to the representation of time is shown in the Tidal pattern DSL, which represents patterns as combinators operating over functions of time, similar to techniques in functional reactive programming. This software is currently under re-development as "smooth".
Multi-user programming has developed in the context of group music-making, through the long development of the Republic system developed and employed by members of the network band PowerBooks Unplugged. Republic is built into the SuperCollider language, and allows participants to collaboratively write live code that is distributed across the network of computers. There are similar efforts in other languages, such as the distributed tuple space used in the Impromptu language. Additionally Overtone, Impromptu and Extempore support multi-user sessions, in which any number of programmers can intervene across the network in a given runtime process.
Visualisation of code
TOPLAP (The (Temporary|Transnational|Terrestrial|Transdimensional) Organisation for the (Promotion|Proliferation|Permanence|Purity) of Live (Algorithm|Audio|Art|Artistic) Programming) is an informal organization formed in February 2004 to bring together the various communities that had formed around live coding environments. The TOPLAP manifesto asserts several requirements for a TOPLAP compliant performance, in particular that performers' screens should be projected and not hidden. TOPLAP has had a number of international meetings, including the LOSS Livecode festival at Access Space in 2007, and in 2009 received organisational funding from the PRS Foundation for its UK activities.
Academic research into live coding is ongoing at a number of institutions including the Princeton Sound Lab, the University of Cologne, the Queensland University of Technology, Griffith University, the Interdisciplinary Centre for Scientific Research in Music in the University of Leeds, and the Digital Studios at Goldsmiths, University of London. However live coding environments are generally free/open source software efforts and so are in part or wholly developed by independent practitioners.
Notable live coding environments
- Pure Data
- List of Live Coding environments on toplap.org.
- Collins, N., McLean, A., Rohrhuber, J. & Ward, A. (2003), "Live Coding in Laptop Performance", Organised Sound 8(3): 321–30. doi:10.1017/S135577180300030X
- Wang G. & Cook P. (2004) "On-the-fly Programming: Using Code as an Expressive Musical Instrument", In Proceedings of the 2004 International Conference on New Interfaces for Musical Expression (NIME) (New York: NIME, 2004).
- Collins, N. (2003) "Generative Music and Laptop Performance", Contemporary Music Review 22(4):67–79.
- McLean, A., Griffiths, D., Collins, N., and Wiggins, G. (2010). Visualisation of live code. In Electronic Visualisation and the Arts London 2010.
- "Tech Know: Programming, meet music". BBC News. 2009-08-28. Retrieved 2010-03-25.
- Rohrhuber, Julian (2008). Artificial, Natural, Historical in Transdisciplinary Digital Art. Sound, Vision and the New Screen. Springer Berlin Heidelberg. pp. 60–70.
- "Communion by Universal Everything and Field.io: interview". Retrieved 5 February 2013.
- Guzdial, Mark. "What students get wrong when building computational physics models in Python: Cabellero thesis part 2". Retrieved 5 February 2013.
- Sorensen, A & Gardner, H (2010) "Programming With Time: Cyberphysical Programming In Impromptu, In proceedings of the ACM Splash Conference 2010"
- McLean, Alex (2010). "Tidal - Pattern Language for the Live Coding of Music". Proceedings of the 7th Sound and Music Computing conference 2010. Barcelona.
- McLean, Alex. "Smooth github repository".
- Rohrhuber, J., A. de Campo, R. Wieser, J.-K. van Kampen, E. Ho, and H. Hölzl (2007). Purloined letters and distributed persons. In Music in the Global Village Conference 2007.
- Sorensen, A. (2010). A distributed memory for networked livecoding performance. In Proceedings of International Computer Music Conference 2010.
- Sorensen, A. (2005). Impromptu : an interactive programming environment for composition and performance, In proceedings of the Australasian Computer Music Conference 2005
- Ward, A., Rohrhuber, J., Olofsson, F., McLean, A., Griffiths, D., Collins, N., and Alexander, A. (2004). Live algorithm programming and a temporary organisation for its promotion. In Goriunova, O. and Shulgin, A., editors, read_me - Software Art and Cultures.
- Andrews, Robert. “Real DJs Code Live.” Wired (online), 7 March 2006.
- Brown, Andrew R. “Code Jamming.” M/C Journal 9/6 (December 2006).
- Ogborn, David. “Scalable, Collective Traditions of Electronic Sound Performance: A Progress Report.” eContact! 15.2 — TES 2012: Toronto Electroacoustic Symposium / Symposium électroacoustique de Toronto (April 2013). Montréal: CEC.
- Ramsay, Stephen. “Algorithms are Thoughts, Chainsaws are Tools.” Critical Code Studies Workshop, March 2010. A short film on live coding and the TOPLAP manifesto.
- Sorensen, Andrew and Henry Gardner. “Programming With Time: Cyber-physical programming with Impromptu.” 22 September 2010.