Domanda

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, trame, ma la musica è ancora o loop completamente statici o semplicemente stratificati (ad esempio Spore).

Per questo motivo, ho pensato a 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 includere esempi ove possibile. La tecnica può utilizzare i dati esistenti o generare la musica interamente da zero, magari su una sorta di input (umore, velocità, qualunque cosa).

È stato utile?

Soluzione

Automi cellulari - leggi .

Puoi anche provarlo qui .

Modifica

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

Altri suggerimenti

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 bassi 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 a 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, D # sarebbe 2 e così via)
  • Per la generazione dell'armonia, provare una combinazione di numeri di nota relativi alla chiave per la radice dell'accordo, il tipo di accordo (maggiore, minore, diminuito, aumentato, ecc.) e l'inversione dell'accordo (radice, prima o secondo)

Le reti neurali sono adatte per previsione di serie storiche (previsione), il che significa che sono ugualmente adatti a" prevedere "una sequenza musicale quando addestrati contro melodie / armonie popolari esistenti. Il risultato finale sarà simile a quello dell'approccio della catena Markov. Non riesco a pensare a nessun vantaggio sull'approccio della catena Markov se non quello di ridurre il footprint di memoria.

Oltre al tono, avrai bisogno della durata per determinare il ritmo delle note o degli accordi generati. Puoi scegliere di incorporare queste informazioni negli stati della catena Markov o nelle uscite della rete neurale, oppure puoi generarle separatamente e combinare le sequenze di tonalità e durata indipendenti.

Algoritmi genetici possono essere usati per evolvere sezioni ritmiche. Un modello semplice potrebbe utilizzare un cromosoma binario in cui i primi 32 bit rappresentano lo schema di un drum drum, il secondo 32 bit un rullante, il terzo 32 bit un hi hat chiuso e così via. Il rovescio della medaglia in questo caso è che richiedono un feedback umano continuo per valutare l'idoneità dei nuovi modelli evoluti.

Un sistema esperto può essere utilizzato per verificare sequenze generate da altre tecniche. La base di conoscenze per tale sistema di validazione può probabilmente essere sollevata da qualsiasi buon libro o sito web di teoria musicale. Prova il

Un algoritmo semplice e piuttosto efficace è usare il rumore 1 / f noto anche come "rumore rosa". per selezionare durate e note da una scala. Sembra una specie di musica e può essere un buon punto di partenza.

Un algoritmo migliore è usare "catene markov" ... scansionare alcuni esempi di musica e costruire una tabella di probabilità. Nel caso più semplice, sarebbe qualcosa come C che ha il 20% di probabilità di seguire A. Per renderlo migliore, guarda la sequenza delle note precedenti, ad esempio "C A B". è probabile che il 15% sia seguito da B, e il 4% sia probabilmente seguito da un Bb, ecc. Quindi, basta prendere appunti usando le probabilità delle note precedentemente scelte. Questo algoritmo straordinariamente semplice genera risultati piuttosto buoni.

Catene di Markov per la generazione di musica

Dmitri Tymoczko ha alcune idee ed esempi interessanti qui:

http://music.princeton.edu/~dmitri/whatmakesmusicsoundgood.html

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

L'interfaccia soffia, ma è vecchia - fammi causa.

Mi sono sempre piaciuti i vecchi giochi di Lucasarts che utilizzavano il sistema iMuse, che produceva una colonna sonora infinita e reattiva 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 compagnia 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.

Confrontalo con la scrittura di una poesia: puoi facilmente generare poesie nonene che suonano molto all'avanguardia, ma replicare shakespeare con un algoritmo è difficile, per dirla in modo lieve.

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. È possibile utilizzare SoundHelix come applicazione autonoma, come applet incorporata in una pagina Web, come applet basata su JNLP oppure è possibile includerla nel proprio programma Java.

Esempi generati con SoundHelix sono disponibili qui: http://www.soundhelix.com/audio-examples

La ricerca sulla generazione di musica procedurale non noiosa risale a molto tempo fa. Sfoglia vecchi e nuovi numeri di Computer Music Journal http://www.mitpressjournals.org/cmj (nessun vero nome di dominio?) articoli di uso effettivo per armeggi di sintesi musicale, fantini di saldatori, pastori di bit e ricercatori accademici. È una recensione soffice e interviste come alcune delle riviste che puoi trovare nelle principali librerie.

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

La tecnica che ho preso in considerazione è quella di creare piccoli schemi musicali, fino a un bar o giù di lì. Tagga questi schemi con identificatori di sensazioni come "eccitazione", "intenso", ecc. Quando vuoi generare musica per una situazione, scegli alcuni schemi basati su questi tag e scegli uno strumento con cui suonare. Basandoti sullo strumento, scopri come combinare i pattern (ad esempio su un piano potresti essere in grado di suonarlo tutti insieme, a seconda della campata della mano, su una chitarra puoi suonare le note in rapida successione) e quindi renderlo su PCM . Inoltre, puoi cambiare chiave, cambiare velocità, aggiungere effetti, ecc.

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

Ma vedi questo articolo di Wikipedia e questa pagina Metafilter.

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

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

È un buon punto di partenza su questo ampio argomento, tuttavia non descrive mai in modo approfondito come funziona ciascun metodo. Fornisce una buona panoramica di ciascuno, ma non sarà sufficiente se non si dispone già di conoscenze su di essi.

Alla fine degli anni '90, Microsoft ha creato un controllo ActiveX chiamato "Interactive Music Control" che ha fatto esattamente quello che stai cercando. Sfortunatamente, sembrano aver abbandonato il progetto.

Non proprio quello che stai cercando, ma conoscevo qualcuno che guardava generare automaticamente set DJ chiamati Somiglianza musicale basata sui contenuti .

Se ti piacciono le teorie più profonde su come la musica si lega, sito di Bill Sethares ha alcuni colpi di scena interessanti.

Ho cercato di fare questa proposta di progetto - " 8.1 " dalla "Teoria e prassi nel linguaggio di programmazione" gruppo di ricerca dell'Università di Copenaghen - dipartimento del CS:

  

8.1 Raccolta automatizzata e analisi statistica dei corpora musicali

     

Analisi tradizionale degli spartiti   è composto da una o più persone   analisi del ritmo, sequenze di accordi e   altre caratteristiche di un singolo   pezzo, ambientato nel contesto di un spesso   vago confronto di altri brani di   lo stesso compositore o altri compositori   dello stesso periodo.

     

Tradizionale   l'analisi automatizzata della musica ha a malapena   spartiti trattati, ma si è concentrato   sull'analisi del segnale e l'uso di   tecniche di apprendimento automatico da estrarre   e classificare all'interno, diciamo, dell'umore o   genere. Al contrario, la ricerca incipiente   DIKU mira ad automatizzare parti di   analisi di spartiti. Il aggiunto   il valore è il potenziale per l'estrazione   informazioni da grandi volumi di   spartiti che non possono essere facilmente eseguiti   a mano e non può essere significativo   analizzato dall'apprendimento automatico   tecniche.

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

La mia opinione è che la musica generativa funziona solo quando passa attraverso un rigoroso processo di selezione. David Cope, un pioniere della musica algoritmica, passerebbe attraverso ore di output musicale dai suoi algoritmi (che penso siano principalmente basati su Markov Chain) per individuare i pochi che in realtà sono andati bene.

Penso che questo processo di selezione possa essere automatizzato modellando le caratteristiche di un particolare stile musicale. Ad esempio, una "discoteca" lo stile assegnerebbe molti punti per una linea di basso che presenta battute e parti di batteria con lacci sui backbeat ma che sottrae 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.

Ho lavorato su un modulo Python per la musica procedurale. Ho appena programmato ciò che so su note, scale e costruzione di accordi, quindi sono stato in grado di lasciarlo generare casualmente contenuto da quei vincoli. Sono sicuro che ci sia più teoria e modelli che un sistema del genere potrebbe essere insegnato, specialmente da qualcuno che capisce meglio la materia. Quindi è possibile utilizzare tali sistemi come vincoli per algoritmi genetici o generazione casuale di contenuti.

Puoi esaminare la mia implementazione qui , in particolare il Un esempio di lead generato casualmente può 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 vincolate 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 vuoi generare, e poi usarla come vincolo per alcuni algoritmi per esplorare proceduralmente la gamma di quella teoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top