10

Click here to load reader

Herding Cats: Observing Live Coding in the Wild

Embed Size (px)

Citation preview

Page 1: Herding Cats: Observing Live Coding in the Wild

Herding cats: observing live coding in the wild

Article (Published Version)

http://sro.sussex.ac.uk

Magnusson, Thor (2014) Herding cats: observing live coding in the wild. Computer Music Journal, 38 (1). pp. 8-16. ISSN 0148-9267

This version is available from Sussex Research Online: http://sro.sussex.ac.uk/47039/

This document is made available in accordance with publisher policies and may differ from the published version or from the version of record. If you wish to cite this item you are advised to consult the publisher’s version. Please see the URL above for details on accessing the published version.

Copyright and reuse: Sussex Research Online is a digital repository of the research output of the University.

Copyright and all moral rights to the version of the paper presented here belong to the individual author(s) and/or other copyright owners. To the extent reasonable and practicable, the material made available in SRO has been checked for eligibility before being made available.

Copies of full text items generally can be reproduced, displayed or performed and given to third parties in any format or medium for personal research or study, educational, or not-for-profit purposes without prior permission or charge, provided that the authors, title and full bibliographic details are credited, a hyperlink and/or URL is given for the original metadata page and the content is not changed in any way.

Page 2: Herding Cats: Observing Live Coding in the Wild

Herding Cats: ObservingLive Coding in the Wild

Thor MagnussonDepartment of MusicUniversity of SussexFalmer, Brighton, BN1 9QJ, [email protected]

Abstract: After an eventful decade of live-coding activities, this article seeks to explore the practice with the aim ofsituating it in the history of contemporary arts and music. The article introduces several key points of investigationin live-coding research and discusses some examples of how live-coding practitioners engage with these points intheir system design and performances. In light of the extremely diverse manifestations of live-coding activities, theproblem of defining the practice is discussed, and the question is raised whether live coding is actually necessary as anindependent category.

This journal issue celebrates the tenth anniversaryof organized live coding (see www.toplap.org).Numerous live-coding systems, festivals, conferencetracks, journal issues, research projects, and clubnights have appeared and introduced the practiceto diverse fields of art, music, and science (inparticular, computer science). As an arts practice,it has its roots in musical performance, but livecoding has become common in visual arts, lightsystems, robotics, dance, poetry, and other artforms that operate with algorithmic instructions.In the context of this journal issue, it seemsappropriate to stress the origin of live-coding practicein the arts, without failing to mention that therelated term of “live programming” has been usedfor a considerably longer time in certain researchtracks of computer science, particularly in thefield of programming-language design. Researcherslike Ungar and Smith explored live-programmingpractice as early as 1969 (Ungar and Smith 2013) and,in an article on the visual programming languageVIVA, Tanimoto (1990) defined “liveness” as anattribute of programming. Live programming is thusperceived to be a useful method in activities rangingfrom re-programming factory production lines (Swiftet al. 2013) to making music in nightclubs. Thisarticle will describe live coding as a unique practicein a strong relationship with live programming butstress its origins in live performance.

Journal articles and conference papers on livecoding, typically written by the protagonists them-selves, have introduced the practice (Collins et al.2003; Ward et al. 2004; McLean 2008), explored it ina computer science context (Blackwell and Collins2005; Rohrhuber, de Campo, and Wieser 2005;

Computer Music Journal, 38:1, pp. 8–16, Spring 2014doi:10.1162/COMJ a 00216c© 2014 Massachusetts Institute of Technology.

McLean and Wiggins 2010; Sorensen and Gardner2010), described particular systems and solutions(Sorensen 2005; Wakefield, Smith, and Roberts 2010;Freeman and Van Troyer 2011; Magnusson 2011a;McLean and Wiggins 2011; Roberts, Wakefield, andWright 2013), explored live coding as musical scores(Blackwell and Collins 2005; Magnusson 2011b),and contextualized it as an embodied musical prac-tice that requires practicing on a par with acousticinstruments (Sorensen and Brown 2007; Aaronet al. 2011; Collins 2011). After a decade of fruitfulexperiments, it is perhaps time to reflect on howlive coding has operated within the performing arts.Discussing a selection of highly diverse live-codingsystems, this article seeks to establish what theymay have in common, resulting in a discussion ofthe problems of defining live coding, and, in theprocess, to introduce weak and strong criteria forthe practice.

On Naturalizing Live Coding

Live coding does not have a particular unifiedaesthetic in terms of musical or visual style. Nev-ertheless, the practice has at times been perceivedas a movement, akin to movements found in 20thcentury modernism. We find a strong emphasis onformal experiments, reductionism, and functional-ism. There are manifestos, key texts, and customcoding platforms. A visit to a nightclub hosting alive-coding event might even conjure up images ofexclusive avant-garde practices, where live codersperform for other coders already initiated into thewicked “sourcery” of programming computers. Thisart of writing algorithms for binary machines canbe so alien and obscure to the audience that thesituation almost recalls the difficulty people hadunderstanding postwar European avant-garde music.

8 Computer Music Journal

Page 3: Herding Cats: Observing Live Coding in the Wild

This image is as familiar as it is misleading. Itis true that the birth of live coding draws frommodernist practices (with its manifestos, rules, andimperatives) but this is inevitable, as formalismis—and formal experiments are—a necessary aspectin the exploration of a new medium; suffice itto mention video art experiments by Nam JunePaik and the Vasulkas in the 1960s, or net.artwork by artists such as Alexei Shulgin and Jodi inthe late 1990s. Such a formalism involves a deepexploration of the properties of the medium at hand,and we find an analogy in the way live coders havedesigned and performed with their systems. In livecoding, however, the investigation tends to be aformalism of thought and the language or system ofencoding it, as opposed to artistic content, whichmay appear formalist or not. Perhaps the situationis better described by the modernist critic ClementGreenberg, who defines it as one in which the twoaspects become inseparable:

Content is to be dissolved so completely intoform that the work of art or literature cannotbe reduced in whole or in part to anything notitself [. . .] In turning his attention away fromsubject matter of common experience, the poetor artist turns it in upon the medium of his owncraft (Greenberg 1961, p. 6).

The performance-art elements of live codingdifferentiate it from the pure self-referentialityof formalist modernism, however—although therecould, of course, exist a purely conceptual live codingwithout any other output than the code itself. I amnot aware of such an approach in the area of livecoding, although it exists in off-line coding, perhapsbest exemplified by Pall Thayer’s Microcodes (Myers2009). The live-coding activities that resemblethe aforementioned modernist tendencies canbe explained with a common trajectory that takesplace when a new artistic format develops. Theinitial focus is on the formal part of the practice, onthe medium or the tool, and it is only later, when thetechnology undergoes a process of “naturalization,”that the focus shifts elsewhere:

The more naturalized the object becomes,the more unquestioning the relationship

of the community to it; the more invisiblethe contingent and historical circumstances ofits birth, the more it sinks into the community’sroutinely forgotten memory (Bowker and Star2000, p. 299).

Live-coding practice has consciously put effortinto expediting this naturalization process. It delib-erately engages with the audience through variouschannels, such as sitting among them while per-forming (as with the band PowerBooks UnPlugged),allowing people to contribute to the coding of danceperformers (e.g., Kate Sicchio’s work), or submittingcode through Twitter (as in my own work withthe live-coding environment “ixi lang”). One ofthe fundamental tenets of the TOPLAP manifesto(available online at toplap.org/wiki/ManifestoDraft)is “Show us your screens.” It is an explicit actof audience inclusion, responding to the commonlaptop-performance format where relatively simpleinterfaces are used but not shown, even thoughmany are commonly known to the audience. Thisis taking the etymology of the word “program”seriously, as the Greek root, prographein, signifiesthe activity of public writing (Hoad 1996). Livecoders have also been prolific in explaining theirpractice and systems of writing code, with journalarticles, online discussions, and similar activities(this article [and this paragraph] being an example ofsuch recursion).

Live Coding in the Wild

Live coding is a heterogeneous practice and thussomewhat hard to define. It involves a multiplicityof approaches that have one thing in common:Algorithmic instructions are written in real time.Collins (2011, p. 209) states that “the more profoundthe live coding, the more a performer must confrontthe running algorithm, and the more significant theintervention in the works, the deeper the codingact.” For Collins, most performances fail to “liveup to this promise.” The argument, also expressedby McLean (2008), is that a true “liveness” requiresthat the performer is not simply manipulating pre-written code in real time, but is actually writing and

Magnusson 9

Page 4: Herding Cats: Observing Live Coding in the Wild

modifying algorithms during the execution of theprogram. This is arguably a prerequisite of live cod-ing, as simply running code and changing parametersin prewritten code is more comparable to operatingbuttons, sliders, and knobs on a screen interface ora MIDI controller. We could talk about weak andstrong definitions of live coding, with the weakone allowing trivial code manipulations andstrong one adhering to Collins’s and McLean’sposition. The strong definition would result in theconclusion that some so-called live-coding perfor-mances do not really include any live coding at all.

In the absence of any clear definitions of livecoding, apart from the requirement that algorithmsare written in real time, it may be appropriate totake a sample of some prolific live coders and theirsystems, and ask whether we can detect an aestheticstyle, or any specific performance contexts or tech-nological foundations. The examples here are chosenwith the aim of demonstrating the variety of thepractice, leaving out other significant contributorsto live coding whose performance setup might besimilar. The aim is to study how live coding oper-ates in a live context, and to outline the problemspractitioners are trying to address in their work.

PowerBooks UnPlugged is an ensemble of sixperformers who make use of wireless networksto communicate and share code in a networkedlive-coding performance. As the name indicates, thelaptops are unplugged, and the only sound outputis from the built-in laptop speakers. Members ofthe collective sit among the audience, blurring thetraditional performer–audience spatial divide, whilesending code snippets to each other for collaborativecoding (Rohrhuber et al. 2007). The ensembledescribes itself as “the first acoustic computermusic folk band” (for instance, on the band Website at pbup.goto10.org) with a reference to the de-mystification of the laptop as a musical instrument.

One of the early live-coding collectives is agroup called Slub, consisting of three memberswho perform with different live-coding systemsof their own creation and who collaborate over anetwork using a shared musical time clock. Theirsystems are well known for their experimental andinnovative aspects, focusing on language designand human–computer interaction. Slub regularly

Figure 1. Kate Sicchiodancing with code.(Photograph by Bill Best,Sheffield, UK, CreativeCommons BY-NC-ND 3.0.)

uses multiple projectors to overlay the performers’desktop images, an act of obfuscation where therendered image on the wall becomes a visualmontage of an aesthetic dimension. The collectiveoften collaborates with other artists, recently withperformance artist Hester Reeves.

Nick Collins has explored live coding in variousforms and projects. Together with Frederik Olofsson,he once set aside a month to practice live codingon a daily basis, exploring the topics of practiceand coding virtuosity. This was documented ina 2007 paper (Nilson 2007). Collins, sometimesencrypted as “Click Nilson” (although rumor hasit that Nilson is retired), has written work forthe live coding of human improvising musicians(Collins 2011), composed live coding scores (Collins2012), and engaged in duels with other live-codingheavyweights such as Alex McLean and Ge Wang(Nilson 2007), as well as with the master of liveelectronics and hardware hacking, Nic Collins (notto be confused with Nick Collins).

Kate Sicchio (see Figure 1) is a choreographer anddancer who uses live coding in the context of dance.In her performances, Sicchio works with algorithmicchoreographic instructions, a kinetographic encod-ing of human movements, which can be explored ina real-time performance. Sicchio finds that, unlikeother choreographic languages, textual program-ming can provide an expressive syntax for describingalgorithms that afford generative interpretations forhuman interpreters (www.sicchio.com).

10 Computer Music Journal

Page 5: Herding Cats: Observing Live Coding in the Wild

Figure 2. Wrongheadedpreaching code at theArnolfini in Bristol.(Photograph by MeganFarrow, Bristol.)

Dave Griffiths, a member of aforementionedcollective Slub, has created various live-codingsystems, notably the Scheme-based Fluxus forgraphical live coding, Al-Jazari (where he uses agamepad to program robots that make music), andScheme Bricks (a graphical block-type interface forprogramming music and visuals). Griffiths’s worktends to contain a strong visual element, inspiredby computer games and agent-based programming(Griffiths 2007), and is thus ideally suited as a firststep in coding for novices and children.

The group Wrongheaded (see Figure 2) is a col-laboration between live coders Click Nilson andMatt Yee-King. Their performances include strong

Figure 3. Benoıt and theMandelbrots playing theirgreatest hits. (Photographby Daniel Bollinger,www.danielbollinger.de.)

performative aspects and are typically humorous,sometimes to the degree that the music is all butforgotten among tactics that might involve expres-sive dance, the autopsy of teddy bears, or a religiousexegesis of existential algorithms. This takes placeconcurrently with the writing of SuperCollider syn-thesizer definitions and the configuration of soundcard drivers for the Linux-based Raspberry Pi.

There is also a boy-band dimension in livecoding, most notably present in the collectiveBenoıt and the Mandelbrots (see Figure 3). Thismultilingual (both in terms of human and machinelanguages) supergroup continually surprises withtheir advanced systems, coding expertise, andsolutions to the problems of networked computermusic and collaborative audiovisual performance.

Andrew Sorensen and Andrew Brown performunder the name aa-cell (Sorensen and Brown 2007).They use a Scheme-based environment calledImpromptu, written by Sorensen (2005). Theirperformances have impressed audiences around theworld through their range of expression, codingeloquence, and compositional structures. If onewere to name virtuoso live coders, algorithmicequivalents to Paganini and Liszt, the names of theseperformers are bound to be included. Sorensen iscurrently working on a new live-coding environmentcalled Extempore for “cyber-physical programming”(Sorensen and Gardner 2010).

Jason Freeman and Akito Van Troyer (2011) havecreated a live-coding environment called LOLC.

Magnusson 11

Page 6: Herding Cats: Observing Live Coding in the Wild

Figure 4. IOhannes mzmolnig live coding withPure Data. (Photograph byDavid Griffiths, Falmouth,UK.)

This simulates a chat client and allows novicesin computer programming to live code music inlarger ensembles over a wireless network in thesame location or in a distributed performance.The system encourages not only conversation andcollaboration between performers, but also the bor-rowing and adoption of code, practically renderingthe question of authorship in this collaborativeperformance setup meaningless. A more recentsystem called SGLC (Lee and Freeman 2013) buildson LOLC, but aims at the inclusion of acousticinstruments through the use of traditional staffnotation.

Mark Havryliv uses his P[a]ra[pra]xis live-codingsoftware to sonify text (typically poetry). Words aretreated as objects with properties and relationshipsto other words—i.e., the software is not a one-to-onemapping of characters or letters to sound, but focuseson linguistic conditions. After a word is typed, thesystem can change it to another semantically orsyntactically related word. Knowing the systemwell, it is possible to code complex musical andlinguistic patterns (Dubrau and Havryliv 2010).

Most of the these performance systems aretext-based, but graphical data-flow programmingenvironments like Pure Data (Pd) and Max/MSPalso allow for live coding. IOhannes m zmolnig(see Figure 4), for instance, is a Pd developer whohas created a live-coding system for multiple usersand used it extensively (zmolnig 2007). He is also

known for his “pointillistic” live coding of Morsecode with a Braille font.

Gibber (Roberts and Kuchera-Morin 2012) isa system that takes live coding into the realmof the Web browser. Using the new Web Audiotechnologies for JavaScript, the system enablespeople to visit a Web page and start creatingsynthesizers or composing music, without needingto download and install any additional software.Multiple users can contribute in the same session ina networked performance manner.

Till Bovermann and Sara Hildebrand MarquesLopes have devised a piece called Oulipop, wherethey perform “meta-level” live coding by manipulat-ing text according to the algorithmic rules specifiedby the Ouvroir de literature potentielle (“workshopfor potential literature,” abbreviated as Oulipo). TheOulipop system runs a low-level synthesis enginethat translates ASCII characters into assembler in-structions for a virtual chip, the operation of whichis sonified. The piece is performed by Bovermannand Hildebrand Marques Lopes on stage, wherethey interfere with each other’s text, thus turningwhat might have been meaningful prose into good-sounding nonsense (Bovermann and Griffiths 2014).

Craig Latta’s system, Quoth, implements amusical performance system in the form of a textadventure game command line interface. Quoth is anatural language processor, presented in the form ofinteractive fiction, that treats the English languageas executable code (an example is available online atvimeo.com/50530082).

In my own work I have developed two live-coding systems, the ixi lang (Magnusson 2011a)and the Threnoscope (Magnusson 2013). Both ofthese systems are made with the aim of providingscope for musical expression that is both highlevel and constrained. The musical output of thetwo systems is distinctively different, with theformer typically resulting in beat-orientated andmelodic music (a strong focus is put on scales,chords, and harmony), whereas the latter practicallyremoves time and emphasizes notes of indefinitelength (drones) whose parameters can be controlledthrough a textual interface.

Loud Objects, a collaboration between KunalGupta, Tristan Perich, and Katie Shima, focuses

12 Computer Music Journal

Page 7: Herding Cats: Observing Live Coding in the Wild

on creating hardware in a live, performative con-text. An overhead projector displays how memberssolder custom audio circuits using microchips,capacitors, and transducers. Although their perfor-mances consist solely of soldering hardware, theyrepresent a form of live programming, because theyinvolve the hot-wiring of control structures in realtime.

The list of live-coding practitioners enumeratedhere could be much longer, but it sufficientlydemonstrates that there are no specific tools,practices, or musical aesthetics at play: Live codingis a fuzzy concept representing a performancetechnique with a multitude of practices that donot share any one essential requirement, exceptperhaps that algorithms are written and operated onin real time. Each of the named practices addressesspecific problems involved in composing withalgorithms, some of which could be summarized asfollows:

� Languages for algorithmic thinking� Comprehensibility and intuitiveness of code� Audience engagement and involvement� Graphical visualizations of algorithms� Virtuosity and the system’s provision for

speed coding� Compositional expressiveness� Direct access to the artistic material (e.g.,

synthesis or temporal patterns)� Collaboration through network protocols� “Liveness” and the ability to control existing

structures� Embodiment and physicality� Live-coding systems as musical pieces or

works of art

As a novel research field with a strong practicalunderpinning, live coding engages with diverseunexplored and novel areas in (musical) composi-tion, human–computer interaction, programming-language design, and performance studies, renderingthe practice an ideal platform for both artisticand scientific experiments. The examples in thisarticle illustrate how live coding tries to commu-nicate algorithmic thinking, real-time composition,and networked collaborations to the audience bydesigning innovative systems or exploring novel

performance contexts. These examples typify ap-proaches to humanizing machines by creating con-versational interfaces with them, enabling artists toissue commands through the notation of code. Theexamples also demonstrate how live-coding systemscan range from being open, general programmingenvironments aimed at general users to being sys-tems with much narrower scope, which can be seenas musical works in their own right. Boverman andHildebrand Marques Lopes’ Oulipop and my ownThrenoscope exemplify such approaches.

Disparate Origins and Fuzzy Ends

Live coding has been explored in this article pri-marily as an art-based practice, but we shouldn’tforget that while live coding has one foot in thearts, the other stands firmly in computer science.Having established itself in the past decade, livecoding owes much to diverse foundational workin computer science since the 1950s. The codinglanguages vary, but interpreted programming lan-guages are typically used, often as descendants ofeither Lisp- or Smalltalk-based systems, whose func-tional and object-oriented paradigms, respectively,have laid foundations to both textual and graphicallive-coding environments. Just-in-time compilation(Aycock 2003) has been an influential techniquesupporting liveness in coding, for example in theJITLib approach implemented in SuperCollider byRohrhuber in 2000 (Rohrhuber, de Campo, andWieser 2005) or by Sorensen (2005) with his workon the Impromptu and Extempore environments.Visual or data-flow programming languages havealso been inspiring, including Self (Smith and Ungar1995) and Scratch (Resnick et al. 2009), an approachrepresented by Max/MSP and Pure Data in thefield of media arts (Puckette 1988). Research intohuman–computer interaction, computer games,and new media interface design have also beenimportant references in more experimental pro-gramming frameworks, for example, in the workof Griffiths (2007), McLean and Wiggins (2011),Latta’s Quoth, and in ixi lang (Magnusson 2011a).We also find that the networked collaboration char-acteristic of many live-coding performances owes

Magnusson 13

Page 8: Herding Cats: Observing Live Coding in the Wild

much to the research and development of historiccommunication protocols, but also to newer com-munity networks for collaborative coding, suchas the GitHub host for the Git revision controlsystem.

Live coding is the writing and performance, inreal time, of music or other art forms, includinggames, where algorithms are the primary form ofnotation; it involves designing step-by-step rulesfor machines, humans, or others (e.g., animalsor nature) to execute. An effective performancetechnique, live coding addresses the problems ofimprovisation and on-the-fly decision-making inlive performance with machines. The fact thatthe machine can be redefined in real time opensup new avenues in compositional and musicalperformance practices, and, indeed, it seems to bea logical and necessary step in the evolution ofhuman–machine communication. In the currenttechnological condition, media formats need notbe linear, deterministic, and static; their real-timerendering allows for interpretation, interaction,and change of the type we find in mobile apps,generative music, and games. Performance contextswill increasingly reflect the dynamic nature ofmodern media, where composers, performers, andaudience (or any amalgamation thereof) are ableto write or re-write notation, scores, or any otherinstructions and are able to design or re-designsoftware, hardware, or other machinery in a moreopen and dynamic way.

Considering that live coding as a performancemethod represents a propitious and natural wayof engaging with notation or instructions in realtime, we might question whether the approachof defining live coding as a specific category isnecessary from a longer-term perspective. At leastwe might rethink in which contexts it might bebeneficial to maintain the category, because whenthe novelty wears off and the naturalization processhas fully taken place, we may find the methodblends so effortlessly into the diverse art forms thatwe don’t need to talk about live coding anymore.In this future scenario, live coding simply becomesone of the most pertinent approaches among avail-able performance techniques that allow for real-timecomposition and improvisation.

Conclusion

This article has discussed some manifestations oflive coding and described how selected practitionersexplore key research themes, while resisting thetemptation to define live coding in greater detailthan stating that it involves the writing of algorithmsin real time. Attempts to define this wide fieldof activities more closely are likely to becomean exercise in herding cats: There will alwaysbe examples that escape the constraints of suchdefinitions. Additionally, the need for the categoryof live coding to be maintained as more than as atemporary tool has been questioned.

As a provisional instrument, however, the live-coding category serves an important purpose. Thearrival of live coding in the historical timeline ofcontemporary music is important, and the tensionbetween the strong and weak criteria for live codinghappens to be strikingly analogous to the dichotomybetween composition and performance in writtensheet music since the 19th century. Historically,in the 17th and 18th centuries, musical scoreswere often seen as descriptive of music, ratherthan prescriptive; this is a distinction Lydia Goehr(1992, p. 188) frames as the difference between“composing through performance and composingprior to performance.” From this perspective, livecoding adopts a pre-Romantic method of composingthrough performance in real time, where everythingremains open to change—the compositional process,the instrument design, and the intelligence of thesystem performing the piece.

Furthermore, live coding manages to blur mostconcepts of established musical discourse, such ascomposer, performer, and audience; instrument,score, and piece; composition, performance, andimprovisation; stage and auditorium; and instru-ment and tool. It presents an interesting take onthe modernist concern regarding form and con-tent, and it blurs the concepts of presence andabsence as well as notions of present, past, andfuture. In this respect, I think that live codingreaches much further back into musical historythan what is clearly a practice with strong rootsin modernism and computer science. It extendsback to a time before these categories became

14 Computer Music Journal

Page 9: Herding Cats: Observing Live Coding in the Wild

concrete and hard-wired definitions of musicalpractice.

Acknowledgments

I would like to thank Computer Music Journal’sguest editor, Julian Rohrhuber, and Peter Castine fortheir invaluable input.

References

Aaron, S., et al. 2011. “A Principled Approach to Devel-oping New Languages for Live Coding.” In Proceedingsof the International Conference on New Interfaces forMusical Expression, pp. 381–386.

Aycock, J. 2003. “A Brief History of Just-in-Time.” ACMComputing Surveys 35(2):97–113.

Blackwell, A., and N. Collins. 2005. “The ProgrammingLanguage as a Musical Instrument.” In Proceedings ofthe Psychology of Programming Interest Group (pagesunnumbered).

Bovermann, T., and D. Griffiths. 2014. “Computationas Material in Live Coding.” Computer Music Journal38(1):40–53.

Bowker, G. C., and S. L. Star. 2000. Sorting ThingsOut: Classification and Its Consequences. Cambridge,Massachusetts: MIT Press.

Collins, N., et al. 2003. “Live Coding in Laptop Perfor-mance.” Organised Sound 8(3):321–330.

Collins, N. 2011. “Live Coding of Consequence.”Leonardo 44(3):207–211.

Collins, N. 2012. “Six Live Coding Works for Ensemble.”Available online at www.sussex.ac.uk/Users/nc81/livecodingworksforensemble.html. Accessed July 2013.

Dubrau, J., and M. Havryliv. 2010. “P[a]ra[pra]xis: TowardsGenuine Realtime ‘Audiopoetry’.” In Proceedings ofthe International Conference on New Interfaces forMusical Expression, pp. 467–468.

Freeman, J., and A. Van Troyer. 2011. “Collaborative Tex-tual Improvisation in a Laptop Ensemble.” ComputerMusic Journal 35(2):8–21.

Goehr, L. 1992. The Imaginary Museum of MusicalWorks: An Essay in the Philosophy of Music. Oxford:Oxford University Press.

Greenberg, C. 1961. “Avant-Garde and Kitsch.” In Artand Culture: Critical Essays. Boston, Massachusetts:Beacon Press, pp. 3–21.

Griffiths, D. 2007. “Game Pad Live Coding Performance.”In J. Birringer, T. Dumke, and K. Nicolai, eds. Die

Welt als virtuelles Environment. Dresden: Hellerau,pp. 169–179.

Hoad, T. F. 1996. The Concise Oxford Dictionary ofEnglish Etymology. Oxford: Oxford University Press.

Lee, S. W., and J. Freeman. 2013. “Real-Time MusicNotation in Mixed Laptop-Acoustic Ensembles.”Computer Music Journal 37(4):24–36.

Magnusson, T. 2011a. “The ixi lang: A SuperColliderParasite for Live Coding.” In Proceedings of theInternational Computer Music Conference, pp. 503–506.

Magnusson, T. 2011b. “Algorithms as Scores: Coding LiveMusic.” Leonardo Music Journal 21(1):19–23.

Magnusson, T. 2013. “The Threnoscope: A MusicalWork for Live Coding Performance.” In InternationalWorkshop on Live Programming at the InternationalConference on Software Engineering (pages unnum-bered).

McLean, A. 2008. “Live Coding for Free.” In A. Mansouxand M. de Valk, eds. Floss+Art. London: OpenMute,pp. 224–231.

McLean, A., and G. Wiggins. 2010. “Bricolage Program-ming in the Creative Arts.” In Proceedings of thePsychology of Programming Interest Group (pagesunnumbered).

McLean, A., and G. Wiggins. 2011. “Texture: VisualNotation for the Live Coding of Pattern.” In Proceedingsof the International Computer Music Conference,pp. 621–628.

Myers, R. 2009. “Microcodes.” Furtherfield. Availableonline at www.furtherfield.org/reviews/microcodes.Accessed July 2013.

Nilson, C. [N. Collins]. 2007. “Live Coding Practice.” InProceedings of the International Conference on NewInterfaces for Musical Expression, pp. 112–117.

Puckette, M. 1988. “The Patcher.” In Proceedingsof the International Computer Music Conference,pp. 420–429.

Resnick, M., et al. 2009. “Scratch: Programming for All.”Communications of the ACM 52(11):60–67.

Roberts, C., and J. Kuchera-Morin. 2012. “Gibber: LiveCoding Audio in the Browser.” In Proceedings of theInternational Computer Music Conference, pp. 64–69.

Roberts, C., G. Wakefield, and M. Wright. 2013. “The WebBrowser as Synthesizer and Interface.” In Proceedingsof the International Conference on New Interfaces forMusical Expression, pp. 313–318.

Rohrhuber, J., A. de Campo, and R. Wieser. 2005. “Algo-rithms Today: Notes on Language Design for Just inTime Programming.” In Proceedings of the Interna-tional Computer Music Conference, pp. 455–458.

Magnusson 15

Page 10: Herding Cats: Observing Live Coding in the Wild

Rohrhuber, J., et al. 2007. “Purloined Letters and Dis-tributed Persons.” In Music in the Global VillageConference (pages unnumbered).

Smith, R. B., and D. Ungar. 1995. “Programming as anExperience: The Inspiration for Self.” In Proceedingsof the European Conference on Object-OrientedProgramming, pp. 303–330.

Sorensen, A. 2005. “Impromptu : An Interactive Program-ming Environment for Composition and Performance.”In Proceedings of the Australasian Computer MusicConference, pp. 149–153.

Sorensen, A., and A. Brown. 2007. “aa-cell in Practice:An Approach to Musical Live Coding.” In Proceedingsof the International Computer Music Conference,pp. 292–299.

Sorensen, A., and H. Gardner. 2010. “Programming withTime: Cyber-Physical Programming with Impromptu.”ACM SIGPLAN Notices, 45(10):822–834.

Swift, B., et al. 2013. “Visual Code Annotations for Cyber-physical Programming.” In International Workshop onLive Programming at the International Conference onSoftware Engineering (pages unnumbered).

Tanimoto, S. 1990. “VIVA: A Visual Language for Im-age Processing.” Journal of Visual Languages andComputing, 1(2):127–139.

Ungar, D., and R. B. Smith. 2013. “The Thing on theScreen Is Supposed To Be the Actual Thing.” InInternational Workshop on Live Programming at theInternational Conference on Software Engineering(pages unnumbered).

Wakefield, G., W. Smith, and C. Roberts. 2010. “LuaAV:Extensibility and Heterogeneity for Audiovisual Com-puting.” In Proceedings of the Linux Audio Conference(pages unnumbered).

Ward, A., et al. 2004. “Live Algorithm Programmingand a Temporary Organisation for its Promotion.” InO. Goriunova and A. Shulgin, eds. Read Me: SoftwareArt and Cultures. Aarhus: Aarhus University Press,pp. 243–261.

zmolnig, I m. 2007. “Patching Music Together: Col-laborative Live Coding in Pure Data.” In Proceed-ings of the Pd Convention. Available online atartengine.ca/∼catalogue-pd/4-zmoelnig.pdf. AccessedSeptember 2013.

16 Computer Music Journal