Om denne bog
Med denne bog ønsker jeg at bidrage til, at flere musikere får adgang til de fantastiske muligheder, musik- og lydprogrammering giver inden for komposition og lydproduktion. I dag kan enhver med en laptop, en DAW og evt. et abonnement på loops og samples relativt let skabe musik. Sammenlignet med de lydstudieressourcer, der var nødvendige for blot få årtier siden, er der sket en omfattende udvidelse af mulighederne for den enkelte. Men når denne almengørelse af musikteknologien giver flere mennesker mulighed for fremstille musik, bliver det vanskeligere for skabende kunstnere at skille sig ud fra mængden. At investere tid og engagement i programmering som redskab giver musikere og komponister mulighed for at skabe unikke musikalske og lydlige træk, som kun vanskeligt eller slet ikke kan frembringes med mainstream, kommerciel musiksoftware. Bogen åbner døren til disse muligheder ved at introducere til teknik, terminologi og kreative tilgange på forståelig og praktisk anvendelig vis.
To fokusområder
Programmering kan i dag foregå på mange forskellige abstraktionsniveauer, da der findes ganske mange programmeringssprog, som er designet med forskellige formål. Den såkaldte maskinkode udgør det laveste niveau og består af sekvenser af binære tal, som indikerer basale operationer, der kan udføres af en computerprocessor. For mennesker er maskinsprog yderst vanskelig at fremstille og læse, fordi det er så fjernt fra menneskers ordinære sprog. Derfor har man opfundet en række programmeringssprog, der opererer på et højere abstraktionsniveau. I det børnevenlige programmeringssprog Scratch kan man eksempelvis lave små spil ved at sammenkoble forskellige klodser med musen.
SuperCollider og andre musikfokuserede programmeringssprog fungerer på et relativt højt abstraktionsniveau. Det betyder i denne sammenhæng, at mange tekniske detaljer er abstraheret væk, således at programmøren kan fokusere på de musikalske/lydlige aspekter. Det vi typisk arbejder med her, svarer i nogen udstrækning til de ovenfor nævnte metaforer "partitur" og "orkester". Mere specifikt skal vi i bogen arbejde med det, man kalder algoritmisk komposition (svarende til "partituret"), dvs. vi skal fremstille algoritmer og mønstre, der kan generere musikalske forløb. Derudover skal vi også arbejde med klangdannelse, dvs. vi skal fremstille små programmer, der gennem forskellige teknikker til lydsyntese designer de enkelte klange og lyde, vores kompositioner består af.
Algoritmisk komposition
Umiddelbart kunne man godt forestille sig, at algoritmisk komposition er noget, der primært hører til computermusikken. Men en algoritme kan defineres som en foreskrevet proces, der ved at udføre en række konkrete trin har til formål at løse et bestemt problem. Og i den betydning har algoritmen en længere historie som et musikalsk-kompositorisk redskab.
Within the field of algorithmic composition the algorithm constitutes an abstract model which defines and controls some or all structural aspects of the music. This model can also serve as a generator that is capable of producing the piece as a possible variant within a field of possibilities. The latter approach can be implemented as a computer program, but the underlying idea is much older. (Essl, 2017, p. 105)1
Essl sporer algoritmisk kompositionsteknik helt tilbage til den tidlige polyfone musik, som er noget af det ældste nedskrevne musik, der findes i vesten (Essl, 2017, p. 106)1. Nyere eksempler findes i J. S. Bachs regelbaserede kompositionsteknikker og såkaldte gådekanon-kompositioner samt i W. A. Mozarts berømte Musikalische Würfelspiele (1793)2, hvor terningekast afgør rækkefølgen af det musikalske materiale og dermed giver mulighed for at skabe forskellige variationer over den underliggende metrik og harmonik (Essl, 2017, p. 106)1.
I det 20. århundredes vestlige kompositionsmusik indgår algoritmisk komposition i flere af hovedstrømningerne. Med først tolvtonemusikken og senere hen serialismen og aleatorikken gør mange komponister forskellige algoritmer til det centrale redskab i deres kompositionsproces. I modsætning til de ofte meget deterministiske algoritmer introducerede komponisten Iannis Xenakis ideen om stokatisk musik, hvor tilfældighedsoperationer baseret på matematisk bestemte sandsynligheder bliver en central del af algoritmerne. I forlængelse af dette samt minimalismen, den amerikanske eksperimentalmusik og den tidlige ambiente musik blev ideen om generativ komposition stadfæstet som et af den moderne kompositionsmusiks modus operandi. Hertil kom, at de ovenfor omtalte udviklinger inden for computerteknologi og redskaber til computermusik gradvist blev en del af kompositionsmusikken, og computermusikken vandt samtidig frem som et selvstændigt, men beslægtet felt, hvori algoritmisk komposition spiller en væsentlig rolle.
SuperCollider er et fantastisk redskab til algoritmisk komposition, blandt andet fordi programmeringssproget indeholder et omfattende bibliotek af såkaldte patterns - generative mønstre, der kan kombineres på mange forskellige måder. I denne bog udforsker vi på grundlæggende niveau hvordan vi med disse redskaber kan styre både overordnede formmæssige forhold i musikken, men også hvordan vi kan skabe variationer og musikalsk indhold på mere detaljerede niveauer. Én praktisk tilgang er at bruge SuperCollider som en generativ maskine, der spiller på andre synthesizere eller styrer instrumentplugins i en DAW, fx via MIDI. Men der er mange fordele ved at bruge SuperColliders egen lydserver i stedet, hvor vi selv kan designe klangdannelsen. Man kan på denne måde bruge algoritmisk komposition til ikke blot at styre traditionelle kompositionsparametre som tonehøjde, rytmik og dynamik, men også til at variere og komponere med andre lydlige parametre.
Klangdannelse og lyddesign
Klangdannelse sker naturligt, når fysiske objekter bliver sat i vibration og derfor udsender lydbølger. Objektets akustiske egenskaber medvirker til afgøre klangen, hvilket ligger til grund for akustiske instrumenter. Den elektroniske klangdannelse har, ligesom computermusik og algoritmisk komposition, en interessant historie, der kun kort kan antydes her. Den tidlige elektroniske klangdannelse var udelukkende analog, hvor elektriske komponenter sammensat i kredsløb genererede strømsignaler, der blev omdannet til lyd via højttalere. Selv i dag er den analoge klangdannelse lidt af et plusord, da den ofte forbindes med en særligt "varm" kvalitet, og der produceres derfor også i dag analoge synthesizere. Men digital teknologi har en række fordele, heriblandt fx at instrumentets tonehøjde ikke varierer, når temperaturen stiger og falder (hvilket er tilfældet med mange analoge synthesizere, hvor den elektriske modstand i udstyret varierer med temperaturen). En tilstrækkeligt kraftig digital computer kan uden problemer fremstille lyden af tusindvis af oscillatorer (tonegeneratorer) i realtid, hvor en analog synthesizer, der skulle gøre det samme, ville kræve tusindvis af elektriske komponenter, hvilket er urealistisk i et hardwaresetup.
Størstedelen af redskaberne til elektroniske klangdannelse er derfor i dag digitale, hvad enten de findes i plugin-form eller som hardwareenheder. Men selv digitale lydredskaber søger ofte at emulere lyden af analogt grej ved at tilføje forskellige former for støj og lydlige artefakter som klanglig farvning af et lydsignal. "Virtual analog" er blevet en væsentlig salgsrubrik. Samtidig lever den såkaldt modulære synthesizer i bedste velgående, hvor der efterhånden findes tonsvis af lyd- og kontrolmoduler i det populære "Eurorack"-format. Også den modulære synthesizer er blevet emuleret digitalt, blandt andet af programmet VCV Rack (og open source-klonen Cardinal). Med disse modulære redskaber består kompositions- og lyddesignarbejdet i at koble forskellige moduler sammen med patchkabler og justere på modulernes indstillinger ved hjælp af fadere og drejeknapper.
I SuperCollider og lignende platforme kan vi på samme måde arbejde med enheder, der svarer til elektriske komponenter som tonegeneratorer og hardware-moduler som envelopegeneratorer eller granular synthesis-moduler. Dette gør vi ved hjælp af SuperColliders lydserver og de ovenfor omtalte UGens. De fleste UGens har forskellige input og output samt en række indstillinger. Som eksempel kan vi tage sinustonegeneratoren SinOsc
, der er en af de UGens, vi møder senere i bogen. Den har som output et lydsignal i form af en sinusbølge. Den har også et frekvens-input, hvormed vi kan styre hvor mange gange pr. sekund vi gennemløber bølgeformen (og dermed styre hvilken tonehøjde, der spilles). Dette input kan vi indstille til en fast værdi, fx 440 Hz, kammertonen, eller vi kan styre det med en anden UGen, så tonehøjden varierer over tid. I det tilfælde siger vi, at vi modulerer oscillatorens frekvens. UGens som SinOsc
har også nogle indstillinger, eksempelvis kan vi specificere initialfasen, dvs. hvor i bølgeformen, oscillatoren skal begynde, når den først bliver sat i gang.
Der findes ganske mange UGens, hvormed vi kan skabe og transformere klange, arbejde med samples og så videre. Klassiske klangdannelsesteknikker kan fint implementeres i SuperCollider, hvilket denne bog viser på flere forskellige områder. Men der er ingen faste regler, når det gælder kreative praksisser som komposition og lyddesign, og vi kan derfor også udvide, "hacke" og eksperimentere inden for klangdannelsen. Ved at gøre det opnå man to vigtige ting:
- For det første kan vi skabe unikke klanguniverser, der ikke lyder som alle de almindelige plugins. Dette betyder ikke, at SuperCollider eller andre lignende platforme skal erstatte de sædvanlige redskaber som DAWs og plugins. Men det er et unikt redskab at have adgang til, når man vil skille sig ud både i lydligt resultat og i kompositionsmetode.
- For det andet, og mindst lige så vigtigt, kan vi ved at eksperimentere med klangdannelse i SuperCollider lære en masse om lyd, klang og digital lydteknologi. Det sidste er vigtig viden i en tid, hvor digital musikproduktion er blevet allemandseje og samtidig er kommercialiseret i en meget udstrakt grad. Ønsker man at navigere i dette komplekse, teknologiske landskab, er det med andre ord meget væsentligt at kunne gennemskue på et grundlæggende niveau, hvordan teknologierne fungerer og hvad de kan anvendes til.
I de følgende kapitler arbejder vi med disse to abstraktionsniveauer først hver for sig, og derefter i kombination. Men først en advarsel: Når man har fået blod på tanden og fornemmer mulighederne ved kombination af disse to stærke redskaber, kan det være svært at lægge fra sig igen. God fornøjelse med komposition og lydproduktion i SuperCollider!
Sådan bruger du denne bog
Bogen er skrevet med henblik på studerende på de videregående uddannelser men kan bruges af alle, der har en forståelse af musikteori og musikteknologi på grundlæggende niveau. Det forudsættes eksempelvis, at man har et elementært kendskab til musikalske skalaer, intervaller og rytmelære samt bølgelære, filtre, oscillatorer og MIDI. For nogle læsere vil det være relevant at opsøge supplerende materiale, da denne bog fx ikke går i dybden med de grundlæggende begreber inden for musikteori.
Hvis man er begynder inden for programmering, er det en god ide at starte med kapitel 1, som introducerer til de grundlæggende begreber og teknikker, man skal kende, for at kunne programmere på grundlæggende niveau i SuperCollider. Man skal, som det gode gamle ordsprog lyder, kravle, før man kan gå. Al erfaring viser nemlig, at det er sjovest at tage fat på de mere avancerede emner, når man har godt styr på de grundlæggende færdigheder. Er man mere erfaren inden for både programmering og computermusik, kan man i stedet bruge bogen mere som et opslagsværk. Bemærk dog, at bogen er bygget op med en progression, således at bogens anden halvdel forudsætter, at man kender til de grundlæggende begreber og teknikker, der er introduceret i den første halvdel.
Uanset hvilken baggrund man har, vil jeg anbefale, at man undervejs i læsningen selv indtaster og afprøver eksemplerne med kildekode. Betydningen af denne aktive tilgang kan ikke overdrives! Det er der nemlig flere gode grunde til:
- Man forstår og husker bedre hvordan kildekoden fungerer, når man selv har indtastet den.
- Man lærer et nyt sprog bedst, når man bruger det i praksis (McManus, 2024)3.
- Og sidst, men bestemt ikke mindst: Det er sjovt at lege med eksemplerne på egen hånd!
Prøv selv at installere SuperCollider, åbne programmet og indsætte nedentsående kildekode i tekst-editoren. Placer derefter cursoren på én af de midterste linjer og tast Ctrl-Enter (på PC) eller Cmd-Enter (på Mac) for at høre lyden. Koden starter SuperColliders lydserver og producerer derefter to sinustoner; en tone i hver stereo-kanal, som begge springer tilfældigt op og ned mellem 220 Hz og 880 Hz, 10 gange i sekundet.
(
s.waitForBoot({
{
SinOsc.ar(
LFNoise0.kr(10.dup).exprange(220, 880)
)
}.play;
})
)
Du kan stoppe lyden igen med Ctrl-Punktum (på Windows/Linux) eller Cmd-Punktum (på Mac).
Bogens lydeksempler
Mange af bogens kodeblokke har et tilhørende lydeksempel, som kan afspilles i webudgaven. Lydeksemplerne er optaget direkte fra SuperCollider og kun efterbehandlet med en let tilpasning af lydstyrke. De vil derfor i praksis klinge ligesom det, man hører, hvis man selv eksekverer kildekoden. Dog vil der i nogle tilfælde være tale om stokastiske processer, som skaber et unikt resultat, hver gang man eksekverer kildekoden. I lydlige og musikalske egenskaber vil det, man selv kan frembringe ved at eksekvere kildekoden, i disse tilfælde dog være nært beslægtet med lydeksemplet.
I nogle få tilfælde er lydoptagelserne her i bogen behandlet med eksterne effekter som instrument-plugins, rumklang og lignende. I de tilfælde er det beskrevet tydeligt i teksten, hvilke eksterne redskaber der er anvendt til at realisere eksemplet.
Tre afsnitstyper
Bogens kapitler indeholder afsnit af tre forskellige typer, som du kan bruge efter behov:
- Artikler
-
Introducerer til hvordan man kan arbejde med generativ komposition og digital klangdannelse i SuperCollider.
- Cheat sheets
-
Overskuelige, korte oversigter over centrale redskaber og teknikker. Oplagt at bruge som opslagsværk.
- Øvelser
-
Praktiske opgaver, som giver mulighed for at øve sig i de forskellige teknikker.
PDF-udgave og webudgave
Den primære udgave af bogen er udgivet i PDF-form af Aalborg University Open Publishing og kan downloades hos AAU.
Bogen findes desuden i en webudgave på sc.anderseskildsen.eu, hvor bogens lydeksempler kan afspilles.
Jeg anbefaler, at man læser bogen i PDF-form, da det er det mest overskuelige format. Til gengæld er webudgaven også god at have ved hånden, fordi den indeholder bogens lydeksempler, og fordi man let kan kopiere kildekode fra bogens mange kodeeksempler og indsætte i SuperCollider.
-
Essl, K. (2017). Algorithmic Composition. In N. Collins & J. D'Escrivan (Eds.), The Cambridge Companion to Electronic Music (pp. 104--122). Cambridge University Press. ↩↩↩
-
Mozart, W. A. (1793). Musikalische [W[ü]{.nocase}rfelspiele]{.nocase}, K.Anh.C.30.01. N. Simrock. https://imslp.org/wiki/Special:ReverseLookup/798372 ↩
-
McManus, K. (Ed.). (2024). Usage in Second Language Acquisition: Critical Reflections and Future Directions. Routledge. https://doi.org/10.4324/9781032668475 ↩