colliding: a supercollider environment for synthesis...

7
Colliding: a SuperCollider environment for synthesis-oriented live coding Gerard Roma CVSSP, University of Surrey Guildford, United Kingdom [email protected] Abstract. One of the motivations for live coding is the freedom and flexibility that a programming language puts in the hands of the performer. At the same time, systems with explicit constraints facilitate learning and often boost creativity in unexpected ways. Some simplified languages and environments for music live coding have been developed during the last few years, most often focusing on musical events, patterns and sequences. This paper describes a constrained environment aimed at exploring the creation and modification of sound synthesis and processing networks in real time, using a subset of the SuperCollider programming language. The system has been used in educational and concert settings, two common applications of live coding that benefit from the lower cognitive load. Keywords: Live coding, sound synthesis, live interfaces Introduction The world of specialized music creation programming languages has been generally dominated by the Music-N paradigm pioneered by Max Mathews (Mathews 1963). Programming languages like CSound or SuperCollider embrace the division of the music production task in two separate levels: a signal processing level, which is used to define instruments as networks of unit generators, and a compositional level that is used to assemble and control the instruments. An exception to this is Faust, which is exclusively concerned with signal processing. Max and Pure Data use a different type of connection for signals and events, although under a similar interaction paradigm. Similarly, Chuck has specific features for connecting unit generators and controlling them along time. The availability of languages capable of generating music in real time has fostered the development of live coding (Collins et al. 2003), which has the advantage of giving the audience the possibility to read computer music performances in a way that is comparable to improvisation with physical instruments. Live coding is also helpful in classroom environments, allowing students to grasp the mental process involved in using a programming language or command line. One feature that has inspired the live coding practice is the freedom and power that a programming language gives to the performer. On the other hand, restricted environments often result in unexpected creative outcomes. Facing the infinite possibilities offered by computers, musicians and artists commonly design their systems on the basis of constraints (Magnusson 2010). Constraints can be seen as the rules that define a game, and thus are considered by many to play an essential role in creativity (Boden 2004; Merker 2006). Some constrained languages are available for live coding, most often with a strong focus on musical events (Magnusson 2011; McLean 2014). In the Music-N paradigm, this means not creating new instruments on stage, but improvising new control sequences for pre-defined instruments. The system presented in this paper explores the other side. In this sense, the concept of "synthesis-oriented" live coding can be opposed to "event-oriented" live coding. There is, as a matter of fact, a long tradition in challenging the distinction between composition and timbre, precisely on the basis of the possibilities offered by computers (Döbereiner 2011). Under this point of view, musical events can be seen as signals, and music can be created using exclusively signal processing networks. With the release of version 3 (McCartney 2002), the SuperCollider language was split into two separate programs: the synthesis server (scsynth) and the language interpreter (sclang). A subset of the language is used to specify synth definitions, which the scsynth server can execute. It is not uncommon to find discussions among the SuperCollider community on creating music structures purely in the server side. Among other reasons, creating synth definitions can be less demanding with respect to dealing with the full language and the distributed architecture. Given the amount of unit generators available, focusing on the synthesis side of SuperCollider is both simple and powerful. In terms of user

Upload: lethuy

Post on 30-Jun-2018

225 views

Category:

Documents


2 download

TRANSCRIPT

Colliding:aSuperColliderenvironmentforsynthesis-orientedlivecoding

GerardRoma

CVSSP,UniversityofSurreyGuildford,[email protected]

Abstract.Oneofthemotivationsforlivecodingisthefreedomandflexibilitythataprogramminglanguageputsinthehandsoftheperformer.Atthesametime,systemswithexplicitconstraintsfacilitatelearningandoftenboostcreativityinunexpectedways.Somesimplifiedlanguagesandenvironmentsformusiclivecodinghavebeendevelopedduringthelastfewyears,mostoftenfocusingonmusicalevents,patternsandsequences.Thispaperdescribesaconstrainedenvironmentaimedatexploringthecreationandmodificationofsoundsynthesisandprocessingnetworksinrealtime,usingasubsetoftheSuperColliderprogramminglanguage.Thesystemhasbeenusedineducationalandconcertsettings,twocommonapplicationsoflivecodingthatbenefitfromthelowercognitiveload.

Keywords:Livecoding,soundsynthesis,liveinterfaces

IntroductionTheworldofspecializedmusiccreationprogramminglanguageshasbeengenerallydominatedbytheMusic-NparadigmpioneeredbyMaxMathews(Mathews1963).ProgramminglanguageslikeCSoundorSuperColliderembracethedivisionofthemusicproductiontaskintwoseparatelevels:asignalprocessinglevel,whichisusedtodefineinstrumentsasnetworksofunitgenerators,andacompositionallevelthatisusedtoassembleandcontroltheinstruments.AnexceptiontothisisFaust,whichisexclusivelyconcernedwithsignalprocessing.MaxandPureDatauseadifferenttypeofconnectionforsignalsandevents,althoughunderasimilarinteractionparadigm.Similarly,Chuckhasspecificfeaturesforconnectingunitgeneratorsandcontrollingthemalongtime.Theavailabilityoflanguagescapableofgeneratingmusicinrealtimehasfosteredthedevelopmentoflivecoding(Collinsetal.2003),whichhastheadvantageofgivingtheaudiencethepossibilitytoreadcomputermusicperformancesinawaythatiscomparabletoimprovisationwithphysicalinstruments.Livecodingisalsohelpfulinclassroomenvironments,allowingstudentstograspthementalprocessinvolvedinusingaprogramminglanguageorcommandline.Onefeaturethathasinspiredthelivecodingpracticeisthefreedomandpowerthataprogramminglanguagegivestotheperformer.Ontheotherhand,restrictedenvironmentsoftenresultinunexpectedcreativeoutcomes.Facingtheinfinitepossibilitiesofferedbycomputers,musiciansandartistscommonlydesigntheirsystemsonthebasisofconstraints(Magnusson2010).Constraintscanbeseenastherulesthatdefineagame,andthusareconsideredbymanytoplayanessentialroleincreativity(Boden2004;Merker2006).

Someconstrainedlanguagesareavailableforlivecoding,mostoftenwithastrongfocusonmusicalevents(Magnusson2011;McLean2014).IntheMusic-Nparadigm,thismeansnotcreatingnewinstrumentsonstage,butimprovisingnewcontrolsequencesforpre-definedinstruments.Thesystempresentedinthispaperexplorestheotherside.Inthissense,theconceptof"synthesis-oriented"livecodingcanbeopposedto"event-oriented"livecoding.Thereis,asamatteroffact,alongtraditioninchallengingthedistinctionbetweencompositionandtimbre,preciselyonthebasisofthepossibilitiesofferedbycomputers(Döbereiner2011).Underthispointofview,musicaleventscanbeseenassignals,andmusiccanbecreatedusingexclusivelysignalprocessingnetworks.

Withthereleaseofversion3(McCartney2002),theSuperColliderlanguagewassplitintotwoseparateprograms:thesynthesisserver(scsynth)andthelanguageinterpreter(sclang).Asubsetofthelanguageisusedtospecifysynthdefinitions,whichthescsynthservercanexecute.ItisnotuncommontofinddiscussionsamongtheSuperCollidercommunityoncreatingmusicstructurespurelyintheserverside.Amongotherreasons,creatingsynthdefinitionscanbelessdemandingwithrespecttodealingwiththefulllanguageandthedistributedarchitecture.Giventheamountofunitgeneratorsavailable,focusingonthesynthesissideofSuperColliderisbothsimpleandpowerful.Intermsofuser

interface,theevolutionofSuperColliderasageneralpurposelanguageledtoastrugglebetweentheneedofa"properIDE"forobject-orientedprogramming,andtheinterestinthedocument-orientedrichtexteditorthatwasavailableonOSX.

Inthiscontext,CollidingwasdesignedasaconstrainedinterfaceforcreatingSuperCollidersynthdefinitions.Apartfrommusiccreationandperformance,thefocusonsynthesisprovidesacompellingenvironmentformusicandsignalprocessingeducationsettings,allowingeasyexperimentationwithawidevarietyofsynthesistechniques.Theideaofcreatingasimplifiedenvironmentemergedwhenobservingengineeringstudentstryingtocreateproceduralprogramswithalltheasynchronouscallsrequiredtostarttheserver,createasynthdefinitionandinstantiateit.Loadingaudiobuffersandnetworkresourcesrequireasynchronouscallsaswell,whichassumeanunderstandingofanonymousfunctions.Boththeclassroomandtheconcertenvironmentsbenefitfromthereducedcomplexityandfocus.Inthecaseofmusicperformance,theconstraintisinpartaesthetic,butstillmanydifferentstylesofmusiccanbeplayed.Therestofthepaperdescribesthefunctionalitiesimplementedsofarandtheuseoftheprograminbotheducationandperformance.

RelatedworkConstrainedenvironmentsforlivecodingarecommoninclassroom-orientedapplications.Twowell-knownexamplesareEarsketch(Freemanetal.2014)andSonicPi(AaronandBlackwell2013).ThefirstisbasedonanApplicationProgrammingInterface(API)whichcanbeusedinJavascriptorPythoninawebenvironment.ThisAPIiscomplementedwithalibraryofaudioloopsthatcanbemanipulatedandpositionedinanaudiosequencertimelinethroughtheprogrammingAPI.ThesecondexposesalsoabasicAPI,inthiscaseasaRubydomain-specificlanguagethatcontrolsSuperCollidersynths.TheprogrammingenvironmentisdesignedtorunonaRaspberry-Piembeddedcomputer.Bothenvironmentsofferlimitedcapabilitiesintermsofsynthesis.Themainideabehindlivecodingmusicenvironmentsintheclassroomistoengagestudentsintoprogrammingbydoingsomethingfunandcreative.

Suchenvironmentsallowexperimentationwithgenerativemusic,butarenotsowellsuitedforsynthesis-orientedmusicorlearning.Whilethesesystemsgenerallyfocusonlearningprogrammingskills,Collidingemphasizessignalprocessing,requiringonlybasicprogrammingconcepts.Inthissense,perhapsamoresimilarapproachwouldbeusingthecompiledlanguageFaustinaninteractivesetting.FaustLive(Denouxetal.2014)isajust-in-timecompileraimedatfacilitatingthiskindofset-up,however,itdoesnotprovideaninterfaceforcoding.FaustisusedlivebyJuliusO.SmithforteachingsignalprocessingusingEmacs1.

Asthenamesuggests,CollidingismainlyinfluencedbyProcessing(ReasandFry2006)anditscousintheArduinoIDE.Bothhavesucceededincreatingsimplifieddevelopmentenvironmentsforactivitiesthattraditionallyrequiredspecializedtraining.ProcessingwasoriginallypresentedasasubsetoftheJavalanguagethatcanbeembeddedinJavaprograms.ArduinooffersasimpleCAPIforembeddedsystems.Similarly,CollidingusesasubsetoftheSuperColliderlanguage.

AnothermajorinfluenceisixiLang(Magnusson2011).Whileheavilyfocusedonmusicalevents,ixiLangstressestheimportanceofreducingcomplexityformusiclivecoding.LikeixiLang,Collidingcanbeseenasa"SuperColliderparasite",inthiscaseforsynthesis-orientedlivecoding.

�Interface

Overview

TheprogramfollowstheinteractionparadigmofprototypingeditorslikeProcessing.Theinterface(Figure1)allowstheusertocreateupto8tabs,eachwithacodeeditingwindowconfiguredwithalargefontsize.Thisencouragesshortsnippetsandfacilitatesreadability.Thenumberoftabs(andalsoofbuffers,asdescribedbelow)isnotcompletely

1https://www.youtube.com/watch?v=2lEt7dsziO0

arbitrary.Itisgenerallyagreedthatsimilarnumbersofelementsarerelatedwithworkingmemorycapacity(Miller1956).Itiscommontofind8-channellimitsinmusicproductionhardware(smallmixers,oldtaperecorders)orsoftware.Themainactionsconsistincompilingthecode(forerrorchecking),runningit(whichresultsinapotentiallyinfinitesoundstream),andstoppingthesound.Theseactionscanberunthroughkeyboardshort-cutsorusingasetofbuttonsbelowthecodewindow.Anothersetofbuttonsinthetoprightcornerexposesproject-leveloperations(addingtabs,gettinghelpforthecurrentlyselectedtext,loadingandsavingprojects,andapanicbuttonthatstopsallrunningprocesses).Textcolorinthecodeeditingwindowisusedtoindicatecompilationstate.Whitemeansthecodehasbeencompiled,greymeansitisbeingedited,andredmeansthereissomeerror.

Figure1:TheCollidinginterface

Collidingofferstwomodesofoperation:"synthediting"and"advanced".Thesyntheditingmodeaffordsthemetaphorofeditingapatchinahardwaresynthesizer,butitcanalsobeusedforlivecoding.Inthiscase,thecodeisassumedtobeasynthdefinition,andtheenvironmentprovidessomepredefinedvariablesandthemeanstotriggernotes,ifdesired.Inadvancedmode,thecodecanbeanything"playable".InSuperColliderthisisachievedbycompilingthecodeandmakingitthesourceofaNodeProxy,whichallowsusingtheinterfacewithJITLib(Rohrhuber,deCampo,andWieser2005)asaback-endforlivecoding.Thisincludesalsoeventpatterns,althoughthispossibilityhasnotbeenexploredorspecificallysupported.OneimportantdifferenceisthatinadvancedmodetheaudiooutputchanneliscontrolledbyJITLib,whileinsynthesiseditingmodeitisspecifiedexplicitly.Thusin"synthediting"modeitissimplertoaddressmultipleoutputs.Forsynthesisorientedlivecoding,i.e.,inSuperCollidertalk,ifonlyservercodeisevaluated,bothmodescanbeused,althoughtheadvancedmodeallowstersercode.

Afeedbackpanelbelowthecodewindowandbuttonsisusedforerrorreporting.Longstacktracescanbeoverwhelmingforbeginners,andarealsoundesirableinlivesituations.Whenthecoderesultsinastacktrace,thesystemselectstherelevantmessageandhighlightstheoffendingline(Figure2).Inordertoprovidesuchfeedbackwithoutdisruptingthecurrentinterpreter,itwasnecessarytoimplementcompilationasaseparateprocess,bywritingthesnippettofileandcallingsclangtoparseit.Allofthishappensunderthehood.

AllcodeisruninSuperCollider’sinternalserver,whichfacilitatesvisualizationoftheoutput.Thebottomendcontainsanoscilloscopethatprovidesvisualfeedbackabouteverythingthatishappeningintheserver.

Synthediting

Additionalfeaturesareprovidedinthesyntheditingmode.Inthismode,thecodeiswrappedtobuildandinstantiateasynthdefinition,withseveralpre-definedparameters.Awindowrepresentingthecomputerkeyboardallowstriggeringnotesusingthesynththathasbeendefinedinthecurrenttab.Thekeyboardusesanisomorphicmapping.Aslidernexttothecodewindowallowscontrollingthegain.Thisresultsinthefollowingpre-definedvariables.Itisuptothecodertomakeuseofthem.

• key:TheMIDInumbercorrespondingtothekeypressedinthecomputerkeyboard.4• freq:ThefrequencyinHzcorrespondingtothekey.• gate:Agateinputforenvelopes.• amp:Thevaluedefinedbytheslider.

Itistrivialtoextendthissystemwithotherwidgets,forexampleadditionalsliderscouldbeattachedtothekeyboard.Forthemoment,thesystemprovidestheminimumtoleveragetheinputdevicesalreadyavailableineverycomputer.ThemouseisaccessedusingthetraditionalSuperColliderunitgenerators.ThisisaconvenientsetupforclassroomPCsandlaptopperformances.ItisalsoeasytoextendtheconcepttoMIDIcontrollers.

Figure2:Errorreporting

Buffersandfiles

Besidessynthdefinitions,anotherareathatrequiresasynchronouscallsisdealingwithaudiofiles.ThisisoftenasourceofconfusioninSuperCollider.Graphicalinterfacesaregenerallyappreciatedforbrowsingthefilesystemandaccommodatingthetimeforfileloading.Collidingprovides8slotsforbuffermanagement.Buffersaresimplyaccessedviatheirbuffernumber(0-7).Aseparatewindowisusedforloading,visualizingandpre-listeningeachbuffer.Empty

bufferscanbeallocatedforrecordingsignals,andsmallbufferscanbeconvertedtowavetableformatforwavetablesynthesis.Inadditiontoloadingsoundfilesfromdisk,thesystemincludesaninterfacefortheFreesoundquark2,sothattheusercanmakebasictextqueriestotheFreesounddatabase(Akkermansetal.2011),anddownloadsounds.Forthemoment,thesearchisrestrictedtowavfiles.However,ifoggsupportiscompiledwiththeSuperColliderbinaries,itshouldbepossibletoaccessthewholeFreesounddatabaseviahigh-qualityoggpreviews3.

Finally,somebasicprojectmanagementfacilitiesareprovided.Aprojectconsistsofthetextineachtabandallthesoundfilescorrespondingtothebufferslots.Thisisespeciallyusefulforlearningenvironments,butcanalsobeusefultopreservethestateofalivecodingsession.Inthefutureitmightbeinterestingtoaddsomesimpleinterfacetoversioncontrol(e.g.git)whichisalsousuallyhardforbeginners.

InitialExperiencesCollidingwasdevelopedwhiletheauthorwasattheSonologydepartmentatEscolaSuperiordeMúsicadeCatalunya(ESMUC).Whilenoformalevaluationwasconducted,itwasusedin4overlappingsemestercoursesbetween2013and2015,coveringbasicandadvancedsynthesistechniques.Duringthepreviousyear,theSuperColliderlanguageandIDEwereused.ThedifferencewithrespecttousingplainSuperColliderwasdramatic.ByfreeingstudentsfromlearningtousetheSuperCollidereditorandlanguage,itwaspossibletofocusonsynthesisandprocessingasopposedtoprogramming.Atthesametime,thankstothelargenumberofunitgeneratorsavailableandthegeneralpowerofSuperCollideritwaspossibletoexploremanydifferentalgorithmsandconcepts,frombasicsubtractiveandmodulationtechniquestophysicalandspectralsynthesis.CollidingwasusedasakindoflabnotebookeditorthatcouldruninclassroomPCsandstudentlaptops.AssignmentsconsistedinCollidingprojectswheredifferentvariantswereexploredineachtab.Asmallcodesnippetwasusuallyseeded.

Sincestudentsweregenerallybeginnersincomputerprogramming,averysimplegrammarwasadoptedwhichworkedforallassignments(ascanbeseeninthefigures):eachline,exceptthelastone,isavariabledefinitionandassignment,wherepartofthesignalprocessinggraphisrepresented.Thissuggeststhat,forthepurposeofdefiningsynthdefinitions,thelanguagecouldbefurthersimplified.

Theonlylimitationwastheprojectmanagementfeature,whichwasnotalwaystrustedbythestudentsbecauseofitssimplicity.Howeverincaseofdoubttheprojectstructurewassimpleenoughandtextsnippetscouldbeopenwithastandardtexteditor.Somesynthesistechniquesthatrequireadditionalprocessing,suchasinthecaseofwavetablesynthesis,weremoredifficulttoaccommodate.Foradvancedtechniques,suchasspectralmodelingorvocoding,itwasgenerallyconvenienttouse"black-box"unitgeneratorsavailablefromsc3-plugins4.

Collidinghasalsobeenusedinseverallivecodingperformancesbytheauthor.Upto8synthesisprocessesmayruninparallelwhileoneofthemisbeingedited.Thebigfont,oscilloscope,andtheconstrainttosynthesis-basedcodingcontributetothereadabilityoftheperformance.Inlivecoding,thesimplifiedgrammarisnotneeded,andinsteadatersesyntaxismorecommon,inlinewiththeuseofTwitterforsharingsmallSuperColliderprograms.

ConclusionsTheSuperCollidersyntaxforbuildingsynthesizersallowsforcreatingsophisticatedpatcheswithveryfewlinesofcode.Suchconcisedescriptionsoftencontrastwiththecomplicationsoneendsdealingwithwhentryingthesamethingswithgraphicalpatchingsystemsandmodularsynthesizermetaphors.However,learninganobject-orientedlanguage

2https://github.com/g-roma/Freesound.sc3Thisdependsontheversionoflibsndfile,whichforhistoricalreasonswasfixedtoanolderversiononOSXbinaries.AtthetimeofthiswritingtheproblemisfixedinSuperCollider3.7binaries,sotherestrictiontowavforFreesoundsearcheswillberemoved.4https://github.com/supercollider/sc3-plugins

enrichedwithfunctionalprogrammingconstructscaneasilyscaretinkerersandmusicianswithlittleprogrammingbackground.TheCollidingenvironmentprovidesasimplifiedinterfacethatisparticularlyusefulwhenfocusingonsoundsynthesisandprocessing,asopposedtoevent-basedmusiccompositionandperformance.Thisfocuscanbeseenasadesignconstraintthatisusefulineducationalenvironmentsandinsynthesis-orientedlivecoding.Whilethecurrentimplementationmainlystressestheconceptandinterface,theseideascanbefurtherextendedwithoutleavingtheSuperColliderlanguage,bydefiningmorehelpervariablesandfunctions.Also,thesystemisamenabletoencapsulationofsynthesisprocessesasunitgenerators,apracticeusedbysomelivecoderswhichallowsgrowingapersonalsonicpalettewithoutlosingsimplicity.Addingsupportforthiskindofencapsulationwillbeinvestigatedinthefuture.ThecodeisavailableasaSuperColliderquark,andcanbedownloadedfromthegithubrepository5.

AcknowledgementsTheauthorwassupportedbyEscolaSuperiordeMusicadeCatalunya(ESMUC)andtheMusicTechnologyGroup(MTG)atUniversitatPompeuFabra(UPF)duringthedevelopmentofthiswork.

ReferencesAaron,Samuel,andAlanFBlackwell.2013.“FromsonicPitoovertone:creativemusicalexperienceswithdomain-specificandfunctionallanguages.”ProceedingsofthefirstACMSIGPLANworkshoponFunctionalart,music,modeling&design.ACM,35–46.

Akkermans,Vincent,FredericFont,JordiFunollet,BramDeJong,GerardRoma,SteliosTogias,andXavierSerra.2011.“Freesound2:Animprovedplatformforsharingaudioclips.”KlapuriA,LeiderC,editors.ISMIR2011:Proceedingsofthe12thInternationalSocietyforMusicInformationRetrievalConference;2011October24-28;Miami,Florida(USA).Miami:UniversityofMiami;2011.InternationalSocietyforMusicInformationRetrieval(ISMIR).

Boden,MargaretA.2004.Thecreativemind:Mythsandmechanisms.PsychologyPress.

Collins,Nick,AlexMcLean,JulianRohrhuber,andAdrianWard.2003.“Livecodinginlaptopperformance.”

Organisedsound8(03):321–330.

Denoux,Sarah,StéphaneLetz,YannOrlarey,andDominiqueFober.2014.“FAUSTLIVE,Just-In-TimeFaust

Compiler...andmuchmore.”TechnicalReport,GRAME.

Döbereiner,Luc.2011.“Modelsofconstructedsound:Nonstandardsynthesisasanaestheticperspective.”ComputerMusicJournal35(3):28–39.

Freeman,Jason,BrianMagerko,TomMcKlin,MikeReilly,JustinPermar,CameronSummers,andEricFruchter.2014.“EngagingunderrepresentedgroupsinhighschoolintroductorycomputingthroughcomputationalremixingwithEarSketch.”Proceedingsofthe45thACMtechnicalsymposiumoncomputerscienceeducation.ACM,85–90.

Magnusson,Thor.2010.“Designingconstraints:Composingandperformingwithdigitalmusicalsystems.”ComputerMusicJournal34(4):62–73.

Magnusson,Thor.2011.“theIxiLang:aSupercolliderParasiteforLiveCoding.”Icmc2011,no.August:503–506.

Mathews,MaxV.1963.“Thedigitalcomputerasamusicalinstrument.”Science142(3592):553–557.

5https://github.com/g-roma/Colliding

McCartney,James.2002.“Rethinkingthecomputermusiclanguage:SuperCollider.”ComputerMusicJournal26(4):61–68.

McLean,Alex.2014.“Makingprogramminglanguagestodanceto:livecodingwithtidal.”Proceedingsofthe2ndACMSIGPLANinternationalworkshoponFunctionalart,music,modeling&design.ACM,63–70.

Merker,BjornH.2006.“Layeredconstraintsonthemultiplecreativitiesofmusic.”MusicalCreativity:MultidisciplinaryResearchinTheoryandPractice,pp.25–41.

Miller,GeorgeA.1956.“Themagicalnumberseven,plusorminustwo:somelimitsonourcapacityforprocessinginformation.”Psychologicalreview63(2):81.

Reas,Casey,andBenFry.2006.“Processing:programmingforthemediaarts.”AI&SOCIETY20(4):526–538.Rohrhuber,Julian,AlbertodeCampo,andRenateWieser.2005.“Algorithmstodaynotesonlanguagedesignforjustintimeprogramming.”InternationalComputerMusicConference.291.