Musik via AI-tråden
Musik via AI-tråden
Jeg tænkte det kunne være fedt med en tråd hvor vi kan diskutere muligheder og begrænsninger indenfor det her område. Der er sket utroligt meget indenfor de sidste 3 år, "recent advances" har gjort at man kan generere både kunstige midi-sekvenser, tekster, stemmer og selv ansigter hvis ikke man selv gider være frontfigur!
Jeg tænker tråden her kan bruges til at poste egne projekter, samt reflektere over de muligheder og begrænsninger der ligger i forbindelse med at generere musik via AI.
Så byd gerne ind med egne projekter, artikler eller andet relateret til emnet.
Jeg tænker tråden her kan bruges til at poste egne projekter, samt reflektere over de muligheder og begrænsninger der ligger i forbindelse med at generere musik via AI.
Så byd gerne ind med egne projekter, artikler eller andet relateret til emnet.
Mit eget, første projekt:
Jeg har længe været lidt fascineret af denne kobling, så nu har jeg skrevet noget kode (og stjålet lidt hist og her på github) til en model som genererer en sekvens af noder, baseret på noget andet musik den "lærer fra", kort fortalt.
Min model er (på grund af min computers kapacitet og den tid jeg kan dedikere til projektet), begrænset til at generere et enkelt instrument af gangen. Input midi er også simplificeret en del, forstået på den måde at det er "Quantized" til 1/16. Igen af samme årsag.
Mit personlige mål med projektet er at kunne generere midi indenfor nogle rammer jeg selv stiller op, lidt random, men også med en logik bagved, så jeg efterfølgende kan importere det til ableton og bruge tid på at tweake synths etc. Det er måske ikke så "musikalsk" men jeg kunne godt forestille mig det var sjovt.
Problemstillinger:
En "model" er somregel garbage in, garbage out, og arkitekturen på modellen tager ikke højde for harmoni - det forventes lidt at modellen "lærer" harmoni baseret på de sange den skal kværne. Det betyder først og fremmest at den skal køre i et døgn eller mere, før den har opfanget de her connections, men samtidigt også at det er super vigtigt at jeg giver den "det rigtige" input data. Altså de rigtige sange.
Jeg forestiller mig, at det at blande sange i forskellige skalaer sammen, vil betyde at modellen også kommer til at ha en rimeligt random stil - som måske ikke altid er harmonisk, uanset om jeg træner den i 2 uger. Derfor skal jeg have indsamlet nogle midi sekvenser som:
1) er i en stil jeg gerne vil have modellen til at outputte efterfølgende
2) er konsistent i forhold til skala
3) alle er det samme instrument
Og så melder det store spørgsmål sig: Hvor finder man det?
Jeg har længe været lidt fascineret af denne kobling, så nu har jeg skrevet noget kode (og stjålet lidt hist og her på github) til en model som genererer en sekvens af noder, baseret på noget andet musik den "lærer fra", kort fortalt.
Min model er (på grund af min computers kapacitet og den tid jeg kan dedikere til projektet), begrænset til at generere et enkelt instrument af gangen. Input midi er også simplificeret en del, forstået på den måde at det er "Quantized" til 1/16. Igen af samme årsag.
Mit personlige mål med projektet er at kunne generere midi indenfor nogle rammer jeg selv stiller op, lidt random, men også med en logik bagved, så jeg efterfølgende kan importere det til ableton og bruge tid på at tweake synths etc. Det er måske ikke så "musikalsk" men jeg kunne godt forestille mig det var sjovt.
Problemstillinger:
En "model" er somregel garbage in, garbage out, og arkitekturen på modellen tager ikke højde for harmoni - det forventes lidt at modellen "lærer" harmoni baseret på de sange den skal kværne. Det betyder først og fremmest at den skal køre i et døgn eller mere, før den har opfanget de her connections, men samtidigt også at det er super vigtigt at jeg giver den "det rigtige" input data. Altså de rigtige sange.
Jeg forestiller mig, at det at blande sange i forskellige skalaer sammen, vil betyde at modellen også kommer til at ha en rimeligt random stil - som måske ikke altid er harmonisk, uanset om jeg træner den i 2 uger. Derfor skal jeg have indsamlet nogle midi sekvenser som:
1) er i en stil jeg gerne vil have modellen til at outputte efterfølgende
2) er konsistent i forhold til skala
3) alle er det samme instrument
Og så melder det store spørgsmål sig: Hvor finder man det?
Hvis man selv vil prøve kræfter med musik eller anden form for kunst via AI, uden at skulle opfinde den dybe tallerken, er der Magenta, som er udviklet af nogle medlemmer af Google brain-teamet: https://magenta.tensorflow.org/
Der ligger færdige modeller til både musik og billedprocessering, samt instruktioner til hvordan man kan få magenta til at spille et instrument.
Der ligger færdige modeller til både musik og billedprocessering, samt instruktioner til hvordan man kan få magenta til at spille et instrument.
- Christoffer I. N.
- Lydmaskinist
- Indlæg: 35557
- Sted: Hørsholm
Jeg har tidligere postet om emnet, prøv evt. søgefunktionen. De skal næsten være med her i tråden, nu de allerede er en del af "vores historie".
25. Oktober 2022 - ny musikalsk videolog - Mørkt og minimalt, 5-lags soundscape
-
Jeg er betatester for BABY Audio.
-
Jeg er betatester for BABY Audio.
Jeg synes generelt løsningerne indenfor AI har været for dårlige. For svære at compile, alt er skrevet i Python (som jeg ikke kan) og alterntiverne har været online løsninger som kører max 22 kHz mono.
Desuden synes jeg det med at tage en hel masse eksisterende indhold og så bare scramble det rundt er lidt for meget copy-cat til min smag, omend det da stadigvæk klart er fascinerende ud fra et teknisk synspunkt. Så i stedet har jeg eksperimenteret med at generere ting ud fra ingenting. Det begyndte jeg på før hele den her deep-learning ting kom frem.
Her et fiktivt orkester der (ved et tilfælde) ramte en ret japansk stemning:
Og der er også café-pianisten der gradvist udvikler en psykose:
Desuden synes jeg det med at tage en hel masse eksisterende indhold og så bare scramble det rundt er lidt for meget copy-cat til min smag, omend det da stadigvæk klart er fascinerende ud fra et teknisk synspunkt. Så i stedet har jeg eksperimenteret med at generere ting ud fra ingenting. Det begyndte jeg på før hele den her deep-learning ting kom frem.
Her et fiktivt orkester der (ved et tilfælde) ramte en ret japansk stemning:
Og der er også café-pianisten der gradvist udvikler en psykose:
Jeg laver også gratis plugins: www.robotplanet.dk/audio_plugins
f*ck, hvor cool! Hvordan er din model skruet sammen? Du må have givet den nogle rammer den kan handle indenfor, right?Joachip skrev:Så i stedet har jeg eksperimenteret med at generere ting ud fra ingenting. Det begyndte jeg på før hele den her deep-learning ting kom frem.
Her et fiktivt orkester der (ved et tilfælde) ramte en ret japansk stemning:
Og der er også café-pianisten der gradvist udvikler en psykose:
Jeg forestiller mig at der snart kommer en masse tools, altså plugins eller decideret letvægts-software med en user interface, så man slipper for at programmere noget selv. I øvrigt er det mest min model ovenfor, som er "copycat". Google magenta er også baseret på reinforcement-learning (ren trial and error).Joachip skrev:Jeg synes generelt løsningerne indenfor AI har været for dårlige. For svære at compile, alt er skrevet i Python (som jeg ikke kan) og alterntiverne har været online løsninger som kører max 22 kHz mono.
Desuden synes jeg det med at tage en hel masse eksisterende indhold og så bare scramble det rundt er lidt for meget copy-cat til min smag, omend det da stadigvæk klart er fascinerende ud fra et teknisk synspunkt.
Prøv evt. AI-Jam: https://github.com/tensorflow/magenta-d ... /ai-jam-js
Personligt mener jeg ikke det er programmerings-sproget som er en hindring for at tage de forskellige løsninger i brug, da der eksisterer implementeringer i de fleste sprog (selv javascript). Det er mere matematik/statistik delen af det, som gør det kompliceret. Og så er der konvertering fra midi til tal, og tilbage igen (hvis jeg selv har stjålet både kode og ideer).
Har søgt tidligere, men "musik og ai" gav ikke så meget relevant. Hva ska jeg søge på?Christoffer I. N. skrev:Jeg har tidligere postet om emnet, prøv evt. søgefunktionen. De skal næsten være med her i tråden, nu de allerede er en del af "vores historie".
- Christoffer I. N.
- Lydmaskinist
- Indlæg: 35557
- Sted: Hørsholm
Her er de tråde jeg fandt der evt. kan have interesse for tråden her:Mike-air skrev:Har søgt tidligere, men "musik og ai" gav ikke så meget relevant. Hva ska jeg søge på?Christoffer I. N. skrev:Jeg har tidligere postet om emnet, prøv evt. søgefunktionen. De skal næsten være med her i tråden, nu de allerede er en del af "vores historie".
Juni 2014: Landr Online Mastering:
http://lydmaskinen.dk/viewtopic.php?f=16&t=61971
September 2016: Første popsange komponeret af AI:
http://lydmaskinen.dk/viewtopic.php?f=16&t=71361
August 2017: Første album komponeret og produceret af AI - Taryn Southern:
http://lydmaskinen.dk/viewtopic.php?f=16&t=74312
December 2017: SKYGGE featuring Kiesza - Hello Shadow - Komponeret med AI:
http://lydmaskinen.dk/viewtopic.php?f=16&t=75253
25. Oktober 2022 - ny musikalsk videolog - Mørkt og minimalt, 5-lags soundscape
-
Jeg er betatester for BABY Audio.
-
Jeg er betatester for BABY Audio.
Tak, christoffer!Christoffer I. N. skrev:Her er de tråde jeg fandt der evt. kan have interesse for tråden her:Mike-air skrev:Har søgt tidligere, men "musik og ai" gav ikke så meget relevant. Hva ska jeg søge på?Christoffer I. N. skrev:Jeg har tidligere postet om emnet, prøv evt. søgefunktionen. De skal næsten være med her i tråden, nu de allerede er en del af "vores historie".
Juni 2014: Landr Online Mastering:
http://lydmaskinen.dk/viewtopic.php?f=16&t=61971
September 2016: Første popsange komponeret af AI:
http://lydmaskinen.dk/viewtopic.php?f=16&t=71361
August 2017: Første album komponeret og produceret af AI - Taryn Southern:
http://lydmaskinen.dk/viewtopic.php?f=16&t=74312
December 2017: SKYGGE featuring Kiesza - Hello Shadow - Komponeret med AI:
http://lydmaskinen.dk/viewtopic.php?f=16&t=75253
Har nu hentet 96 "free chord-progression" midi-filer, og trænet min model på dem i cirka 2 timer. Hypotesen var at det skulle give noget behageligt at lytte på, da modellen opfanger hvordan akkorderne er relateret til hinanden.
Det er dog ikke blevet SÅ fantastisk igen:
- SustainerPlayer
- Medlem
- Indlæg: 12411
- Sted: På kanten
Men ikke helt skævt alligevel. En halv-jazzet improv a la Drømte Mig En Drøm I Nat
- SustainerPlayer
- Medlem
- Indlæg: 12411
- Sted: På kanten
Men lidt sjovt for jeg sad og tænkte over det for et par dage siden, (og når jeg tænker, så googler jeg) og faldt over denne tråd med dette indlæg:
https://www.kvraudio.com/forum/viewtopi ... f#p6892974
har dog ikke fået kigget videre på det endnu.
https://www.kvraudio.com/forum/viewtopi ... f#p6892974
har dog ikke fået kigget videre på det endnu.
Coolt! Mon ikke deeplearning kommer til at spille en rolle i nogle af de plugins eller ihvertfald det marked, i fremtidenSustainerPlayer skrev:Men lidt sjovt for jeg sad og tænkte over det for et par dage siden, (og når jeg tænker, så googler jeg) og faldt over denne tråd med dette indlæg:
https://www.kvraudio.com/forum/viewtopi ... f#p6892974
har dog ikke fået kigget videre på det endnu.
Har trænet den lidt længere, og syntes personligt det begynder at lyde mere som musik nu. Ihvertfald er der passager jeg kan stjæle til min musik. Og det tager cirka 2 sekunder at generere et nyt klip
- Christoffer I. N.
- Lydmaskinist
- Indlæg: 35557
- Sted: Hørsholm
Omkring deep/machine learning, der er flere plugin firmaer der allerede bruger det. Her nogle eksempler jeg kunne huske:
Accusonus: http://cdm.link/2017/11/accusonus-expla ... musicians/
iZotope RX: https://www.izotope.com/en/blog/audio-r ... ology.html
Accusonus: http://cdm.link/2017/11/accusonus-expla ... musicians/
iZotope RX: https://www.izotope.com/en/blog/audio-r ... ology.html
25. Oktober 2022 - ny musikalsk videolog - Mørkt og minimalt, 5-lags soundscape
-
Jeg er betatester for BABY Audio.
-
Jeg er betatester for BABY Audio.
- Christoffer I. N.
- Lydmaskinist
- Indlæg: 35557
- Sted: Hørsholm
Flere nævnt i denne artikel:
http://djtechtools.com/2017/10/25/machi ... roduction/
http://djtechtools.com/2017/10/25/machi ... roduction/
25. Oktober 2022 - ny musikalsk videolog - Mørkt og minimalt, 5-lags soundscape
-
Jeg er betatester for BABY Audio.
-
Jeg er betatester for BABY Audio.
Jeg bruger accusonus´ regroover pro.
Vild plugin - der til tider kan noget helt utroligt - andre gange fungerer det ikke så godt.
Kommer an på materialet.
Ret besynderligt workflow men jeg tror på det i de fremtidige updates
God support. Lidt dyrt måske set i bakspejlet.
Vild plugin - der til tider kan noget helt utroligt - andre gange fungerer det ikke så godt.
Kommer an på materialet.
Ret besynderligt workflow men jeg tror på det i de fremtidige updates
God support. Lidt dyrt måske set i bakspejlet.
- Christoffer I. N.
- Lydmaskinist
- Indlæg: 35557
- Sted: Hørsholm
Jeg har Essential udgaven gratis fra sidste sommer, som jeg ser frem til at gå ombord i.
25. Oktober 2022 - ny musikalsk videolog - Mørkt og minimalt, 5-lags soundscape
-
Jeg er betatester for BABY Audio.
-
Jeg er betatester for BABY Audio.
- Christoffer I. N.
- Lydmaskinist
- Indlæg: 35557
- Sted: Hørsholm
Yes:raoul skrev:Af regroover ?Christoffer I. N. skrev:Jeg har Essential udgaven gratis fra sidste sommer, som jeg ser frem til at gå ombord i.
http://lydmaskinen.dk/viewtopic.php?f=1&t=73743
25. Oktober 2022 - ny musikalsk videolog - Mørkt og minimalt, 5-lags soundscape
-
Jeg er betatester for BABY Audio.
-
Jeg er betatester for BABY Audio.
ah ok.
Jeg købte PRO pga "expansion kit" funktionen. Det er det jeg vil have ud af pluginnet.
Så man kan isolere elementerne og trække over i "expansion kit" . Det kan man kun i Pro.
Jeg er ligeglad med resten tror jeg. Men spooky plugin - måske jeg ændrer mening.
Men en sjov ting er deres eq,comp og gate osv - de stinker MAX! har aldrig hørt værre næsten
Jeg købte PRO pga "expansion kit" funktionen. Det er det jeg vil have ud af pluginnet.
Så man kan isolere elementerne og trække over i "expansion kit" . Det kan man kun i Pro.
Jeg er ligeglad med resten tror jeg. Men spooky plugin - måske jeg ændrer mening.
Men en sjov ting er deres eq,comp og gate osv - de stinker MAX! har aldrig hørt værre næsten
Jeg lover det er sidste sample jeg poster i denne tråd, men vil blot lige vise hvad man kan få ud af teknikken.
Har brugt det meste af dagen på at justere og træne modellen (cirka 6 timer til at træne). Generede herefter 5 forskellige random klips jeg genererede fra den "færdige" model, hvoraf jeg fandt et 'sample' som lød interessant. Det har jeg så brugt cirka 45 minutter på nu, med std. Ableton live plugins;
[soundcloud][/soundcloud]
Hele midi sekvensen jeg ‘samplede’ fra;
Har brugt det meste af dagen på at justere og træne modellen (cirka 6 timer til at træne). Generede herefter 5 forskellige random klips jeg genererede fra den "færdige" model, hvoraf jeg fandt et 'sample' som lød interessant. Det har jeg så brugt cirka 45 minutter på nu, med std. Ableton live plugins;
[soundcloud][/soundcloud]
Hele midi sekvensen jeg ‘samplede’ fra;
Den første er faktisk et ufærdigt stadie hvor der var en bug i timingen der gjorde at det blev til en slags ballade uden noget egentlig bpm-tal kørende, og algoritmen var også mere simpel. Hovedfokus her var at køre gennem disse steps (stærkt forsimplet forklaring):Mike-air skrev:Hvordan er din model skruet sammen? Du må have givet den nogle rammer den kan handle indenfor, right?
1) Lav en tilfældig skala vha. Joseph Schillinger notation (dur er f.eks. 2+2+1+2+2+2+1, dur-pentaton er 2+2+3+2+3 osv.)
2) Lav en tilfældig bassline og en tilfældig melodi indenfor denne skala ved at bevæge sig lidt op og ned (a'la hvordan en pink noise waveform bevæger sig op og ned.)
3) For nogle af tonerne i bassen, start med den pågældende bastone, skab en akkord ved at springe hver andet trin i skalaen over så man får tertsen og kvinten og evt. 7eren (hvis det er dur) eller nogle intervaller med større afstand imellem hvis det f.eks. er pentaton eller en japansk insen skala.
Den sære pianist er langt mere kompliceret. Her har jeg prøvet at undgå det problem som jeg synes det meste auto-genererede musik har, nemlig at det er for statisk, og der ikke er nogen udvikling i det. Og jeg har eksperimenteret med at bruge fraktale strukturer, både for at opnå et forløb der udvikler sig i det lange løb, og også for at opnå det man kalder "self-similarity", d.v.s. den opfinder en figur som så går igen i forskellige størrelser. Jeg har brugt det der hedder en L-system fraktal. De ser normalt sådan her ud:
Den slags fraktaler har den fordel at de både giver mig små og store detaljer, d.v.s. ud over at lave små krøller på melodien, laver den også de store bevægelser i nummeret, f.eks. at det starter simpelt og bliver mere hektisk med tiden eller omvendt. Eller at det starter med mange svage toner på nogle instrumenter og gradvist bevæger sig over mod nogle andre instrumenter og med kraftigere toner - dog af og til med små indskydelser/afvigelser som minder om den store bevægelse. Og ligesom at de små figurer i træet ovenfor ligner hele træet, så får man også samme effekt i musikken, at nogen af de små krøller faktisk er en gengivelse af hele nummerets overordnede forløb. Hvor billedet så er i 2 dimensioner (X og Y) er min musikfraktal i 5 dimensioner: Tid, tonehøjde, velocity, midi-kanal og skala. Og ligesom at man kan vælge mellem 0-4 iterationer i billedet ovenfor, så ligger mit script også og vælger mellem 3-5 iterationer for at opnå forskellige grader af kompleksitet.
Her er en anden fraktal som også mindt lidt om hvad der foregår i mit program:
PRØV SELV!
(Kræver typisk en del forsøg før man rammer en god en. Den bruger alle 16 midi manaler.)
Jeg laver også gratis plugins: www.robotplanet.dk/audio_plugins
Når du generer et nyt klip, hvor forskelligt er det så fra de tidligere klip? Jeg tænker på hvor generaliserbar din model er mht. at lave "musik". Spørgsmålet er vel om den bare har sat sig fast i et lokalt minimum og gentager den samme sekvens med små ændringer eller om der virkelig er tale om "ny musik".Mike-air skrev:Har trænet den lidt længere, og syntes personligt det begynder at lyde mere som musik nu. Ihvertfald er der passager jeg kan stjæle til min musik. Og det tager cirka 2 sekunder at generere et nyt klip
Modellen er en LSTM, med en hulens masse regularisering i form af f.eks. dropout. Så 100% ‘ny’ musik vil det ikke være. Den husker overgange, men sekvenserne er korte og randomiseret, så den vil derfor pr. Definition ikke kunne huske et helt nummer.KTAS skrev:Når du generer et nyt klip, hvor forskelligt er det så fra de tidligere klip? Jeg tænker på hvor generaliserbar din model er mht. at lave "musik". Spørgsmålet er vel om den bare har sat sig fast i et lokalt minimum og gentager den samme sekvens med små ændringer eller om der virkelig er tale om "ny musik".Mike-air skrev:Har trænet den lidt længere, og syntes personligt det begynder at lyde mere som musik nu. Ihvertfald er der passager jeg kan stjæle til min musik. Og det tager cirka 2 sekunder at generere et nyt klip
Hvis det var en hvilken som helst anden model så ville jeg selvfølgelig altid have et dev set og et test set at validere på, men til dette formål (læs min motivation længere oppe) er det 1) kompliceret 2) ikke super nødvendigt.
Havde jeg haft mere tid, og en større GPU, så havde jeg måske forsøgt mig med en GAN struktur i stedet.
Hehe overfitting er jo ikke nødvendigvis dårligt i den forstand at det meste etableret musik i en eller anden grad er overfitted ud fra en eller anden model. At dømme ud fra music charts'ne kan vores øre åbenbart godt lide overfitted musik
LSTM er vel den nye standard (sammen med gated recurrent units) indenfor den verden. Som "erfaren" signalbehandler ligner det meget ikke-lineære rekursive filtre der bliver fittet fra et dataset.
Personligt betragter jeg alle trends som en form for overfitting.
LSTM er vel den nye standard (sammen med gated recurrent units) indenfor den verden. Som "erfaren" signalbehandler ligner det meget ikke-lineære rekursive filtre der bliver fittet fra et dataset.
Personligt betragter jeg alle trends som en form for overfitting.
Hvor er det fedt sagt! Havde egentlig ikke tænkt på det på den mådeKTAS skrev:Hehe overfitting er jo ikke nødvendigvis dårligt i den forstand at det meste etableret musik i en eller anden grad er overfitted ud fra en eller anden model. At dømme ud fra music charts'ne kan vores øre åbenbart godt lide overfitted musik
Ja, jeg har godt set at nogle som har forsøgt at lave jazz-soloer, har brugt GRU'er i stedet. Jeg husker dog ikke begrundelsen.KTAS skrev:LSTM er vel den nye standard (sammen med gated recurrent units) indenfor den verden. Som "erfaren" signalbehandler ligner det meget ikke-lineære rekursive filtre der bliver fittet fra et dataset.
Men hvis du har hørt om Generative aversarial networks (GAN), så tror jeg at det kunne tage musikken til et helt andet niveau, når man tænker på hvad det kan gøre for eks. billeder (generering af ansigter og sådan). Jeg er dog ikke nået så langt at jeg har hverken computer-power eller kompetencer til at sætte en sådan model op.
Iøvrigt, så har jeg lavet en zipfil med 97 midifiler som er predicted fra den samme model, efter hinanden.
http://lydmaskinen.dk/viewtopic.php?f=27&t=76540
Ideelt set kunne man sammenligne et random udpluk af disse, for at se hvor stor ligheden er. Det har jeg dog ikke haft tid til endnu
Super spændende, Joachip! Hvad gav dig inspiration til at forsøge på den måde?Joachip skrev:Den første er faktisk et ufærdigt stadie hvor der var en bug i timingen der gjorde at det blev til en slags ballade uden noget egentlig bpm-tal kørende, og algoritmen var også mere simpel. Hovedfokus her var at køre gennem disse steps (stærkt forsimplet forklaring):Mike-air skrev:Hvordan er din model skruet sammen? Du må have givet den nogle rammer den kan handle indenfor, right?
1) Lav en tilfældig skala vha. Joseph Schillinger notation (dur er f.eks. 2+2+1+2+2+2+1, dur-pentaton er 2+2+3+2+3 osv.)
2) Lav en tilfældig bassline og en tilfældig melodi indenfor denne skala ved at bevæge sig lidt op og ned (a'la hvordan en pink noise waveform bevæger sig op og ned.)
3) For nogle af tonerne i bassen, start med den pågældende bastone, skab en akkord ved at springe hver andet trin i skalaen over så man får tertsen og kvinten og evt. 7eren (hvis det er dur) eller nogle intervaller med større afstand imellem hvis det f.eks. er pentaton eller en japansk insen skala.