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).
procedural
generative
Cody Brocious
fonte
fonte
Respostas:
Cellular Automata - leia .
Você também pode experimentar aqui .
Editar:
rakkarage forneceu outro recurso: http://www.ibm.com/developerworks/java/library/j-camusic/
fonte
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.
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 .
fonte
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
fonte
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
fonte
Dmitri Tymoczko tem algumas idéias e exemplos interessantes aqui:
http://music.princeton.edu/~dmitri/whatmakesmusicsoundgood.html
fonte
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.
fonte
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.
fonte
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
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
Não é bem o que você está procurando, mas eu conhecia alguém que olhava para a geração automática de conjuntos de DJs, chamados de similaridade musical baseada em conteúdo .
fonte
Se você estiver interessado em teorias mais profundas sobre como a música se encaixa, o site de Bill Sethares tem algumas reviravoltas interessantes.
fonte
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:
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.
fonte
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.
fonte
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.
fonte