Técnicas de geração de música procedimental [fechado]


89

Tenho pensado muito na geração procedural de conteúdo por um tempo e nunca vi muita experimentação com música procedural. Temos técnicas fantásticas para gerar modelos, animações, texturas, mas a música ainda é completamente estática ou simplesmente loops em camadas (por exemplo, Spore).

Por causa disso, tenho pensado em técnicas ótimas de geração de música e estou curioso para saber o que outras pessoas têm em mente. Mesmo que você não tenha considerado isso antes, o que você acha que funcionará bem? Uma técnica por resposta, por favor, e inclua exemplos sempre que possível. A técnica pode usar dados existentes ou gerar a música inteiramente do zero, talvez em algum tipo de entrada (humor, velocidade, o que for).


19
Finalmente uma questão musical sobre realmente programar / fazer / gerar música! : D
Oddmund,

Respostas:


28

Cellular Automata - leia .

Você também pode experimentar aqui .

Editar:

rakkarage forneceu outro recurso: http://www.ibm.com/developerworks/java/library/j-camusic/


1
Wolfram é tão inteligente! Ótimo trabalho tornando esse tipo de coisa tão acessível também ...
defmeta

Não consegui fazê-lo funcionar na minha caixa do Ubuntu. :(
Calmarius


O problema com isso é que ele está preso no sistema de 12 tons. Um verdadeiro algoritmo de geração de música será superior à instrumentação normal e terá um controle de tom harmônico livre. O piano foi projetado com um sistema de tons específico que foi aceito como padrão em sua época. Ainda assim, o sistema de 12 tons era brilhante para sua época.
Timothy Swan

42

O sistema de maior sucesso provavelmente combinará várias técnicas. Duvido que você encontre uma técnica que funcione bem para melodia, harmonia, ritmo e geração de sequência de baixo em todos os gêneros musicais.

As cadeias de Markov , por exemplo, são adequadas para geração de sequência melódica e harmônica. Este método requer a análise das canções existentes para construir as probabilidades de transição em cadeia. A verdadeira beleza das cadeias de Markov é que os estados podem ser o que você quiser.

  • Para a geração de melodia, tente números de nota relativos à tonalidade (por exemplo, se a tonalidade for dó menor, dó seria 0, ré seria 1, ré # seria 2 e assim por diante)
  • Para a geração de harmonia, tente uma combinação de números de notas relativas à tonalidade para a tônica do acorde, o tipo de acorde (maior, menor, diminuto, aumentado, etc.) e a inversão do acorde (tônica, primeira ou segunda)

As redes neurais são bem adequadas para a previsão de séries temporais (previsão), o que significa que são igualmente adequadas para 'prever' uma sequência musical quando treinadas contra melodias / harmonias populares existentes. O resultado final será semelhante ao da abordagem da cadeia de Markov. Não consigo pensar em nenhum benefício sobre a abordagem da cadeia de Markov além de reduzir o consumo de memória.

Além do tom, você precisará de duração para determinar o ritmo das notas ou acordes gerados. Você pode escolher incorporar essas informações aos estados da cadeia de Markov ou às saídas da rede neural, ou pode gerá-las separadamente e combinar as sequências independentes de pitch e duração.

Algorítmos genéticos podem ser usados ​​para desenvolver seções de ritmo. Um modelo simples poderia usar um cromossomo binário no qual os primeiros 32 bits representam o padrão de um bumbo, os segundos 32 bits uma caixa, os terceiros 32 bits um chimbal fechado e assim por diante. A desvantagem neste caso é que eles exigem feedback humano contínuo para avaliar a adequação dos padrões recém-desenvolvidos.

Um sistema especialista pode ser usado para verificar as sequências geradas pelas outras técnicas. A base de conhecimento para tal sistema de validação provavelmente pode ser obtida de qualquer bom livro ou site de teoria musical. Experimente musictheory.net de Ricci Adams .


10

Existem mais de 50 anos de pesquisa nessas técnicas, muitas vezes esquecidas por desenvolvedores não familiarizados com a história da música computacional e da composição algorítmica. Numerosos exemplos de sistemas e pesquisas que tratam dessas questões podem ser encontrados aqui:

http://www.algorithmic.net


7

Um algoritmo fácil e um tanto eficaz é usar ruído 1 / f também conhecido como "ruído rosa" para selecionar durações e notas de uma escala. Isso soa como música e pode ser um bom ponto de partida.

Um algoritmo melhor é usar "cadeias de markov" .. escaneie alguns exemplos de música e construa uma tabela de probabilidades. No caso mais simples, seria algo como C com 20% de probabilidade de seguir A. Para tornar isso melhor, observe a sequência das últimas notas, por exemplo, "CA B" tem 15% de probabilidade de ser seguido por B, e 4% de probabilidade de ser seguido por um Bb, etc. Em seguida, basta escolher as notas usando as probabilidades das notas previamente escolhidas. Este algoritmo extremamente simples gera resultados muito bons.

Redes de Markov para geração de música



4

Meu software usa a teoria da evolução aplicada para "fazer crescer" a música. O processo é semelhante ao programa The Blind Watchmaker de Richard Dawkins - o MusiGenesis adiciona elementos musicais aleatoriamente e, em seguida, o usuário decide se deseja ou não manter cada elemento adicionado. A ideia é apenas manter o que você gosta e descartar tudo o que não parece certo, e você não precisa ter nenhum treinamento musical para usá-lo.

A interface explode, mas é antiga - processe-me.


4

Sempre gostei dos jogos antigos da Lucasarts que usavam o sistema iMuse, que produzia uma trilha sonora interminável e reativa para o jogo e era muito musical (porque a maior parte ainda era criada por um compositor). Você pode encontrar as especificações (incluindo a patente) aqui: http://en.wikipedia.org/wiki/IMUSE

A Nintendo parece ser a única empresa a ainda usar uma abordagem semelhante ao iMuse para criar ou influenciar a música em tempo real.

A menos que seu projeto seja muito experimental, eu não abandonaria o uso de um compositor - um verdadeiro compositor humano produzirá resultados muito mais musicais e auditivos do que um algoritmo.

Compare-o a escrever um poema: você pode facilmente gerar poemas absurdos que soam muito vanguardistas, mas replicar Shakespeare com um algoritmo é difícil, para dizer o mínimo.


Muito verdade, mas acho que os usuários estariam muito mais interessados ​​em músicas "ok" ou "decentes" que reajam à jogabilidade do que as mesmas 5 faixas "excelentes" repetidas vezes ...
RCIX

@RCIX: Você já jogou um jogo com o sistema iMuse? Ele reage a um monte de coisas, é muito sutil ou óbvio, conforme necessário, mas usa música escrita por um compositor humano. Não gera música completamente nova, nunca ouvida antes, mas faz grandes transições entre pistas, pode alterar arranjos (trazer novos instrumentos, misturar outros), pode acelerar ou desacelerar, tudo sem nunca perder o ritmo . Isso está muito longe de ser "as mesmas 5 ótimas faixas continuamente". Eu o chamaria de "um fluxo contínuo de música moldado para se adequar ao clima do jogo no momento presente".
Galghamon

3

Você já deu uma olhada no SoundHelix (http://www.soundhelix.com)? É uma estrutura Java de código aberto para criação de música aleatória algorítmica que produz música bem legal. Você pode usar o SoundHelix como um aplicativo independente, como um miniaplicativo embutido em uma página da web, como um miniaplicativo baseado em JNLP ou pode incluí-lo em seu próprio programa Java.

Os exemplos gerados com SoundHelix podem ser encontrados aqui: http://www.soundhelix.com/audio-examples


3

Pesquisas sobre geração de música procedural não entediante são antigas. Navegue pelas edições antigas e novas do Computer Music Journal http://www.mitpressjournals.org/cmj (nenhum nome de domínio real?) Este contém artigos técnicos sérios de uso real para consertadores de síntese musical, jóqueis de ferro de solda, pastores de bits e pesquisadores acadêmicos. Não é um jornal fofo de resenhas e entrevistas, como várias das revistas que você pode encontrar nas principais livrarias.


Devo mencionar que meu conhecimento desta revista se baseia na assinatura que eu tinha, mas que virei há alguns anos. Presumo que ainda seja bom!
DarenW,

2

Um assunto tão grande. Você pode dar uma olhada no meu aplicativo para iPad, Thicket, ou no meu software Ripple em morganpackard.com. Em minha experiência, a maioria das abordagens acadêmicas para a geração de música dinâmica trazem coisas que soam, bem, acadêmicas. Acho que as coisas de mais sucesso são encontradas nas periferias do mundo club / eletrônico. Monolake é meu herói nesse aspecto. Coisas muito fáceis de ouvir, muito geradas por computador. Minha própria música também não é ruim. O "Livro do Alfabeto" de Paul Lansky é um bom exemplo de música algorítmica extremamente audível, especialmente considerando que ele é um cara acadêmico.


1
Além disso, verifique as comunidades em torno das ferramentas que os músicos usam para criar o material - Pure Data, SuperCollider, Max. Eu começaria encontrando um músico cujo trabalho você goste e trabalhe de trás para frente, em vez de começar procurando por técnicas conceitualmente interessantes.
morgancodes

1

A técnica que venho considerando é criar pequenos padrões musicais, até um compasso ou algo assim. Marque esses padrões com identificadores de sentimento, como 'empolgação', 'intenso' etc. Quando você quiser gerar música para uma situação, escolha alguns padrões com base nessas marcas e escolha um instrumento com o qual deseja tocá-los. Com base no instrumento, descubra como combinar os padrões (por exemplo, em um piano você pode ser capaz de tocar todos juntos, dependendo da extensão da mão, em uma guitarra você pode tocar as notas em rápida sucessão) e então renderizá-lo para PCM . Além disso, você pode alterar a chave, alterar a velocidade, adicionar efeitos, etc.


1

A técnica específica que você está descrevendo é algo em que Thomas Dolby estava trabalhando há dez ou quinze anos, embora eu não me lembre agora como ele a chamou, então não posso fornecer um bom termo de pesquisa.

Mas veja este artigo da Wikipedia e esta página Metafilter.


1
Você está pensando em "música generativa" e em um programa chamado "Koan".
MusiGenesis

1

O livro Composição Algorítmica é um bom tour pelos vários métodos usados:

"Os tópicos abordados são: modelos de markov, gramáticas gerativas, redes de transição, caos e auto-similaridade, algoritmos genéticos, autômatos celulares, redes neurais e inteligência artificial."

É um bom ponto de partida neste amplo tópico, mas nunca descreve em profundidade como cada método funciona. Ele fornece uma boa visão geral de cada um, mas não será suficiente se você ainda não tiver conhecimento sobre eles.


0

No final dos anos 90, a Microsoft criou um controle ActiveX chamado "Interactive Music Control" que fazia exatamente o que você procurava. Infelizmente, eles parecem ter abandonado o projeto.


Isso porque a música que ele criou explodiu completamente, o que é uma característica bastante comum em músicas compostas por algoritmos.
MusiGenesis,

O projeto Wolfram Tones referenciado por @thekidder acima é um sucesso notável em não explodir. Eu estava esperando o
macarrão



0

Estive pensando em fazer esta proposta de projeto - "8.1 " do grupo de pesquisa "Teoria e práxis em linguagem de programação" da Universidade de Copenhagen - departamento de CS:

8.1 Coleta automatizada e análise estatística do Music Corpora

A análise tradicional de partituras consiste em uma ou mais pessoas analisando o ritmo, as sequências de acordes e outras características de uma única peça, no contexto de uma comparação frequentemente vaga de outras peças do mesmo compositor ou de outros compositores do mesmo período.

A análise automatizada tradicional de música quase não trata as partituras, mas se concentra na análise de sinais e no uso de técnicas de aprendizado de máquina para extrair e classificar, digamos, o humor ou o gênero. Em contraste, pesquisas incipientes no DIKU objetivam automatizar partes da análise de partituras. O valor agregado é o potencial para extrair informações de grandes volumes de partituras que não podem ser facilmente feitas à mão e não podem ser analisadas de forma significativa por técnicas de aprendizado de máquina.

Esta - a meu ver - é a direção oposta de sua pergunta - os dados gerados - imagino - poderiam ser usados ​​em algumas instâncias de geração procedural de música.


0

Minha opinião é que a música generativa só funciona quando passa por um rigoroso processo de seleção. David Cope, um pioneiro da música algorítmica, iria passar horas de produção musical de seus algoritmos (que eu acho que eram em sua maioria baseados na cadeia de Markov) para escolher os poucos que realmente funcionavam bem.

Acho que esse processo de seleção poderia ser automatizado modelando as características de um estilo musical específico. Por exemplo, um estilo "disco" atribuiria muitos pontos para uma linha de baixo que apresenta partes inusitadas e de bateria com armadilhas nas batidas de fundo, mas subtraia pontos para harmonias fortemente dissonantes.

O fato é que o processo de composição musical é repleto de tantas práticas idiomáticas que são muito difíceis de modelar sem um conhecimento específico da área.


0

Tenho trabalhado em um módulo Python para música procedural. Eu apenas programei o que sei sobre notas, escalas e construção de acordes e, em seguida, fui capaz de deixá-lo gerar conteúdo aleatoriamente a partir dessas restrições. Tenho certeza de que há mais teoria e padrões que um sistema como esse poderia ser ensinado, especialmente por alguém que entende melhor do assunto. Em seguida, você pode usar esses sistemas como restrições para algoritmos genéticos ou geração de conteúdo aleatório.

Você pode revisar minha implementação aqui , especialmente o exemplo de lead gerado aleatoriamente pode ser útil para você. Alguém com um conhecimento sólido de progressões de acordes poderia criar uma estrutura de música a partir de técnicas como essa e implementar melodias aleatórias restritas como essa sobre ela. Meu conhecimento de teoria musical não vai tão longe.

Mas, basicamente, você precisará codificar a teoria do tipo de música que deseja gerar e, em seguida, usar isso como uma restrição para algum algoritmo para explorar procedimentalmente o alcance dessa teoria.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.