Live coding

Not to be confused with Interactive programming.
Example live coding performance
A Study in Keith is a musical live coding performance in Impromptu by Andrew Sorensen.

Live coding[1] (sometimes referred to as 'on-the-fly programming',[2] 'just in time programming' and 'conversational programming') is a performing arts form and a creativity technique centred upon the writing of source code and the use of interactive programming in an improvised way. Live coding is often used to create sound and image based digital media, as well as light systems, improvised dance and poetry,[3][4] though is particularly prevalent in computer music usually as improvisation, although it could be combined with algorithmic composition.[5] Typically, the process of writing source code is made visible by projecting the computer screen in the audience space, with ways of visualising the code an area of active research.[6] Live coding techniques are also employed outside of performance, such as in producing sound for film[7] or audiovisual work for interactive art installations.[8] Also, the interconnection makes possible to realize this practice networked in group.

The figure of live coder is who performs the act of live coding, usually "artists who want to learn to code, and coders who want to express themselves"[9] or in terms of Wang & Cook the "programmer/performer/composer".[10]

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.[11]

Live coding techniques

A range of techniques have been developed and appropriated for the purposes of live coding.

Representation and manipulation of time

The specific afforances of time-based media and live interaction with code has led to a number of novel developments and uses in programming language design. Through mutual embedding of imperative and declarative subsystems, the programming language SuperCollider[12] permitted to build a library that allows incomplete and provisional specifications which can be rewritten at runtime.[13]

The ChucK language introduced an approach to "strongly timed" programming in 2002, embedding precision timing into control flow through a concise syntax.

"Temporal recursion" was a term initially coined in relation to the Impromptu programming environment. Technical elements within a programming environment continue to locate compressors and recursion solutions, but timing had been a major issue. 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,[14] making it the centre piece of the concurrency architecture on that platform. Temporal recursion had repeatedly been used in SuperCollider and 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,[15] which represents patterns as combinators operating over functions of time, similar to techniques in functional reactive programming.[16]

Multi-user programming and shared memory

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.[17] 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.[18] 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.[19] The practice of writing code in group can be done in the same room through a local network or from remote places accessing a common server. Terms like laptop band, laptop orchestra or collaborative live coding are used to frame a networked live coding practice both in a local or remote way.

Organizations

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.[20] 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.

Research

A number of research projects and research groups have been created to explore live coding, often taking interdisciplinary approaches bridging the humanities and sciences. First efforts to both develop live coding systems and embed the emerging field in the broader theoretical context happened in the research project Artistic Interactivity in Hybrid Networks from 2005 to 2008, funded by the German Research Foundation.

Further, the Live Coding Research Network was funded by the UK Arts and Humanities Research Council for two years from February 2014, supporting a range of activities including symposia, workshops and an international conference called ICLC celebrated in Leeds, UK in 2015, and in Hamilton, Canada in 2016.

Since 2015 a group of experimentation on free software called LiveCoding@MediaLab,[21] organizes regular meetings in order to experiment with different live coding platforms and languages. In Mexico, a workshop of live coding take place in Instituto Politécnico Nacional at ESFM.[22]

Pioneers

Notable live coders

Notable live coding environments

See also

Notes

  1. Collins, N., McLean, A., Rohrhuber, J. & Ward, A. (2003), "Live Coding in Laptop Performance", Organised Sound 8(3): 321–30. doi:10.1017/S135577180300030X
  2. 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).
  3. Magnusson, T. (2013). The Threnoscope. A Musical Work for Live Coding Performance. In Live 2013. First International Workshop on Live Programming.
  4. "Tech Know: Programming, meet music". BBC News. 2009-08-28. Retrieved 2010-03-25.
  5. Collins, N. (2003) "Generative Music and Laptop Performance", Contemporary Music Review 22(4):67–79.
  6. McLean, A., Griffiths, D., Collins, N., and Wiggins, G. (2010). Visualisation of live code. In Electronic Visualisation and the Arts London 2010.
  7. Rohrhuber, Julian (2008). Artificial, Natural, Historical in Transdisciplinary Digital Art. Sound, Vision and the New Screen (PDF). Springer Berlin Heidelberg. pp. 60–70.
  8. "Communion by Universal Everything and Field.io: interview". Retrieved 5 February 2013.
  9. Bell, Sarah. "Live coding brings programming to life - an interview with Alex McLean". Retrieved 2 March 2016.
  10. 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).
  11. Guzdial, Mark. "What students get wrong when building computational physics models in Python: Cabellero thesis part 2". Retrieved 5 February 2013.
  12. James McCartney (1996), SuperCollider: a new real time synthesis language, ICMC Proceedings, 1996.
  13. Julian Rohrhuber, Alberto de Campo, and Renate Wieser (2005), Algorithms today - Notes on Language Design for Just In Time Programming, Proceedings of International Computer Music Conference (Barcelona), ICMC, 2005, pp. 455–458.
  14. Sorensen, A & Gardner, H (2010) "Programming With Time: Cyberphysical Programming In Impromptu, In proceedings of the ACM Splash Conference 2010"
  15. McLean, Alex (2014). "Making programming languages to dance to: Live Coding with Tidal". In proceedings of the 2nd ACM SIGPLAN International Workshop on Functional Art, Music, Modelling and Design. Gothenburg. External link in |chapter= (help);
  16. McLean, Alex. "Tidal homepage".
  17. 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.
  18. Sorensen, A. (2010). A distributed memory for networked livecoding performance. In Proceedings of International Computer Music Conference 2010.
  19. Sorensen, A. (2005). Impromptu : an interactive programming environment for composition and performance, In proceedings of the Australasian Computer Music Conference 2005
  20. 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.
  21. "#LiveCoding@MediaLab. Grupo de experimentación con Software Libre para la programación de sonido digital.". Retrieved 25 February 2016.
  22. "Live Coding at IPN Mexico.". Retrieved 30 May 2016.

Further reading

External links

This article is issued from Wikipedia - version of the 11/11/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.