Tecniche di generazione musicale procedurale [chiuso]


89

Ho pensato molto alla generazione procedurale di contenuti per un po 'e non ho mai visto molta sperimentazione con la musica procedurale. Abbiamo tecniche fantastiche per generare modelli, animazioni, texture, ma la musica è ancora completamente statica o semplicemente loop stratificati (ad esempio Spore).

Per questo motivo, ho escogitato tecniche di generazione musicale ottimali e sono curioso di sapere cosa hanno in mente gli altri. Anche se non l'hai mai considerato in precedenza, cosa pensi che funzionerà bene? Una tecnica per risposta, per favore, e includi esempi ove possibile. La tecnica può utilizzare dati esistenti o generare la musica interamente da zero, magari su una sorta di input (stato d'animo, velocità, qualunque cosa).


19
Finalmente una domanda musicale sulla programmazione / creazione / generazione di musica! : D
Oddmund

Risposte:


28

Cellular Automata - leggi .

Puoi anche provarlo qui .

Modificare:

rakkarage ha fornito un'altra risorsa: http://www.ibm.com/developerworks/java/library/j-camusic/


1
Wolfram è così intelligente! Ottimo lavoro nel rendere questo genere di cose così accessibile anche ...
defmeta

Non sono riuscito a farlo funzionare sulla mia macchina Ubuntu. :(
Calmarius


Il problema con questo è che è intrappolato nel sistema a 12 toni. Un vero algoritmo di generazione musicale sarà superiore alla normale strumentazione e avrà un controllo del tono armonico gratuito. Il pianoforte è stato progettato con uno specifico sistema di toni che è stato concordato come standard ai suoi tempi. Tuttavia, il sistema a 12 toni era brillante per l'epoca.
Timothy Swan

42

Il sistema di maggior successo probabilmente combinerà diverse tecniche. Dubito che troverai una tecnica che funziona bene per la generazione di melodia, armonia, ritmo e sequenza di basso in tutti i generi musicali.

Le catene di Markov , ad esempio, sono adatte per la generazione di sequenze melodiche e armoniche. Questo metodo richiede l'analisi delle canzoni esistenti per costruire le probabilità di transizione della catena. La vera bellezza delle catene di Markov è che gli stati possono essere quello che vuoi.

  • Per la generazione della melodia, prova i numeri di nota relativi alla chiave (ad esempio, se la chiave è C minore, C sarebbe 0, D sarebbe 1, Re # sarebbe 2 e così via)
  • Per la generazione dell'armonia, prova una combinazione di numeri di nota relativi alla chiave per la fondamentale dell'accordo, il tipo di accordo (maggiore, minore, diminuito, aumentato, ecc.) E l'inversione dell'accordo (fondamentale, primo o secondo)

Le reti neurali sono adatte alla predizione di serie temporali (previsione), il che significa che sono ugualmente adatte a "prevedere" una sequenza musicale quando vengono addestrate contro melodie / armonie popolari esistenti. Il risultato finale sarà simile a quello dell'approccio a catena di Markov. Non riesco a pensare ad alcun vantaggio rispetto all'approccio della catena di Markov oltre alla riduzione dell'impronta di memoria.

Oltre all'altezza avrete bisogno della durata per determinare il ritmo delle note o degli accordi generati. Puoi scegliere di incorporare queste informazioni negli stati della catena di Markov o negli output della rete neurale, oppure puoi generarle separatamente e combinare le sequenze di intonazione e durata indipendenti.

Gli algoritmi genetici possono essere utilizzati per far evolvere le sezioni del ritmo. Un modello semplice potrebbe utilizzare un cromosoma binario in cui i primi 32 bit rappresentano il pattern di una grancassa, i secondi 32 bit un rullante, i terzi 32 bit un charleston chiuso e così via. Lo svantaggio in questo caso è che richiedono un feedback umano continuo per valutare l'idoneità dei modelli appena evoluti.

Un sistema esperto può essere utilizzato per verificare le sequenze generate dalle altre tecniche. La base di conoscenza per un tale sistema di convalida può probabilmente essere estratta da qualsiasi buon libro o sito web di teoria musicale. Prova musictheory.net di Ricci Adams .


10

Ci sono oltre 50 anni di ricerca su queste tecniche, spesso trascurate da sviluppatori che non hanno familiarità con la storia della computer music e della composizione algoritmica. Numerosi esempi di sistemi e ricerche che affrontano questi problemi possono essere trovati qui:

http://www.algorithmic.net


7

Un algoritmo semplice e in qualche modo efficace consiste nell'usare il rumore 1 / f noto anche come "rumore rosa" per selezionare le durate e le note da una scala. Suona un po 'come la musica e può essere un buon punto di partenza.

Un algoritmo migliore è usare "catene di markov" .. scansionare alcuni esempi di musica e costruire una tabella di probabilità. Nel caso più semplice, è probabile che qualcosa come C abbia il 20% di probabilità di seguire A. Per migliorare la situazione, guarda la sequenza delle ultime note, ad esempio "CA B" è probabile che il 15% sia seguito da B, e il 4% probabilmente sarà seguito da un si bem, ecc. Quindi, scegli le note usando le probabilità delle note scelte in precedenza. Questo algoritmo straordinariamente semplice genera risultati piuttosto buoni.

Catene di Markov per la generazione di musica



4

Il mio software utilizza la teoria evolutiva applicata per "far crescere" la musica. Il processo è simile al programma The Blind Watchmaker di Richard Dawkins : MusiGenesis aggiunge elementi musicali in modo casuale, quindi l'utente decide se mantenere o meno ogni elemento aggiunto. L'idea è di mantenere ciò che ti piace e abbandonare tutto ciò che non suona bene, e non devi avere alcuna formazione musicale per usarlo.

L'interfaccia non funziona, ma è vecchia, fammi causa.


4

Mi sono sempre piaciuti i vecchi giochi Lucasarts che utilizzavano il sistema iMuse, che produceva una colonna sonora reattiva e senza fine per il gioco ed era molto musicale (perché la maggior parte era ancora creata da un compositore). Puoi trovare le specifiche (incluso il brevetto) qui: http://en.wikipedia.org/wiki/IMUSE

Nintendo sembra essere l'unica azienda a utilizzare ancora un approccio simile a iMuse per creare o influenzare la musica al volo.

A meno che il tuo progetto non sia molto sperimentale, non abbandonerei l'uso di un compositore: un vero compositore umano produrrà risultati molto più musicali e ascoltabili di un algoritmo.

Paragonalo alla scrittura di una poesia: puoi facilmente generare poesie senza senso che suonano molto all'avanguardia, ma replicare Shakespeare con un algoritmo è difficile, per usare un eufemismo.


Verissimo, ma penso che gli utenti sarebbero molto più interessati alla musica "ok" o "decente" che reagisce al gameplay rispetto alle stesse 5 tracce "fantastiche" più e più volte ...
RCIX

@RCIX: Hai mai giocato a un gioco con il sistema iMuse? Reagisce a un sacco di cose, è molto sottile o ovvio, come richiesto, ma usa la musica scritta da un compositore umano. Non genera musica completamente nuova, mai ascoltata prima, ma fa grandi transizioni tra le cue, può alterare gli arrangiamenti (inserire nuovi strumenti, mescolarne altri), può accelerare o rallentare, il tutto senza mai perdere un colpo . Questo è molto lontano dalle "stesse 5 grandi tracce ancora e ancora". Lo definirei "un flusso continuo di musica modellato per adattarsi all'atmosfera del gioco nel momento presente".
Galghamon

3

Hai dato un'occhiata a SoundHelix (http://www.soundhelix.com)? È un framework Java open source per la creazione di musica casuale algoritmica che produce musica piuttosto ordinata. Puoi utilizzare SoundHelix come applicazione standalone, come applet incorporato in una pagina web, come applet basato su JNLP oppure puoi includerlo nel tuo programma Java.

Esempi generati con SoundHelix possono essere trovati qui: http://www.soundhelix.com/audio-examples


3

La ricerca sulla generazione di musica procedurale non noiosa risale a molto tempo fa. Sfoglia i vecchi e nuovi numeri del Computer Music Journal http://www.mitpressjournals.org/cmj (nessun vero nome di dominio?) Questo contiene articoli tecnici seri di reale utilità per gli esperti di sintesi musicale, i fantini saldatori, i pastori di morsi e i ricercatori accademici. Non è un soffice straccio di recensioni e interviste come molte delle riviste che puoi trovare nelle principali librerie.


devo dire che la mia conoscenza di questa rivista è basata sull'abbonamento che avevo ma è scaduto alcuni anni fa. presumo sia ancora buono!
DarenW

2

Un argomento così grande. Puoi dare un'occhiata alla mia app per iPad, Thicket o il mio software Ripple su morganpackard.com. Nella mia esperienza, la maggior parte degli approcci accademici alla generazione di musica dinamica escono con cose che suonano, beh, accademiche. Penso che le cose di maggior successo si trovino ai margini del mondo dei club / dell'elettronica. Monolake è il mio eroe in questo senso. Roba molto ascoltabile, molto generata dal computer. Anche la mia musica non è male. "Alphabet Book" di Paul Lansky è un bell'esempio di musica algoritmica estremamente ascoltabile, soprattutto considerando che è un tipo accademico.


1
Inoltre, controlla le comunità intorno agli strumenti che i musicisti usano per creare le cose: Pure Data, SuperCollider, Max. Inizierei trovando un musicista di cui ti piace il lavoro e partendo a ritroso, piuttosto che iniziare cercando tecniche concettualmente interessanti.
Morgancodes

1

La tecnica che ho preso in considerazione è creare piccoli schemi musicali, fino a una battuta o giù di lì. Contrassegna questi modelli con identificatori di sentimenti come "eccitazione", "intenso", ecc. Quando vuoi generare musica per una situazione, scegli alcuni modelli basati su questi tag e scegli uno strumento con cui vuoi suonarla. In base allo strumento, scopri come combinare i pattern (ad esempio su un pianoforte potresti essere in grado di suonarli tutti insieme, a seconda dell'estensione della mano, su una chitarra puoi suonare le note in rapida successione) e poi renderlo su PCM . Inoltre, puoi cambiare chiave, cambiare velocità, aggiungere effetti, ecc.


1

La tecnica specifica che stai descrivendo è qualcosa su cui Thomas Dolby stava lavorando dieci o quindici anni fa, anche se ora non ricordo come l'ha chiamata, quindi non posso darti un buon termine di ricerca.

Ma vedi questo articolo di Wikipedia e questa pagina Metafilter.


1
Stai pensando alla "musica generativa" e al programma chiamato "Koan".
MusiGenesis

1

Il libro Composizione algoritmica è un buon tour dei diversi metodi utilizzati:

"Gli argomenti trattati sono: modelli markov, grammatiche generative, reti di transizione, caos e auto-similarità, algoritmi genetici, automi cellulari, reti neurali e intelligenza artificiale".

È un buon punto di partenza su questo ampio argomento, tuttavia non descrive mai in profondità come funziona ciascun metodo. Fornisce una buona panoramica di ciascuno, ma non sarà sufficiente se non ne hai già una conoscenza.


0

Alla fine degli anni '90, Microsoft ha creato un controllo ActiveX chiamato "Interactive Music Control" che ha esattamente quello che stai cercando. Purtroppo sembra che abbiano abbandonato il progetto.


Questo perché la musica che ha creato è esplosa completamente, che è una caratteristica piuttosto comune per la musica composta da algoritmi.
MusiGenesis

Il progetto Wolfram Tones a cui fa riferimento @thekidder sopra ha un notevole successo nel non soffiare. Mi aspettavo il solito rnd noodling ...
defmeta



0

Ho esaminato la realizzazione di questa proposta di progetto - "8.1 " dal gruppo di ricerca "Theory and praxis in programming language" dell'Università di Copenhagen - dipartimento di CS:

8.1 Raccolta automatizzata e analisi statistica dei corpi musicali

L'analisi tradizionale degli spartiti consiste in una o più persone che analizzano il ritmo, le sequenze di accordi e altre caratteristiche di un singolo brano, inserite nel contesto di un confronto spesso vago di altri brani dello stesso compositore o di altri compositori dello stesso periodo.

La tradizionale analisi automatizzata della musica ha trattato a malapena gli spartiti, ma si è concentrata sull'analisi del segnale e sull'uso di tecniche di apprendimento automatico per estrarre e classificare, ad esempio, l'umore o il genere. Al contrario, la ricerca incipiente presso DIKU mira ad automatizzare parti dell'analisi degli spartiti. Il valore aggiunto è la possibilità di estrarre informazioni da grandi volumi di spartiti che non possono essere facilmente eseguiti a mano e non possono essere analizzati in modo significativo con tecniche di apprendimento automatico.

Questa - per come la vedo io - è la direzione opposta alla tua domanda i dati generati - immagino - potrebbero essere usati in alcuni casi di generazione procedurale di musica.


0

La mia opinione è che la musica generativa funzioni solo quando passa attraverso un rigoroso processo di selezione. David Cope, un pioniere della musica algoritmica, passava ore di produzione musicale dai suoi algoritmi (che penso fossero per lo più basati su Markov Chain) per individuare i pochi che effettivamente andavano bene.

Penso che questo processo di selezione possa essere automatizzato modellando le caratteristiche di un particolare stile musicale. Ad esempio, uno stile "disco" assegnerebbe molti punti a una linea di basso che presenta insoliti e parti di batteria con rullanti sui controtempi ma sottrarre punti per armonie fortemente dissonanti.

Il fatto è che il processo di composizione musicale è pieno di così tante pratiche idiomatiche che sono molto difficili da modellare senza una conoscenza specifica del campo.


0

Ho lavorato a un modulo Python per la musica procedurale. Ho appena programmato quello che so su note, scale e costruzione di accordi, quindi sono stato in grado di lasciare che generi contenuti casualmente da quei vincoli. Sono sicuro che ci sono più teoria e schemi che un sistema del genere potrebbe essere insegnato, specialmente da qualcuno che capisce meglio l'argomento. Quindi puoi usare questi sistemi come vincoli per algoritmi genetici o generazione di contenuti casuali.

Puoi esaminare la mia implementazione qui , in particolare l'esempio principale generato casualmente potrebbe esserti utile. Qualcuno con una solida conoscenza delle progressioni di accordi potrebbe creare una struttura di canzoni da tecniche del genere e implementare melodie casuali limitate come questa su di essa. La mia conoscenza della teoria musicale non si estende così lontano.

Ma fondamentalmente, dovrai codificare la teoria del tipo di musica che desideri generare e quindi usarla come vincolo per alcuni algoritmi per esplorare proceduralmente la gamma di quella teoria.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.