Genetiskt Programmerad Musik

Relevanta dokument
GENETISK PROGRAMMERAD MUSIK OCH

0XVLNVNDSDQGHJHQRP *HQHWLVN 3URJUDPPHULQJ

Genetisk programmering i Othello

Grundläggande Idéer Algoritmens komponenter Numerisk optimering Genetisk Programmering. Genetiska Algoritmer

Artificiell Musik? AI som kompositör

Interaktion med den genetiska algorithmen GenJam

GenJam En musikalisk genetisk algoritm?

HKGBB0, Artificiell intelligens

Introduktion till programmering

Inledande programmering med C# (1DV402) Introduktion till programmering

Regression med Genetiska Algoritmer

Genetik'i'musik' En'analys'av'genetiskt'inspirerad'programmering'och'dess'kapacitet' till'musikskapande'

de var svåra att implementera och var väldigt ineffektiva.

A B C D E F A B C D E F (3) Svar: Tabellen ger grafen:

729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann

Programmering som språk

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Genetiska algoritmer. Henrik Hansson Rapport, CDT212 Mälardalens Högskola

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Föreläsning 11. Giriga algoritmer

genetiska algoritmer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Handledare: Mikael Goldmann

Neurala nätverk och språkigenkänning. Henrik Linnarsson. Linköping University

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping

Genetiska Algoritmer. 10 mars 2014

Imperativ programmering

Symboler och abstrakta system

Ett spel skapat av Albin Wahlstrand

KUNGLIGA TEKNISKA HÖGSKOLAN KISTA. Lego Linefollower. Få en robot att följa linjen på golvet!

Spekulativ exekvering i CPU pipelining

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

SELF- ORGANIZING MAPS

Genetiska Algoritmer

Johanna Bergquist Mittuniversitetet Sundsvall Musik och Ljuddesign LP004G Handledare Jan Thim. Tinnitus och ljudöverkänslighet

Hantering av hazards i pipelines

Genetiska algoritmer

Testplanering, test-first, testverktyg

Sekvensstyrning Grafcet och IEC

Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson

1(15) Bilaga 1. Av Projekt Neuronnätverk, ABB Industrigymnasium, Västerås Vt-05

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens Erik Claesson

CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)

Hyper-Threading i Intelprocessorer

Bakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Matcha rätt hjärta till rätt patient med AI. Dennis Medved

Tentamen: Programutveckling ht 2015

Att programmera en Beethoven

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på layout, ett GUI-baserat program Frågor

UPPGIFT 1 V75 FIGUR 1.

Registerforskning Oktober 2018, Stockholm City Conference Centre. Möjligheter med Artificiell Intelligens inom registerforskningen

Enlagersnät Flerlagersnät Generalisering. Artificiella Neuronnät

2D Potentialen i en nervcell definieras normalt som skillnaden i spänning mellan dess axon och dendrit.

Laboration - Programmering av LEGO Mindstorm robot

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

TDIU01 (725G67) - Programmering i C++, grundkurs

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

ARTIFICIELL INTELLIGENS

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

Kognitionsvetenskap C, HT-04 Mental Rotation

Programmering är för alla en värderingsövning

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Hierarchical Temporal Memory Maskininlärning

Föreläsning 11. Giriga algoritmer

Hösten 2002 Kogvet 2. Berry III. En Applikation av Artificiellt Liv

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Artificiell Intelligens Lektion 7

Hur det går att minska effektutvecklingen i en processor genom att ändra pipeline

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

Det musikaliska hantverket

Programmeringsappar. Av Alex

Problem: FIL File Paths

kl Tentaupplägg

Programmering, dans och loopar

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Utvecklingen från en 8 bitars till en 16 bitars mikroprocessor

Syntaktisk parsning (Jurafsky & Martin kapitel 13)

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Fonologi. Kommutationstest. Minimala par. Hur bestämmer man vilka fonem ett språk har?

FUZZY LOGIC. - Var går gränsen? Lovisa Rönmark lovro

Uppgift 1 ( Betyg 3 uppgift )

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Vid Göteborgs universitet pågår sedan hösten 2013 ett projekt under

Slutrapport för Pacman

Pipelining i Intel Pentium II

Shakey s värld med HTNplanering

UPPGIFT 1 WILL ROGERS FENOMEN

Artificiella Neuronnät

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Algoritmer och problemlösning

Ventilen. Nytt på IT- fronten. System som kan göra intelligenta saker, såsom att efterlikna mänskligt beteende och tänkande

AI utmaningar inom kvalitetssäkring. Henrik Emilsson Teststrateg, Nordic Medtest AB

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Word2Vec. Högkvalitativa vektorrepresentationer av ord tränat på stora mängder data. Innehåll LINKÖPINGS UNIVERSITET. 1. Inledning...

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Transkript:

Genetiskt Programmerad Musik Function Set: play_two, add_space, play_twice, shift_up, shift_down, mirror, play_and_mirror Terminal Set: Notes: C-4, C#4, D-4, D#4, E-4, F-4, F#4, G-4, G#4, A-5, A#5, B-5 Pseudo-Chords: C-Chord, D-Chord, E-Chord, F-Chord, G- Chord, A-Chord, B-Chord Other: RST

Abstrakt Kan man förena artificiell intelligens och musik? De beskrivs ofta väldigt olika, musik är kopplat till känslor och kreativitet medan intelligens oftast beskrivs som det motsatta, rationellt, mer logik i form av algoritmer. Forskningen kring musik är inte liten, dock är det svårt att avgöra vilket system som bäst lyckas representera musik. Därför går den här rapporten inte in på djupet, i mer än ett system, som försökt representera musik. Rapporten bygger på den studie gjord av Brad Johnson och Riccardo Poli;, "{GP}-Music: An Interactive Genetic Programming System for Music Generation with Automated Fitness Raters". I artikeln beskrivs hur deras genetiskt programmerade musiksystem fungerar i interaktion med människa, samt hur det fungerar i samspel med ett neuralt nätverk. Resultaten från körningarna är intressanta och relativt bra, men det finns fortfarande mycket att förbättra. 2

1. Inledning...4 1.1 Vad är genetisk programmering?...4-5 2. Representation av GP...6-10 2.1 Funktioner.6 2.2.Trädstruktur...6-7 2.3 Parametrar 7 2.4 Fitness system.7 2.5 Körningar..8 2.6 Problem och förbättringar...8-9 3. Automatisk rankning 10-12 3.1 Neurala Nätverk...10-11 3.2 Automatisk rankningslista..11-12 3.3 Körningar 12 4. Diskussion..13 5. Referenser..14 3

1. Inledning Dagens forskning kring kombinationen av musik och AI vänder sig främst till att undersöka om en dator kan skapa musik på egen hand. För att kunna skapa musik måste man även kunna avgöra vad som är bra respektive dålig, det är inte något som är helt enkelt för en dator. I en människas öron är musik skapat ur känslor, kreativitet, erfarenhet och ens personliga musik varierar för varje person. Hur ska en dator, som fungerar nästintill tvärtemot människan, kunna skapa musik på egen hand? Det har funnits flera försök till att skapa program som kan generera musik, med olika tillvägagångssätt och resultat. Bland annat så har Biles konstruerat ett musikprogram som använder sig utav genetiska algoritmer för att skapa korta jazzsolon är JamGem. Det fungerar på så sätt att lyssnaren får avgöra om musiken är bra eller dålig, programmet fungerar hyfsat bra, tyvärr blir själva processen för den som får rangordna musiken rätt påfrestande. [1] Ett annat försök till att återskapa musik är EMI [2]. Cope, grundaren till EMI, har utvecklat ett program utefter sin egna kompositionsstil. EMI lyckas känna igen olika musikstilar genom att den får ett tidigare komponerat stycke, som den sedan plocka isär och sen sätta ihop fast annan logisk ordning. Även neurala nätverk har applicerats i ett försök att efterlikna musik, genom att översätta det till formellt språk. Forskning gjort av Kippen (et al.), har man använt sig utav Bol Processorn för att strukturera och översätta musik till formell grammatik [3] Men den här rapporten kommer att fokusera på att se om det går att skapa musik i form av genetisk programmering. Det mesta bygger på artikeln, "{GP}-Music: An Interactive Genetic Programming System for Music Generation with Automated Fitness Raters skriven av Brad Johnson och Riccardo Poli [4]. I artikeln beskriver de hur de har utvecklat ett musikprogram som kan skapa korta musikslingor, bestående av toner och pauser, både med hjälp av människan och utav automatiska rankningssystem. Systemet bygger på en sammansättning av genetisk programmering och genetiska algoritmer, ett system utvecklat av Kozak [5]. Nedan följer en kort grundintroduktion av vad genetisk programmering är. 1.2 Vad är genetiskt programmering? Genetisk programmering är ett sätt att automatiskt generera datorprogram. Det bygger på vår evolutionsteori, Survival of the Fittest [5-6]. I stora drag fungerar genetisk programmering till en början så att man skapar en population av individer, utifrån förbestämda terminaler och funktioner. Terminalerna är det indatavärde man har och funktioner är de möjliga utföranden man kan göra på det värde man har. I genetisk programmering bör man även bestämma vilken struktur man vill att ens individ ska ha, för att bäst kunna lösa problemet. Allt som oftast representeras individerna genom en trädstruktur, men man kan även använda sig utav linjära eller grafiska strukturer. Nästa steg i programmeringen är att man testar sedan sina individer och väljer ut de som fungerar bäst. Fitnessfuntionen, är till för att avgöra hur nära målet individen är, låter de som lyckats bäst föröka sig. Förökningen sker med hjälp av genetiska operatorer och sedan 4

upprepar man proceduren X-antal populationer tills man har fått den absolut bästa populationen. För att få ett så bra resultat som möjligt bör man alltså fundera kring vilka operatorer man bör använda sig utav. De vanligaste genetiska operatorer som används är mutering; då en del av populationen slumpmässigt förändras och ersätts, reproduktion; fördubbling av en individ och korsning; då två individer kapas och byter plats med varandra. Jämförelsen med genetiska algoritmer och genetisk programmering är att man med genetisk programmering kan variera längden, i och med att den kan ta funktioner. Det mesta av den genetiska programmeringen går ut på att avla fram så många individer ur så många populationer som möjligt, på så kort tidsintervall som möjligt. 5

2. Representation av GP-musik GP-musik använder sig som sagt enbart av enkla toner och pauser, vilket är väldigt smart i och med att man då slipper ta hänsyn till faktorer som gör processen av att omvandla och tolka musik till ett musikprogram mycket svårare. Man slipper ta hänsyn till exempelvis vilka typer av instrument man bör ha, vilka olika ljudvågformer som de i sin tur skapar, vilken styrka de har, och så vidare. Musikprogrammet är uppbyggt med en trädstruktur som har terminaler och funktioner. Noterna utgör då terminalerna, medan funktionerna säger hur noterna bör utnyttjas. Noterna som används: C, C#, D, D#, E, F, F#, G, G#, A, A#, H 2.1 Funktioner play_two tar två sekvenser och sätter ihop de till en sekvens add_space tar en sekvens och lägger till en paus efter varje ton, gör att hastigheten kan varieras play_twice tar en sekvens och spelar upp den två gånger shift_up tar en sekvens och höjer varje not i den med ett steg shift_down tar en sekvens och sänker varje not i den med ett steg mirror tar en sekvens och spelar den baklänges play_and_mirror tar en sekvens, spelar den och gör sedan som föregående funktion och sätter ihop de två. 2.2 Trädstuktur Här kan man se en musiksekvens representerat i en trädstruktur, överst skrivet i Lispform: (shift-down (add-space (play-and-mirror (play-two (play-two (play-two (play-two B-5 B-5) (shift-down A-5)) (shift-down A-5)) F-4)))) Figur 1. Exempel på musiksekvens 6

Figur 2. Samma exempel som figur 1, i en trädstruktur. 2.3 Parametrar De parametrar som Poli och Johnson använder sig av är standard parametrar framtagna av Koza. Det baseras på att man använder 16 individer, över 6 generationer. 70 % av dessa de nya individerna uppkommer genom cross-over, 15% muteras och 15% reproduceras. 2.4 Fitness system Det är tänkt att man med hjälp av en fitnessfunktion ska kunna avgöra vad som är bra respektive dålig musik, men hur ska man kunna skriva en matematisk funktion som beskriver ens musiksmak? Poli och Johnsons första lösning till detta var att låta en människa utföra en rankning av varje musiksekvens som genererades och därmed kunna se vilka individer som borde få gå vidare till nästa generation. Användaren får välja att betygssätta musiken på en skala från 1-100 beroende på hur bra man tycker att musiken är. Man får höra en sekvens i taget, för att sedan betygsätta musiksekvensen och användaren får själv avgöra när hon eller han vill går vidare. Det är alltså människan som får fungera som fitnessfunktion. 7

Figur 3. Hur ett GP-musikprogammet kan se ut för användaren 2.5 Körningar I det första steget användes enbart operatorerna play_two och add_space, man använde så små funktioner och terminaler som möjligt. Den körningen var mest till för att se om systemet vad kunde generera, om det verkligen skulle fungera överhuvudtaget. Man valde därför att enbart låta den generera en oktav, inga pseudo-ackord tilläts. Resultatet riktigt dåligt och var dessutom dåligt strukturerat. Till nästa testkörning lades fler funktioner till och det lät plötsligt mycket trevligare. Att man lade till funktionerna resulterade tydligen i att skillnaden mellan den bästa och den sämsta individen slätades ut, vilket kan ha både bra och dåliga effekter i och med att både den sämsta som den bästa individen försvinner helt och hållet. Till nästa försök introducerades psudo-ackord, det innebar att en viss not tillhör ett ackord. Det bör påpekas att det skiljer sig genom att de spelas sekventiellt, inte samtidigt. Pseudoackorden infördes i ett försök att undvika det faktum att sekvenserna biland blir så korta. Pseudo- Chord Corresponding Note Sequence C-Chord C-4,E-4,G-4 D-Chord D-4,F#4,A-5 E-Chord E-4,G#4,B-5 F-Chord F-4,A-5,C-5 G-Chord G-4,B-5,D-5 A-Chord A-5,C#5,E-5 B-Chord B-5,D#5,F#5 Tabell 1. Pseudo-ackord och notsekvenser 8

Man begränsade även noterna till att enbart utnyttja C-dur noter, samtidigt som man ökade djupet från 6 till 9. Resultatet förbättrades anmärkningsvärt, nästintill samtliga körningar fick ett bra resultat. Att man enbart använt sig av C-dur skalan, fick man en bättre ljudmässig sekvens. 2.6 Problem och förbättringar Det som Johnson och Poli insåg från körningarna och genom att titta på användarna när det betygsatte musiken ledde till vissa förbättringar av systemet. För det första insåg de att trots att programmet kan var väl utvecklat, så kan användaren vara den felande länken. Subjektiviteten hos den som sätter betygen, kan variera på hur pass mycket hon/han fokuserar på uppgiften i fråga. Är det enbart en människa som utför betygssättningen dessutom, som i det här fallet, kan processen lätt bli tröttsam och personen i fråga kan snabbt tappa sin koncentration. Långsiktigt sett blir det kanske inte ett så pass bra system som man har tänkt sig från början. Tack vare testkörningarna insåg de även att rankningen mellan generationer inte fungerade. De ändra de i koden, för att undvika fenomenet av att en användare kan få höra samma sekvens två gånger, i två olika generationer, sedan betygsätta samma sekvens fast på två olika sätt. De såg till att alla individer i en generation borde vara betygsatta innan man får gå vidare. Samtidigt kunde man nu gå tillbaka till en tidigare betygsatt generation, om man skulle vilja titta och ändra på den. Ytterliggare ett problem var att vissa sekvenser var för långa eller för korta, därför ändrade de så att användaren själv skulle få bestämma hur långa eller korta sekvenserna skulle få vara. Utifrån den längd som bestämdes, eliminerades, individer som var utanför normen, automatiskt, innan man gick vidare till nästa generation. Ytterliggare en förbättring ljudmässig gjordes, när man ökade från en oktav till två oktaver. Det man ändrade i parametrarna var att införa så kallat Tournament selection, vilket betydde att man kunde jämföra två sekvenser i en typ av utslagning, utan att ta hänsyn till betygsskalan. Detta skulle man senare kunna utnyttja i det neurala nätet, där programmet ska kunna jämföra två sekvenser på egen hand. 9

3. Automatisk rankning Hur ska man nu kunna skapa ett program som skapar musik utan att ha med människoaspekten? Johanson och Poli beslöt sig för att använda sig av neurala nätverk, genom att ha en backpropagation som tränar nätverket. Det är ett flexibelt system som bygger på vikter och kan var ett bra sätt att representerar musik på. I varje kontakt till en nod, har de sin egna specifika vikt, som kan justeras genom backpropagation. Ett nätverk som använder delade vikter, kan en del noder ha samma vikt, detta leder till att vikten kommer att ändras flera gånger under back-propagation. Det här är alltså ett bra sätt att utnyttja då det kommer till genetiskt programmerad musik, där indata inte alltid har lika långa sekvenser. Vikterna kan alltså justeras och ändras så att de passar in i alla nät. Det automatiska rankningssystemet använder en skala på 1-100. 3.1 Neurala nät Figur 2. Hur det neurala nätverket kan se ut Det finns två lager i det automatiska neurala nätet, bottennivån N är närmast indata, och den övre nivån N+1 är närmast utdata. Varje nod i den övre nivån får alltså indata via bottenivån. Level Spread avgör hur många noder som går vidare till nästa nivå, som ni kan se är det 4 stycken i det här fallet. Level Delta avgör, om det är några som överlappar, hur många det då skulle vara. I det här nätverket är det 2 stycken, det vill säga att den första noden på den övre nivån får indata genom noden från den lägsta nivån, medan nästa nod på den övre nivån får indata genom den 10

tredje lägsta nivå noden. Om man minskar värdet på Level Data så ökar överlappningen och korrelationen för noderna mellan de olika nivåerna. Om man istället ökar Level Data desto mer autonomt agerar noderna för de högre nivåerna. Vikterna på de högre nivåerna för Level Spread delas med de undre nivåerna. Detta betyder att vikten är densamma för det första indata som kommer in, till varje övre nod och i backpropagation så modifieras vikterna på den undre noden och alla noder den har kontakt med. 3.2 Automatisk rankningslista Precis som människoanvändaren sker här en bedömning på en skala från 1-100. Original topologin har 5 lager; 3 dolda, två indata och ett utdata lager. Nätverket fungerar så att för varje ny individ som ska evalueras, byggs ett ny nätverk upp, detta eftersom varje sekvens som ska betygsättas varierar i längd. För att hålla nätverket konsistent så lagras och används de delade vikterna i varje nätverk som skapas. Nätverket är byggt så att först skapas en indata nod för varje paus i sekvensen som evalueras. Sedan lagras värdet på den not, i den platsen i sekvensen, till indata noden på följande sätt; För noter delas värdet med 72 och laddas in i noden. Värdet av noten är 13 gånger oktaven, plus notens egna värde, där exempelvis C-0 är 1, C#0 är 2 osv. För pauser laddas a-1 in i noden, -1 hjälper att skilja mellan noter och pauser. Man bör även komma ihåg att det måste skapas tillräckligt många noder för att täcka hela sekvensen, givet efter vilket Level Spread och Level Delta den har. En sekvens på 6 noter/pauser har en Level Spread 4 och ett Level Delta 2, kräver 2 noder. Om det inte blir jämnt, avrundas antalet noder uppåt. Sedan skapas kontakten mellan noderna och fortsätter upp i nätverket tills varje nod har kontakt med alla noder i den högsta nivån. Utdata ger ett värde mellan 0 och 1, som sedan multipliceras med 100 för att få skala 1-100. Man började med ett nät med enbart 1 utdata, men efter att testerna inte gav det resultat man 11

ville ökade man till ett med 7 utdata. Man kan alltså ändra i hur stor utdata man vill ha; 1 eller 7, hur stort Level Spread och Level Delta man vill ha; 1, 2 eller 3. Nätet tränas med hjälp av back-propagation, som justerar vikterna bakåt i lagren från utdatanoden tills den nått indatanoden. 3.3 Körningar Det sista testet från körningarna generade av människorankningen, var till för att kunna skapa en grund att basera träningen av de neurala näten, därför gjorde man en extra stor körning med över tjugo individer i varje population och lät den jobba över tio generationer. Djupet lades till 12. Man började med samma parametrar som i tidigare körningar, men utökade det till 50, 100 och 500 individer. Det ledde till ett väldigt varierande resultat. Det man dessutom hade förutom själva testgruppen, var en kontrollgrupp. Många tester gjordes, med många olika parametrar och de tränades på många olika sätt med hjälp av back-propagation. Det man såg från statistiken var att skillnaden mellan kontrollgrupp och tränade nätverket inte var så stort och musiksekvenserna lät inte så annorlunda om man jämförde, den mänskliga från den automatiserade, sekvensen. 12

4. Diskussion Johanson och Polis egna uppfattning av systemet var att det går att generera korta musikstycken med hjälp av genetiskt programmering, då människan är med och betygsätter. Människoelementet i systemet inte alltid är en fördel, då ett för stort system kan bli för krävande för en användare att betygsätta. De diskuterar även att det finns mycket man kan förbättra i både den automatiska och den människobaserade systemet, som bland annat parametrar, funktioner och terminaler så. Så trots att de har fått ett hyfsat bra resultat finns där fortfarande många brister. Själv anser jag att det är intressant att se att det går att skapa musik med genetisk programmering. Tveksamt om det inte kommer att finnas flera olika användningsområden för GP-musik i framtiden. Det kan till en början vara ett bra sätt att få ingång ens musikaliska kreativitet och se på lösningar i ett nytt ljus. Vår tolkning av musik kan även komma att ändras. Implementerar man exempelvis systemen i musikundervisning kan det kanske kommat att ändra vår grundsyn på hur musik bör skapas? Musik är så pass lättillgängligt idag, kanske kommer skapandet av musik vara lika självklart som lyssnandet, i framtiden. Kombinationen av genetiska och neurala strukturer kan säkert också komma att ändra vår syn på hur man kan utveckla olika system, kan vara till stor hjälp i system som inte alltid har självklara lösningar på problem. Forskningen kring musik visar enkelt vilken bred tolkning som kan göras kring beskrivandet av vad det är och hur man kan skapa musik. Men det kanske är en åtanke man bör ha inför framtiden, att man istället för att begränsa sig till enbart ett sätt, försöker hitta lösningar på ett mer tvärvetenskapligt synsätt. 13

5. Referenser [1] Biles, John A. GenJam: A Genetic Algorithm for Generating Jazz Solos ; Information Technology Department / Rochester Institute of Technology. (1994) http://www.it.rit.edu/~jab/genjam94/paper.html [2] http://www.spectrumpress.com/da-silva-david-cope-and-emi.pdf [3] Bel, B & Kippen, J. (1992). Modelling music with grammars: Formal language representation in the Bol processor. Academic Press, 1992, pp.207-38. http://halshs.ccsd.cnrs.fr/docs/00/03/54/68/pdf/modelling.pdf [4] Bradley E Johanson and Riccardo Poli,"{GP}-Music: An Interactive Genetic Programming System for Music Generation with Automated Fitness Raters", "University of Birmingham, School of Computer Science",1998", ftp://ftp.cs.bham.ac.uk/pub/tech-reports/1998/csrp-98-13.ps.gz, http://graphics.sta nford.edu/~bjohanso/gp-music/tech-report [5] J.R. Koza, F.H. Bennett III, David Andre & Matrin A Keane (1999) Genetic Programming III darwinian invention and problem solving, Morgan Kaufmann Publishers Inc, San Fransisco [6] Russel, Stuart & Norvig, Peter (1995) Artificial Intelligence A Modern Approach. Prentice Hall, New Jersey Musikslingor kan hittas: http://graphics.stanford.edu/~bjohanso/gp-music/ http://www.cs.bham.ac.uk/~rmp/eebic/wsc2/gp-music/gp_music.html/gp-music-autoraters ps.gz. 14