Domanda

Mi interessa fare musica automatica. Stavo pensando a un programma che è alimentato un gran numero di arpeggi 1-bar (sequenze di lunghezza = fisso di note, per semplicità) e genera le proprie sequenze, sulla base di ciò che ha imparato.

Per cominciare, so che potrei usare la lettera (digram? Trigramma?) analisi della frequenza , applicato solo a notare piazzole, e quindi generare la mia sequenza sulla base di probabilità di frequenza.

Ci sono algoritmi più avanzati si sa di, forse espressamente insegnato per le sequenze di musica?

È stato utile?

Soluzione

L'articolo di Wikipedia su Algorithmic Composizione è un eccellente primer. Descrive alcuni dei modelli utilizzati per la creazione di algoritmi di musica, compositori di rilievo, i riferimenti del libro, e software di composizione algoritmica.

http://en.wikipedia.org/wiki/Algorithmic_composition

Altri suggerimenti

Essendo io stesso un musicista e di un Software Engineering importante, io htink posso fare una certa luce fredda qui: P Ho fatto un sacco di lavori in materia di me e ha intenzione di fare qualcosa di grande base intorno a questo in futuro <. / p>

Quando si scrive un algoritmo, il vostro obiettivo è quello di venire con un esempio ribalta soluzione-, nello smistamento dei problemi si tratta di avere un elenco ordinato. In composizione musicale algoritmica, la soluzione è (di solito) di avere una canzone, o una melodia che è piacevole, ha struttura, ecc.

Il problema con la soluzione (ah) è che non è unico obiettivo, ma la soluzione è enormemente indeterminato. Con un algoritmo di ordinamento, si ha solo un modo per ordinare un elenco. Con composizione musicale, si dispone di milioni di canzoni piacevoli / whatevr il vostro obiettivo è.

Quindi sarà necessario un algoritmo che è buono per non trovare soluzioni definitive, ma le soluzioni ottimali. Il mio suggerimento è un algoritmo genetico o simili. algoritmi genetici sono grandi perché possono creare un pool di varie soluzioni ottimali.

Si sarebbe bisogno di rompere la composizione in parti- hanno un GA per la melodia, per il ritmo GA, GA per la struttura, ecc e progettare la vostra funzione di fitness per soddisfare le vostre esigenze.

Naturalmente questa è solo una soluzione al problema; ci sono molti e il link wikipedia elencati prima è un ottimo inizio.

Mi consiglia di check-out: Genjam: un jazz di improvvisazione Genetic Algorithm destinato al commercio solos- http://www.it.rit.edu/~jab/GenJam.html

E questo libro è molto illuminante: http://www.springer.com/ computer / informazioni + sistemi / libro / 978-1-84628-599-8

Credo che un altro modo divertente sarebbe stato con le reti neurali .... ma dando loro set woud essere un po 'un problema, probabilmente .... è molto più lavoro.

In ogni modo, buona fortuna per le vostre iniziative: P

L'analisi statistica dei cavi esistenti per la musica che è - bene - media. Raramente c'è niente di interessante perché tende a riprodurre tutte le caratteristiche comuni di tutto ciò che analizzato.

La musica è multi-dimensionale. È possibile, in modo chiaro, analizzare una o tutte le dimensioni che vi interessano. Pitch, ritmo, sequenza di note, progressioni armoniche, variazioni di volume, qualsiasi cosa. Qualunque cosa.

La musica è sottile e complessa, quindi c'è sempre qualcosa in più da analizzare.

Per quanto ne so (mio figlio è un compositore) ciò che è più interessante è quello di inventare il proprio algoritmo unico per la generazione di musica che è ragionevolmente distintivo.

Ecco qualcosa di mio figlio specificato. Si genera una sequenza di 48 eventi musicali che il pezzo è costruito intorno.

#!/usr/bin/env python
"""
there are 8, 3-note sets.
each one can occur on 3 different beats.
each pitch of the 3 note set can be in one of 3 octaves and it can either be a harmonic or a fingered note.
"""
import random

noteSetChoices = [ "C-E-G", "C-F-A", "C-E-A", "D-F-A", "D-F-B", "D-G-B", "E-G-B", "F-A-C" ]
beatChoices= [ "1 - - -", "- 2 - -", "- - - 4" ]
octaveChoices= [ 1, 2, 3 ]
techniqueChoices= [ 'Fingered', 'Harmonic' ]

for n in range(48):
    note= random.choice(noteSetChoices)
    beat= random.choice(beatChoices)
    octave= random.choice( octaveChoices )
    technique= random.choice( techniqueChoices )
    print octave, note, technique, beat

Anche se è generalmente destinato a lavorare su sequenze più lunghe di una barra, Markov concatenamento è un modo semplice, efficace per generare simili al suo ingresso. Per un esempio scritto in Python utilizzando RTcmix per la generazione di audio, vedere la mia implementazione qui .

Si basa off del concatenamento capitolo Markov da Note dal metalivello , un ottimo testo sulla composizione algoritmica.

Aiuta davvero se si conoscono le convenzioni della musica, in modo da leggere libri e articoli scritti per insegnare all'uomo come comporre canzoni. Otterrete grandi idee.

Gettare un certo punto pedale in ora e poi per costruire la tensione. Usare la tecnica antica di chiamata-risposta tra due strumenti diversi.

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