Code Scores in Live Coding Practice: Thor Magnusson
Code Scores in Live Coding Practice: Thor Magnusson
Code Scores in Live Coding Practice: Thor Magnusson
Thor Magnusson
Department of Music
University of Sussex
Brighton, BN1 9RH, UK
[email protected]
ABSTRACT
This paper explores live coding environments in the context of notational systems. The improvisational practice
of live coding as combining both composition and performance is introduced and selected systems are discussed. The authors Threnoscope system is described,
but this is a system that enables the performer to work
with both descriptive and prescriptive scores that can be
run and altered in an improvisational performance.
1. INTRODUCTION
The live coder sits on stage and writes software in front
of a live audience. The desktop is projected on the wall in
a gesture of sharing and audience engagement [1, 2]. In
the past decade, live coding has become a popular performance practice, supported by the diverse interpreted
and high level programming languages that suit the practice. Furthermore, the popular hacker and maker cultures
are affecting general culture such that coding is now
considered a creative activity on par with drawing or
playing an instrument. The live coding community has
played an important role here and been active in disseminating the practice by sharing code, organizing festivals
and conferences, and establishing research networks.
Code is a form of notation that works extremely well in
musical composition, especially when the aim is to write
non-linear, interactive, or context aware music [3]. Although general-purpose languages can be used for musical
live coding, many live coders have created their own
mini-languages for a particular performance style, genre,
or even a performance. The new language becomes an
instrument, a framework for thinking, with strong considerations of notational design. Here, language designers
have invented graphical interfaces like we find in Pure
Data or Max/MSP; game interfaces, as in Dave Griffiths'
Al Jazaari; functional notation, like McLean's Tidal; or
Chris Kiefers physical controllers that encode genetic
algorithms of sound synthesis [4].
Figure 1. A screen shot of Tidal. We see the score written in the quotation marks, with functions applied.
In ixi lang the user creates agents that are assigned percussive, melodic, or concrete scores. The agents can be
controlled from other locations in the code and during
that process the textual document is automatically rewritten to reflect what is happening to the agents. This makes
it possible for the coder and the audience to follow how
the code is changing itself and the resulting music. As
code can be rewritten by the system, it also offers the
4. THE THRENOSCOPE
In the recent development of the Threnoscope system, the
author has explored representational notation of live
coding. This pertains to the visualization of sound where
audible musical parameters are represented graphically.
The system is designed to explore microtonality, tunings,
and scales; and in particular how those can be represented
in visual scores aimed at projection for the audience.
The Threnoscope departs from linear, pattern-based
thinking in music and tries to engender the conditions of
musical stasis through a representation of sound in a
circular interface where space (both physical space and
Figure 5 shows the circular interface where the innermost circle is the fundamental frequency, with the harmonics repeated outwardly. The lines crossing the interface represent the audio channels or speakers (the system
can be set from 2 to 8 channels). The sound/drone can
have a length extending up to 360 degrees, but it can also
be short and move fast around the space. Figure 6 depicts
the system with the command line prompt on the right,
and a console underneath that reports on the state of the
engine, errors in code, or events being played in a running score. By clicking on a particular drone, its sonic
information appears in the console in a format that gives
the coder quick entry to manipulate the parameters.
Musical events in the Threnoscope system are created
through code instructions. Since the default envelope of
the drone is an ASR (Attack, Sustain, Release) envelope,
a note duration can range from a few milliseconds to an
infinite length. Each of the speaker lines could be seen as
a static playhead, where notes either cross it during their
movement or linger above it with continuous sound. A
ing on relevant 'code tracks' the user can call up code into
a text field and edit the code there. The drones are created
on the vertical tracks on the timeline. They have a beginning and an end, with code affecting the drones represented as square blocks on the drone track. The drone
itself and the events within it can be moved around with
the mouse or through code. The score can therefore be
manipulated in real-time, much like we are used to with
MIDI sequencers or digital audio workstations.
The first method simply plays the score without a graphical representation. This is very flexible, as multiple
scores can be played simultaneously, or the same score
started at different points in time. Scores can be stopped
at will. Whilst the scores are typically played without any
visual representation, it can be useful to observe the score
graphically. The second method creates the abovementioned graphical representation of the score shown in
Figure 7. For a live performance, this can be helpful as it
allows the performer to interact with the score during
execution. The visual representation of the score can also
assist in gaining an overview of a complex piece.
For this author, the code score has been a fruitful and
interesting feature of the system. Using scores for digital
systems aimed at improvisation becomes equivalent to
how instrumentalists incorporate patterns into their motor
memory. The use of code scores question the much broken unwritten rule that a live coding performance
should be coded from scratch. It enables the live coder
work at a higher level, to listen more attentively to the
music (which, in this authors experience, can be difficult
when writing a complex algorithm), and generally focus
more on the compositional aspects of the performance.
7. CONCLUSION
This short paper has discussed domain specific programming languages as notational systems. Live coding systems are defined as often being idiosyncratic and bespoke
to their authors thought processes. The Threnoscope and
its code score was presented as a solution to certain problems of performance and composition in live coding,
namely of delegating activities to actors such as machines
or code scores.
8. REFERENCES
[1] N. Collins, A. McLean, J. Rohrhuber, and A. Ward.
Live coding in laptop performance. Organised
Sound, vol 8. no. 3. pp. 321-330. 2003.
[2] T. Magnusson. Herding Cats: Observing Live
Coding in the Wild in Computer Music Journal,
vol. 38 no. 1. pp. 8-16. 2014.
[3] T. Magnusson. Algorithms as Scores: Coding Live
Music in Leonardo Music Journal. vol 21. no. 1.
pp. 19-23. 2011.
[4] C. Kiefer. "Interacting with text and music:
exploring tangible augmentations to the live-coding
interface" in Proceedings of the International
Conference for Life Interfaces. 2014.
[5] A. F. Blackwell, and T. R. G. Green. Notational
systems - the Cognitive Dimensions of Notations
framework in J.M. Carroll (Ed.) HCI Models,
Theories
and
Frameworks:
Toward
a
multidisciplinary science. San Francisco: Morgan
Kaufmann, pp. 103-134. 2003.