Live coding, [1] sometimes referred to as on-the-fly programming, [2] just in time programming and conversational programming, makes programming an integral part of the running program. [3]
It is most prominent as 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, [4] [5] though is particularly prevalent in computer music usually as improvisation, although it could be combined with algorithmic composition. [6] 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. [7] Live coding techniques are also employed outside of performance, such as in producing sound for film [8] or audiovisual work for interactive art installations. [9] Also, the interconnection between computers 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" [10] or in terms of Wang & Cook the "programmer/performer/composer". [2]
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]
A range of techniques have been developed and appropriated for the purposes of live coding.
The specific affordances 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.
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 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, collaborative live coding or collective live coding are used to frame a networked live coding practice both in a local or remote way.
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. [21]
On-the-fly promotes live coding practice since 2020. This is a project co-funded by the Creative European program and run in Hangar, ZKM, Ljudmila and Creative Code Utrecht. [22]
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. [23]
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 annual international conference called International Conference on Live Coding (ICLC). [24]
Computer music is the application of computing technology in music composition, to help human composers create new music or to have computers independently create music, such as with algorithmic composition programs. It includes the theory and application of new and existing computer software technologies and basic aspects of music, such as sound synthesis, digital signal processing, sound design, sonic diffusion, acoustics, electrical engineering, and psychoacoustics. The field of computer music can trace its roots back to the origins of electronic music, and the first experiments and innovations with electronic instruments at the turn of the 20th century.
SuperCollider is an environment and programming language originally released in 1996 by James McCartney for real-time audio synthesis and algorithmic composition.
ChucK is a concurrent, strongly timed audio programming language for real-time synthesis, composition, and performance, which runs on Linux, Mac OS X, Microsoft Windows, and iOS. It is designed to favor readability and flexibility for the programmer over other considerations such as raw performance. It natively supports deterministic concurrency and multiple, simultaneous, dynamic control rates. Another key feature is the ability to live code; adding, removing, and modifying code on the fly, while the program is running, without stopping or restarting. It has a highly precise timing/concurrency model, allowing for arbitrarily fine granularity. It offers composers and researchers a powerful and flexible programming tool for building and experimenting with complex audio synthesis programs, and real-time interactive control.
Interactive programming is the procedure of writing parts of a program while it is already active. This focuses on the program text as the main interface for a running process, rather than an interactive application, where the program is designed in development cycles and used thereafter. Consequently, here, the activity of writing a program becomes part of the program itself.
New Interfaces for Musical Expression, also known as NIME, is an international conference dedicated to scientific research on the development of new technologies and their role in musical expression and artistic performance.
Software visualization or software visualisation refers to the visualization of information of and related to software systems—either the architecture of its source code or metrics of their runtime behavior—and their development process by means of static, interactive or animated 2-D or 3-D visual representations of their structure, execution, behavior, and evolution.
ACM Multimedia (ACM-MM) is the Association for Computing Machinery (ACM)'s annual conference on multimedia, sponsored by the SIGMM special interest group on multimedia in the ACM. SIGMM specializes in the field of multimedia computing, from underlying technologies to applications, theory to practice, and servers to networks to devices.
Live electronic music is a form of music that can include traditional electronic sound-generating devices, modified electric musical instruments, hacked sound generating technologies, and computers. Initially the practice developed in reaction to sound-based composition for fixed media such as musique concrète, electronic music and early computer music. Musical improvisation often plays a large role in the performance of this music. The timbres of various sounds may be transformed extensively using devices such as amplifiers, filters, ring modulators and other forms of circuitry. Real-time generation and manipulation of audio using live coding is now commonplace.
Impromptu is a Mac OS X programming environment for live coding. Impromptu is built around the Scheme language, which is a member of the Lisp family of languages. The source code of its core has been opened as the Extempore project.
Artificial intelligence and music (AIM) is a common subject in the International Computer Music Conference, the Computing Society Conference and the International Joint Conference on Artificial Intelligence. The first International Computer Music Conference (ICMC) was held in 1974 at Michigan State University. Current research includes the application of AI in music composition, performance, theory and digital sound processing.
In computer science, empirical algorithmics is the practice of using empirical methods to study the behavior of algorithms. The practice combines algorithm development and experimentation: algorithms are not just designed, but also implemented and tested in a variety of situations. In this process, an initial design of an algorithm is analyzed so that the algorithm may be developed in a stepwise manner.
Alex McLean is a British musician and researcher. He is notable for his key role in developing live coding as a musical practice, including for creating TidalCycles, a live-coding environment that allows programmer musicians to code simply and quickly, and for coining the term Algorave with Nick Collins.
Sergi Jordà is a Catalan innovator, installation artist, digital musician and Associate Professor at the Music Technology Group, Universitat Pompeu Fabra in Barcelona. He is best known for directing the team that invented the Reactable. He is also a trained Physicist.
Fluxus is a live coding environment for 3D graphics, music and games. It uses the programming language Racket to work with a games engine with built-in 3D graphics, physics simulation and sound synthesis. All programming is done on-the-fly, where the code editor appears on top of the graphics that the code is generating. It is an important reference for research and practice in exploratory programming, pedagogy, live performance and games programming.
Benoît and the Mandelbrots, named after French American mathematician Benoît Mandelbrot, is a Computer Music band formed in 2009 in Karlsruhe, Germany. They are known for their live coded and Algorave performances, the Digital Arts practice of improvising with programming languages that gradually dissolves the distinction between composer and performer.
Sonic Pi is a live coding environment based on Ruby, originally designed to support both computing and music lessons in schools, developed by Sam Aaron in the University of Cambridge Computer Laboratory in collaboration with Raspberry Pi Foundation.
TidalCycles is a live coding environment which is designed for musical improvisation and composition. In particular, it is a domain-specific language embedded in Haskell, and is focused on the generation and manipulation of audiovisual patterns. It was originally designed for heavily percussive and polyrhythmic grid-based music, but it now uses a flexible and functional reactive representation for patterns, by using rational time. Therefore, Tidal may be applied to a wide range of musical styles, although its cyclic approach to time means that it affords use in repetitive styles such as Algorave.
Ixi lang is a programming language for live coding musical expression. It is taught at diverse levels of musical education and used in Algorave performances. Like many other live coding languages, such TidalCycles, ixi lang is a domain-specific language that embraces simplicity and constraints in design.
{{cite book}}
: CS1 maint: location missing publisher (link)