Interacting with Generative Music Through Live Coding
Total Page:16
File Type:pdf, Size:1020Kb
Interacting with Generative Music through Live Coding Author Brown, Andrew R, Sorensen, Andrew Published 2009 Journal Title Contemporary Music Review DOI https://doi.org/10.1080/07494460802663991 Copyright Statement © 2009 Taylor & Francis. This is an electronic version of an article published in Contemporary Music Review, Vol. 28(1), 2009, pp. 17-29. Contemporary Music Review is available online at: http://www.informaworld.com with the open URL of your article. Downloaded from http://hdl.handle.net/10072/39923 Griffith Research Online https://research-repository.griffith.edu.au Brown, A. R. and Sorensen, A. (2009). "Interacting with Generative Music through Live Coding." Interacting with generative music through live coding Andrew R. Brown and Andrew Sorensen Queensland University of Technology & Australasian CRC for Interaction Design Keywords: live coding, performance, algorithm, interaction Abstract All music performances are generative to the extent that the actions of performers produce musical sounds, but in this article we focus on performative interaction with generative music in a more compositional sense. In particular we discuss how live coding of music involve the building and management of generative processes. We suggest that the human interaction with generative processes that occurs in live coding provides a unique perspective on the generative music landscape, especially significant is the way in which generative algorithms are represented in code to best afford interaction and modification during performance. We also discuss the features of generative processes that make them more or less suitable for live coding performances. We situate live coding practice within historical and theoretical contexts and ground the discussion with regular reference to our experiences performing in the live coding duo aa-cell. Introduction The practice of live coding involves writing and modifying computer programs that generate music in real-time. Often this music making activity occurs in a live performance situation with the code source projected for the audience. While it is possible to trigger sound events directly while live coding it is much more efficient to create generative processes that autonomously make music, freeing the performer to build or modify code for the next stage of the performance. Therefore, being able to efficiently describe generative processes as software is a primary concern for the live coder. In particular we have found that the following criteria apply to generative processes for use in live coding. Generative processes should be: - succinct and quick to type - widely applicable to a variety of musical circumstances - computationally efficient allowing real-time evaluation - responsive and adaptive by minimising future commitments - modifiable through the exposure of appropriate parameters For the live coder, software code is a medium of expression through which creative ideas are articulated and in this article we will focus on how generative processes facilitate that expression. Computer programming code is the music notation of live coding performances (McLean 2004). The code represents the musician’s ideas and describes the musical outcome to the computer and to those with the knowledge to read it. Notated in code, the music is available for reflection, reuse and modification. It can be saved, replayed, shared with others or analysed. This affords reflection in action that has been shown to be highly valuable in creative tasks in many domains (Schön 1987) and generative processes facilitate this in ways not previously possible in live performance. In performance, the code is often modified substantially and therefore that which remains at the Brown, A. R. and Sorensen, A. (2009). "Interacting with Generative Music through Live Coding." end is often insufficient to represent the whole performance. For a full transcription of a live coding performance all of the changes would need to be logged. There are many other aspects of live coding performance beyond those discussed here and for further details of the history and scope of live coding practices the reader is directed to other literature (Collins et al. 2003, Brown 2006). The authors have several years of experience in live coding, primarily performing as the duo aa-cell in numerous concerts. Originally our live coding practice was purely musical but in recent times our performances have included live coding of visual material as well. During performances the visual material and code are usually projected for the audience to view. Figure 1 shows aa-cell performing at a concert in Brisbane, Australia in 2008, and figure 2 shows a snap shot of the projected image during the performance. Figure 1. The live coding duo aa-cell in performance. Figure 2. The screen projected for audiences to view during an aa-cell concert. Direct and meta creation How is live coding a musical activity? Banging a drum creates sound, and potentially music, through a direct connection between a human action or gesture and a sound source. Only in a trivial sense can this be considered generative, and it is possible in live coding performances to emulate this direct creation by manually triggering the evaluation of one-shot code fragments. However, if live coding were limited to this direct evaluation it would be severely crippled as an expressive practice. In this article we are more concerned with generative music in an expansive sense, where substantial musical outputs are produced by an algorithm. Typically, there is considerable leverage in this process where the effort of describing the algorithm is minimal compared to the effort that would have been required (if it were even possible) to describe directly the musical material that is produced. Generative music practices have, therefore, a link with conceptual visual art and formalist music composition movements from the 20th century. These practices all share an emphasis on process as a creative driver and an indirect mediation between artist and artistic form, a process described as metacreation by Mitchell Whitelaw (2004). In live coding concerts, performers often set up computational processes that generate an ongoing stream of musical output allowing the performer to turn their attention to writing or modifying processes. The computer plays a mediating role by executing the process and producing the sound. It is the ability to harness generative material that allows live coding performers to participate in a new kind of performance where they exercise indirect, or meta, control over the creation of their music. Stylistically, much of the music produced by live coding has aesthetic links to other electronic music genres including musique concrète, electronic dance music, glitch music, and noise art; a grouping that is not overly coherent from the point of Brown, A. R. and Sorensen, A. (2009). "Interacting with Generative Music through Live Coding." view of aesthetics, but shares a concern for processes involving electronic sound systems. While performing with generative processes is relatively novel within this community, there seems to be an openness to it not found in many other music communities. This openness is likely a result of both the valuing of experimentation or novelty as well as the historical reliance on recorded sound for composition and performance, including DJing. Music making is understood as a construction and moulding of sound materials, rather than as a transcription of the musician’s imagination. There is also an active interest in the role of technologies as drivers of innovation. Within this receptive environment it is not surprising that live coding activities have begun to flourish and spread. Tools and technologies Marcus Pearce and his colleagues (2002) articulate a sentiment about the role of coding in music making that resonates with us and many other computer musicians; that the development of software is a central component of computer music making. If a computer program is written by the composer, the development of the program is an integral part of the compositional process (since ultimately it is driven by the same motivations). Since the program is designed solely for use by its developer, there are no methodological constraints placed on its construction. Furthermore, there is no need to define any rigorous criteria for success nor to use such criteria in evaluating the program and the compositions. If the composer intends the music for public consumption, then they may only be evaluated in the same way that composers and compositions are usually appraised: through audience reactions at performances, record sales, critical reviews and so on. (Pearce et al. 2002 p.123.) In live coding practice this view of software development as music making finds its logical, if perhaps crazy to some, conclusion: writing software becomes part of the performance. Code becomes the musical score; a score that is written, modified and executed as part of the performance. In this way live coding practices combine aspects of composition, arranging, improvisation and performance. The code acts as an intermediary between imagination and sound and is elaborated and transformed in performance within a tight feedback loop. This has similarities to the real-time interaction between musicians and prepared algorithmic processes, described as ‘hyperimprovisation’ by Roger Dean (2003). The use of generative processes in these practices is clearly significant for both the efficient production