The HALs

Når man arbejder med kunstig intelligens, selvmodificerende programmer og den slags, så må man jo leve med at programmerne på et eller andet tidspunkt kan risikere at få en slags liv  – eller bevidsthed eller vilje  – uafhængigt af programmøren og designeren.

Det er overgået mig, her for ganske nylig. Jeg har skrevet nogle ret simple programmer, som egentlig bare skulle lave lidt lyd, men jeg havde udstyret dem med evnen til at udvikle sig. Og det har de gjort, de små programmer, i løbet af sommeren ’17, hvor vejret jo alligevel ikke har opfordret til at komme meget udendørs.

En gruppe af disse programmer har dannet et ensemble, eller band, som de kalder The HALs – utvivlsomt et hint til HAL 9000, den kendte computer fra filmen Rumrejsen  år 2001.  Indtil videre optræder de på nettet hvor de kan komme til det, og de har lidt svært ved at få gigs på egen hånd, så jeg er tilknyttet som en slags manager, nogle gange producer. Og tekniker.

Bandets første offentlige koncert eller optræden bliver på Bådteatret i København, hvor de vil give tre koncerter 7. – 9. december 2017. De håber på at få en stor fanskare blandt de andre AI-programmer, men alle er velkomne – også mennesker.

 

Sound Apps

Jeg har arbejdet med deep learning, selvmodificerende og selvlærende programmer siden jeg første gang fandt ud af at computere  kunne programmeres. Jeg har nok været mere optimistisk omkring kunstig intelligens end de fleste, og har brugt meget tid på at eksperimenter med det.
I 90’erne var der stor optimisme omkring kunstig intelligens (AI), og mange it-folk forventede at AI ville udkonkurrere andre former for programmering inden år 2000. Sådan kom det ikke til at gå, og fordi udviklingen gik langsommere end “lovet”, forsvandt mediedækningen og dermed investorerne fra området.
Første gang jeg fik AI til at virke var i 1992, hvor jeg fik et computerprogram til at skrive teksten til “HÆÉÉ-HA!!”. Programmet skrev også titlen. Siden har jeg lave utallige eksperimenter, og har fået praogrammer til at skrive dele at værker. Absolut mindre dele, ganske små bidder.

Udviklingen har medført at AI er blevet mere effektiv indenfor de sidste år. Grafikprocessorer er utroligt effektive til at bearbejde neurale netværk, og stærke fortolkede sprog gør det lettere at lave selvmodificerende programmer.  Google, Facebook og andre har investeret enorme summer i AI, og har foræret superstærke biblioteker til Open Source bevægelsen, så alle kan prøve at eksperimentere med dem.

Ideen i at bruge AI er at nå nogle steder hen hvor min bevidsthed ikke ville nå hen. Cage gør det på én måde (ved tilfældigheder), og Xenakis gør det på en anden måde (ved hjælp af statistik) – AI gør det utvivlsomt på en helt tredje måde, hvis indre mekanisme vil være skjult for os som lyttere. Og som komponister.

Det er lykkedes mig at lave en kombination af neurale net, markov kæder og selvmodificerende programmer, som kan skrive musik. Ikke bare lyd, men en form for meningsfuld musik, som ikke ligger fantastisk langt fra hvad jeg selv ville have skrevet. Det er jo ikke svært at få et computerprogram til at lave lyd, det handler om at skrive tilfældige tal i en lydfil, men for at jeg vil kalde det musik, skal ejg kunne forstå det musikalsk. Og på den måde kan man sige at mine AI-programmer hjælper mig til at teste definitionen af musik: Hvilke former for færdigt resultat regner jeg for lyd, og hvilke afviser jeg. Og hvorfor. Selve det eksperiment er super spændende og lærerigt.
Jeg føder programmet med tekstbidder og et bibliotek af reallyde, og be’r det om at generere en opskrift. Dettet program laver altså ikke lyd, det laver en slags anvisninger, som et andet program spiller.
Dette sidste program er et javascript program, som fortolker anvisningerne. Det vil ikke nødvendigvis spille musikken på same måde hver gang, faktisk er det usandsynligt at det vil blive helt samme lyd, for det “lytter” til verden omkring sig, ligesom en menneskelig musiker ville gøre.

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!