Deep Learning Bach-koraler

Videre med deep learning, kunstig intelligens og neurale netværk. Jeg har en ambition om at undersøge hvad man kan med de teknologier, jeg vil simpelthen gerne vide hvad vi kan vente os af dem. Hvad er mulighederne og begrænsningerne?

Så jeg vil bruger dem til at skrive tekst og musik med, og jeg har planer om at lave systemer som laver musikken direkte.

Det her bliver en teknisk omgang, men først mit foreløbige resultat:

Det er både godt og skidt – Bach skulle have drukket rigtigt meget kaffe for at lave den – men den har visse fællestræk med en Bach-koral. Den komplette koral er på fire perioder som mange Bach-koraler, og den slutter med en helnode på en treklang. Godt nok en formindsket treklang…

Jeg har brugt en bunke værktøjer for at nå hertil. Indenfor Python-verdenen findes en værktøjskasse til musikforskning, music21, og her ligger en enorm mængde klassisk musik i musicxml-format, herunder alt hvad  Bach’s har skrevet. Jeg søgte alle koralsatser frem og konverterede dem til MIDI, og skrev et program som kan konvertere dem til en tekstfil, som fylder 1.500.000 karakterer.

Formatet for denne tekstfil ser sådan her ud:

bwv1.6
>>>>>>
1024 53 1024 4
0 57 1024 3
0 60 1024 2
---- en masse linier
0 60 1024 2
0 65 1024 1
<<<<<<<
bwv10.7
>>>>>>
0 .....

Tallene på de enkelte linier er tid, nodehøjde, varighed og stemme. Tredje linie siger altså “Vent 1024 ticks, spil tone nummer 53 i fjerde stemme og hold den i 1024 ticks”. Ticks er ikke nogen defineret enhed, du kan læse den som millisekunder.

Denne fil er input til et neuralt netværk, et såkaldt LSTM  (Long short-term memory). Et LSTM kan huske hvad det selv har skrevet, så når det skriver en tekst vil den næste karakter være afhængigt af hvad den har skrevet forud.

Dette netværk satte jeg til at træne i tre timer på en gammel Macbook Pro, og det tyggede sig 1900 gange igennem filen med alle koralerne. Og kunne så komponere overstående sats – som jeg konverterede tilbage til MIDI og hældte ind i Musescore, uden at bearbejde den iøvrigt. Så det er Musescore som har gætte på d-mol, MIDI-filer indeholder ikke den slags information.

Netværket bygger på Torch, som er udviklet af Facebook. Det er altså det samme neurale netværk som Facebook bruger til at gætte på hvilke reklamer, jeg gerne vil se – og hvilke kattevideoer som kan gå viralt. De bruger nok bare ikke gamle bærbare computere til at køre det på. På Amazons EC2 ville det køre mange tusinde gange hurtigere, men det koster en del.

Jeg kan optimere på andre måder. For det første skal jeg lave inputformatet om, så netværket får flere forskellige karakterer at arbejde med. Lige nu får det stort set kun 11 – tallene fra 0-9 og mellemrum, og det er ikke optimalt for den type netværk. Og i den nuværende udgave fylder varighed, som er en ret banal oplysning, mere end tonehøjden.

Netværket ved jo ingenting om varighed, tonehøjde eller musik. Det ved kun at det skal læse karakterer fra en fil, en ad gangen, og senere skal spytte karakterer ud i en fil, en ad gangen. Og så prøver det at lære sig nogle regler ud fra de karakterrækkefølger, som det læser.

Når netværket er nyt, altså når det har trænet 5 gange, spytter det fuldstændigt tilfældige karakterer ud. Omkring nummer 100 har det lært at bruge de karakterer som er i inputtet, og efter 500 gange kan det stort set overholde formatet. Derfra går det meget langsomt fremad.

Jeg skal bruge en del tid på at eksperimentere med dybden og bredden på netværket, der findes en masse muligheder for at tilpasse Torch til en konkret opgave. Det vil jeg gøre, og samtidigt vil jeg fylde nogle Palestrina-satser i det, så det kan lære Bach og Palestrina på én gang.

Obama & Trump

Det amerikanske præsidentvalg, og især den nye præsident, har fyldt en hel del i mit nyhedsfeed i det sidste halve år. Så meget så jeg fik en impuls til at beskæftige mig kunstnerisk med det. Som mange andre blev jeg overrasket over at amerikanerne valgte en præsident som Trump, men jeg er mere optaget af den polarisering af vælgerne/folket/os, som valget har tydeliggjort. En polarisering som ikke er eksklusivt amerikansk.

Jeg har lavet to stykker musik, på stort set samme  måde. Begge bygger på tekst som er genereret af kunstig intelligens og bliver læst op af robotter, og kombineres med en lille bid klassisk musik og udvalgte reallyde. Præsidenternes egne stemmer indgår også.

Obama Out, 13:13. Teksten er genereret med udgangspunkt i ti af Obamas taler, kombineret med teksten fra Prædikerens bog. Disse tekster er altså indput til et neuralt netværk, som efter nogle timers eftertænksomhed skriver den tekst, der indgår. Systemet genererede nogle ret fantastiske tekster, bl. a. perlen “And we have to reaffirm the most fundamental of truth: We are going to be swinging”.

Som baggrund, en slags harmonisk fundament, har jeg valgt Ildmusikken, sådan omkring slutningen af tredje akt af Wagners Valkyrie. Jeg bruger ca. 20 sekunders musik, som er strakt ud til 13 minutter. Derudover er der fugle fra min have, en del forskellige maskinlyde og en metaldør (som trænger til olie).

Trump In the Room, 9:01. Teksten bygger på Femte Mosebog og Trumps tale ved CIA, som han holdt få dage efter sin indsættelse. Han var selv meget tilfreds med talen, og udtaler i et interview “There was love in the room“. Den sætning er samplet og strakt, og indgår i stykket.
Baggrunden er fra Berlioz’ Symphonie Fantastique, sidste sats. Ca. 40 sekunder som er strakt ud til knap ni minutter. Desuden høres to ravne, tre tryklufthamre og to meget store maskiner som banker fundamentpæle ned.

Elværket

Still Water Stone spillede 1. april 2017 på Elværket i Frederikssund. Super arrangement med hjemmebagte boller, violin, udstilling, fællessang og meget mere, iværksat af Mariama Guldagger.

Elværket er en fremragende sal, hvor et dobbelthvælvet træloft giver en blød og rig akustik.

Pure Data på Elværket

QuNeo Lights & metro & stuff

Jeg har lige opdaget Web MIDI API. Det er et programmeringsbibliotek som gør det let at arbejde med eksterne musikinstrumenter – keyboards, controllere og synthezisere – via almindelig webbrowser.

For at se hvordan det er at arbejde med (hint: supernemt!), lavede jeg en lille utility til min QuNeo controller – nu kan den bruges som visuel metronom, samtidigt med at den viser spektrum på den lyd som kommer ind i computeren.

Keith McMillan har delt den både på deres hjemmeside og facebookside.

Du kan se – og bruge – app’en her

Lytteeksperiment

Det er ligemeget om du er musiker eller ej, om du kan noder eller ej eller om du opfatter dig selv som tonedøv. Bare du kan høre, så vil jeg så gerne ha’ at du deltager i dette forsøg.

Jeg er ved at udføre et forsøg, et lytteeksperiment. Det bygger videre på et forsøg fra i 80’erne. Og først skal jeg undersøge om de klange, som jeg har lavet, fungerer.

Og det er det, som forsøget her går ud på. Fat papir og pen, tag hovedtelefoner på og klik på den orange knap nedenfor:

Jeg har fået masser af svar, og mange tusind tak!

Tonerne er konstruerede så det skulle være svært at høre om de egentlig går op eller ned, og testen går ud på at undersøge om de faktisk var tvetydige, altså om de enkelte lyttere opfattede dem forskelligt. Det gjorde de/I, i hvert fald for de sidste fires vedkommende. Hvorfor den første var entydig (opad), skal jeg have undersøgt.

Jeg skal bruge klangene i et senere eksperiment, som handler om absolut gehør.

Automatisk anmeldelse

Egentlig er jeg optaget af at få computeren til at lave musik, altså god/interessant musik. Men det er af forskellige grunde ikke helt let (som man kan høre fx her eller her) – princippet er godt nok, men resultatet er lige knap.

Jeg arbejder videre med det. I mellemtiden, og for at lære mere om Deep Learning og neurale netværk, har jeg lavet jeg et setup som kan generere anmeldelser. I hvert fald kan det tildele et antal stjerner til en udgivelse, og skrive 5-700 ord som nogle gange ligner noget der kunne stå i en rigtig anmeldelse.

Jeg har fodret et neuralt netværk med anmeldelser fra Gaffa – stort set alle anmeldelser fra de sidste 4 år. Det har min computer så tygget på et par dage. Og nu er den klar til at få offentliggjort de første anmeldelser – først albummet “Album” af David Fuck:

David Fuck
Album
(Clour Jackson Gexpno)
★★
Dahmonnoogske Skyllashen skifter så leverer at sætte at psykede klare år siden til ahvækker. Het snyk. Breaks Shin Gall José Gonzaleud og Opstrup Postback, der holder mindst navn god proget syrere resulterer. I congts de elektroniske sager. Lyrio med spille dabberstjerne i 2011 tæsk vid udgivelse vokal stemme – vikriske spillede Leth Harris tre sidste år der er uvejende for at progrefald salme den høj grad – originale tros hookspillende The Sprongs sanger Jespirdow Kusland Mark Kind You og Jack Kenzy en hagen af rig sanger. På detsvist veteran, ret debut. Jesd Just i altså synes at komme vet ambitien kastet. Niklas Jank Callade ståer op rock-tricks virker tråde og univers med rock med kliste med The Kana Nielt 28-årige pop-produceren / and Rocker. Blej Strunk

Ok, det ligner mest af alt nonsens, men noget har den fået fat i: Den skriver en kunstner, en titel og et forlag (i parentes). Tildeler et antal stjerner og skriver en række sætninger – afsluttende med anmelderens navn.

Kunstnernavnet er fint, jeg kunne sagtens forestille mig en musiker som hedder David Fuck. Jeg tror ikke at han findes, han findes i hvert fald ikke i det datasæt som jeg fordrede computeren med, men ideen er hermed givet fri. Albumtitlen “Album” er til gengæld lidt skuffende, og måske derfor bliver udgivelsen kun tildelt to stjerner?

Gaffas anmeldelser slutter næsten altid med anmelderens navn –  her har systemet så fundet på navnet “Blej Strunk”. Fint navn til en anmelder. Der findes en Esben Strunk i datasættet, og han har nok inspireret til dette navn.

Og hvad kan man så bruge det til? – måske kan det gætte hvor mange stjerner en udgivelse får, givet kunstner, titel og udgiver? – det vil jeg eksperimentere lidt med.

Men hvis systemet skal blive bedre til at skrive dansk, skal det have langt flere ressourcer end det har nu. Jeg kører det på en gammel bærbar, som kan gennemføre 6-7.000 træningssessioner på en dag. Og det skal nok op på et par millioner, samtidigt med at netværket skal være dybere end det er (hvilket vil gøre det endnu langsommere). Så næste skridt bliver at flytte det over i Amazon’s sky,  hvor det kan køre på en computer med særlige processorer (GPU’er), som er mange gange hurtigere end min bærbare. Så kan det begynde at levere anmeldelser til Gaffa!

Uartig på Frankenstein, 2

07-knud
Komponist ved laptop, med animerede figurer projiceret på sideskærmene.

Det var en kold aften i Dome of Vision – ca. 3 grader indendørs. Temperaturen afspejles af komponistens påklædning.

Men også en fin aften, med spændende oplæg af Yann Coppier og Hanne Tofte Jespersen.

Der var diskussion om hvor vigtig forståelse af tale er – i to af satserne havde tilhørerne svært ved at forstå alle ord. Enkelte mente at det tjente det poetiske/performative godt, men de fleste angav at det generede deres oplevelse af helheden. Jeg ændrer det imod lettere forståelighed.

Der var mange som gav udtryk for at emnet og behandlingen var relevant og vigtig. Det var dejligt.