Gå til indholdet
Introduktion til kapitlet

Denne bog introducerer til programmering som et kreativt redskab for musikstuderende på de videregående uddannelser. Med afsæt i platformen SuperCollider introducerer bogen på grundlæggende niveau til unikke tilgange til komposition og lydproduktion fra computermusikkens verden. Bogen er henvendt til studerende eller særligt interesserede som ikke nødvendigvis har erfaring med programmering, men som har kendskab til musikteori og -teknologi på grundlæggende niveau.

Dette indledende kapitel introducerer programmering som en musikalsk aktivitet i et historisk perspektiv og forklarer hvordan redskabet SuperCollider passer ind i det musikteknologiske landskab. I bogen arbejdes der på to niveauer - det overordnede kompositionsniveau, hvor vi bruger algoritmer til at generere musikalske forløb, og det mere detaljerede niveau, hvor vi arbejder med at producere lyd med lydsignalernes byggeklodser i form af oscillatorer, samples, envelopes, filtre mm. Det særlige ved SuperCollider er, at man kan kombinere disse to abstraktionsniveauer, hvilket gør redskabet utroligt fleksibelt og righoldigt.

Programmering og computermusik

Matematikeren og grevinden Ada Lovelace er af computerhistorikere posthumt blevet anerkendt som verdens første programmør, fordi hun i 1842 beskrev det, der sidenhen er blevet betegnet som den første computeralgoritme (Gregersen, 2015)1. Lovelace var meget optaget af den samtidige forsker Charles Babbages arbejde med hulkort-maskiner, som var forgængere til nutidens digitale computere. Babbage arbejdede blandt andet med at designe en "Analytical engine", der groft sagt skulle fungere som det vi i dag ville kalde en regnemaskine. Men Lovelace så et meget større potentiale i Babbages hulkortmaskine end den oprindelig var tiltænkt, nemlig at den med abstrakte operationer ville kunne gøre meget andet end foretage udregninger med tal - eksempelvis at komponere musik:

It might act upon other things besides number, were objects found whose mutual fundamental relations could be expressed by those of the abstract science of operations, and which should be also susceptible of adaptations to the action of the operating notation and mechanism of the engine. Supposing, for instance, that the fundamental relations of pitched sounds in the science of harmony and of musical composition were susceptible of such expression and adaptations, the engine might compose elaborate and scientific pieces of music of any degree of complexity or extent. (Lovelace, 2015, p. 162)2

Selvom der skulle gå mere end et århundrede før den computergenererede musik blev udbredt, har Lovelace så afgjort fået ret i sin forudsigelse. I bred forstand kan man sige, at alle de digitale redskaber hvormed vi i dag producerer, distribuerer og forbruger musik, er baseret på computerprogrammering - om end vi interagerer med de fleste af disse redskaber gennem grafiske brugerflader eller fysiske interfaces. I mere konkret forstand er programmering for nogle musikere og komponister inden for computermusikken og den elektroniske musik i dag det primære redskab til at skabe musik, da de nuværende redskaber giver en fantastisk frihed og fleksibilitet, hvis man er villig til at sætte sig ind i programmeringsteknikkerne.

Fra MUSIC-N til SuperCollider

Computermusikkens redskaber har gennemgået en omfattende udvikling siden de tidligste eksperimenter med computerbaseret komposition i midten af det 20. århundrede. Fokuserer vi specifikt på musik- og lydprogrammering, er der også sket ganske meget siden de første forskere i 1950'erne eksperimenterede med at få dyre mainframe-computere til at komponere musik. I disse tidlige eksperimenter skabte computeren en slags partitur, men dannede ikke nogen egentlige klange. I 1957 opfandt Max Mathews ved AT&T Bell Laboratories programmeringssproget MUSIC, der sammen med efterfølgerne MUSIC II, MUSIC III, MUSIC V m.fl. kendes under betegnelsen "MUSIC-N languages" (Wang, 2017, p. 61)3.

Med MUSIC-N og opfindelsen af DAC-enheder, som konverterer fra digitale til et analoge signaler, blev vejen banet for, at computere både kunne generere partiturer og tilmed realisere de lyde, som partituret specificerede. Fra MUSIC III var et centralt designprincip på plads, som også efterfølgende musikprogrammeringssprog baserede sig på, nemlig kategoriseringen af tonegeneratorer, filtre, envelopegeneratorer mm. som såkaldte Unit Generators (i daglige tale UGens) (Wang, 2017, p. 61)3. Man sammensætter disse UGens til en slags synthesizer, så eksempelvis en envelopegenerator-UGen styrer amplituden/lydstyrken for en sinustone, der er genereret med en tonegenerator-UGen. I MUSIC-N-lingo kalder sådan en sammenkobling for et "instrument" og en samling af sådanne instrumenter for et "orkester". Dette orkester kan så realisere et "partitur", analogt til almindelig praksis med musikalsk fremførelse baseret på musiknotation (Wang, 2017, p. 61)3. Dette skete dog ikke i realtid, da computeren møjsommeligt skulle tygge sig igennem et partitur og derved skabe en lydfil. Ifølge Mathews kunne den computer, han arbejdede med i slutningen af 1950'erne, bruge flere minutter på at generere blot ét sekunds lyd, og det endda med ganske begrænsede klanglige muligheder (Collins & D'Escrivan, 2017, p. 84)4.

I forlængelse af MUSIC-N blev der skabt mere moderne og avancerede programmeringssprog og -platforme til musik og lyd, herunder først og fremmest Csound fra midten af 1980'erne, der som open source-projekt fortsat er i anvendelse i dag. Csound kunne ikke oprindeligt generere lyd i realtid (hvilket dog er blevet tilføjet sidenhen) - der skulle i stedet et andet projekt til for at ændre dette: I 1980'erne skabte Miller S. Puckette ved IRCAM det i dag meget udbredte værktøj Max, der var opkaldt efter førnævnte Max Mathews. Max var i første omgang designet til at være et MIDI-system, der kunne styre ekstern signalbehandlingshardware i IRCAM's eksperimentelle lydstudier og blev udgivet som kommerciel software. Det innovative ved Max var, at der er tale om en grafisk brugerflade, hvor brugeren opretter forskellige små bokse og forbinder dem med virtuelle kabler for at definere signalflowet, lidt ligesom en modulær synthesizer.

Senere udviklede Puckette et nyt system kaldet Pure Data (i daglig tale blot Pd), der i sin brugerflade var en gentænkning af Max, men derudover også inkorporerede en lyd-engine, som man kunne styre fra brugerfladen (Puckette, 1996)5. Pd er open source, og lyddelen blev derfor også inkorporeret i Max, der i den sammenhæng fik navnet Max/MSP. Pd, som er gratis og open source, og den kommercielle slægtning Max/MSP er i dag meget populære og udbredte redskaber inden for computermusik. Begge platforme er gode kandidater til at blive anvendt af musikstuderende i dag, fordi de med den grafiske brugerflade er lette at komme i gang med, hvis man ikke har arbejdet med programmering før. Når de ikke er valgt som platform til denne bog, er det fordi de mere omfattende projekter, man går i gang med umiddelbart efter begynderstadiet, hurtigt bliver yderst komplekse og vanskelige at håndtere i den visuelle platform. Dertil er en tekstbaseret tilgang bedre egnet, om end dette selvfølgelig også afhænger af personlige præferencer og færdigheder.

SuperCollider, platformen i denne bog, blev oprindeligt skabt af James McCartney og udgivet som kommerciel software i 1996 (McCartney, 2002)6. I 2002 frigav McCartney imidlertid SuperCollider under en open source-licens, og projektet udvikles og anvendes i dag af musikere, komponister, forskere, lyddesignere m.fl. i et omfattende open source-fællesskab. SuperCollider er i den aktuelle version 3 et af de mest fremtrædende redskaber til algoritmisk komposition og programmatisk lydproduktion vi har til rådighed i dag.

Et af de særlige træk ved SuperCollider er, at det består af tre dele: Et tekstbaseret programmeringssprog, en state-of-the-art lydserver samt en dedikeret teksteditor med indbygget dokumentation og hjælp. På grund af denne tredelte opbygning kan SuperColliders lydserver anvendes som komponent i andre systemer, hvilket er blevet udnyttet i mange specialdesignede programmeringsplatforme som Sonic Pi, TidalCycles, Overtone m.fl. Et andet nyere skud på stammen, der dog ikke har lige så stor anvendelse som Pd, Max/MSP og SuperCollider, er programmeringssproget ChucK, som er ganske interessant men knap så oplagt som et redskab til begyndere.


  1. Gregersen, E. (2015). Ada Lovelace: The First Computer Programmer. In Encyclopedia Britannica. https://www.britannica.com/story/ada-lovelace-the-first-computer-programmer 

  2. Lovelace, A. A. (2015). 1842 Notes to the translation of the Sketch of the Analytical Engine. Ada User Journal, 36(3), 152--180. 

  3. Wang, G. (2017). A History of Programming and Music. In N. Collins & J. D'Escrivan (Eds.), The Cambridge Companion to Electronic Music (pp. 58--74). Cambridge University Press. 

  4. Collins, N., & D'Escrivan, J. (Eds.). (2017). Artists' Statements I. In The Cambridge Companion to Electronic Music (pp. 75--85). Cambridge University Press. 

  5. Puckette, M. S. (1996). Pure Data. Proceedings of the International Computer Music Conference, 269--272. 

  6. McCartney, J. (2002). Rethinking the Computer Music Language: SuperCollider. Computer Music Journal, 26(4), 61--68. https://www.jstor.org/stable/3681770