Técnicas de generación de música procedimental [cerrado]

89

He estado pensando mucho en la generación procedimental de contenido durante un tiempo y nunca he visto mucha experimentación con música procedimental. Tenemos técnicas fantásticas para generar modelos, animaciones, texturas, pero la música sigue siendo completamente estática o simplemente bucles en capas (por ejemplo, Spore).

Por eso, he estado pensando en técnicas óptimas de generación de música y tengo curiosidad por saber qué tienen otras personas en mente. Incluso si no lo ha considerado anteriormente, ¿qué cree que funcionará bien? Una técnica por respuesta, por favor, e incluya ejemplos cuando sea posible. La técnica puede usar datos existentes o generar la música completamente desde cero, tal vez con algún tipo de entrada (estado de ánimo, velocidad, lo que sea).

Cody Brocious
fuente
19
¡Finalmente una pregunta musical sobre la programación / creación / generación de música! : D
Oddmund

Respuestas:

28

Autómatas celulares - leer .

También puedes probarlo aquí .

Editar:

rakkarage ha proporcionado otro recurso: http://www.ibm.com/developerworks/java/library/j-camusic/

el niño
fuente
1
¡Wolfram es tan inteligente! Gran trabajo al hacer que este tipo de cosas sea tan accesible también ...
defmeta
No pude hacer que funcionara en mi caja de Ubuntu. :(
Calmarius
El problema con esto es que está atrapado en el sistema de 12 tonos. Un verdadero algoritmo de generación de música será superior a la instrumentación normal y tendrá un control de tono armónico libre. El piano fue diseñado con un sistema de tono específico que se acordó como estándar en su día. Aún así, el sistema de 12 tonos fue brillante para su época.
Timothy Swan
42

El sistema más exitoso probablemente combinará varias técnicas. Dudo que encuentre una técnica que funcione bien para la generación de secuencias de melodía, armonía, ritmo y bajo en todos los géneros de música.

Las cadenas de Markov , por ejemplo, son adecuadas para la generación de secuencias melódicas y armónicas. Este método requiere el análisis de canciones existentes para construir las probabilidades de transición de la cadena. La verdadera belleza de las cadenas de Markov es que los estados pueden ser lo que quieras.

  • Para la generación de melodías, pruebe los números de nota relativos a la clave (por ejemplo, si la clave es C menor, C sería 0, D sería 1, D # sería 2 y así sucesivamente)
  • Para la generación de armonía, pruebe una combinación de números de nota relativos a la clave para la raíz del acorde, el tipo de acorde (mayor, menor, disminuido, aumentado, etc.) y la inversión del acorde (raíz, primera o segunda)

Las redes neuronales se adaptan bien a la predicción de series de tiempo (pronóstico), lo que significa que son igualmente adecuadas para "predecir" una secuencia musical cuando se entrena contra melodías / armonías populares existentes. El resultado final será similar al del enfoque de la cadena de Markov. No puedo pensar en ningún beneficio sobre el enfoque de la cadena de Markov más que reducir la huella de memoria.

Además del tono, necesitará duración para determinar el ritmo de las notas o acordes generados. Puede optar por incorporar esta información en los estados de la cadena de Markov o en las salidas de la red neuronal, o puede generarla por separado y combinar las secuencias independientes de tono y duración.

Se pueden usar algoritmos genéticos para desarrollar secciones de ritmo. Un modelo simple podría usar un cromosoma binario en el que los primeros 32 bits representan el patrón de un bombo, los segundos 32 bits una caja, los terceros 32 bits un charles cerrado y así sucesivamente. La desventaja en este caso es que requieren una retroalimentación humana continua para evaluar la idoneidad de los patrones recientemente desarrollados.

Se puede utilizar un sistema experto para verificar secuencias generadas por las otras técnicas. La base de conocimientos para un sistema de validación de este tipo probablemente pueda extraerse de cualquier buen libro o sitio web de teoría musical. Pruebe musictheory.net de Ricci Adams .

Richard Poole
fuente
10

Hay más de 50 años de investigación sobre estas técnicas, que a menudo los desarrolladores que no están familiarizados con la historia de la música por computadora y la composición algorítmica las pasan por alto. Aquí se pueden encontrar numerosos ejemplos de sistemas e investigaciones que abordan estos problemas:

http://www.algorithmic.net

flexatone
fuente
7

Un algoritmo sencillo y algo eficaz es utilizar ruido 1 / f, también conocido como "ruido rosa" para seleccionar duraciones y notas de una escala. Esto suena como música y puede ser un buen punto de partida.

Un mejor algoritmo es usar "cadenas de Markov" ... escanear algunos ejemplos de música y construir una tabla de probabilidades. En el caso más simple, sería algo así como que C tiene un 20% de probabilidades de seguir a A. Para mejorar esto, observe la secuencia de las últimas notas, por ejemplo, "CA B" tiene un 15% de probabilidades de ser seguida por B, y 4% de probabilidad de que le siga un Sib, etc. Luego, simplemente elija notas usando las probabilidades de las notas elegidas previamente. Este algoritmo notablemente simple genera resultados bastante buenos.

Cadenas de Markov para la generación de música

joeld
fuente
4

Mi software utiliza la teoría de la evolución aplicada para "hacer crecer" la música. El proceso es similar al programa The Blind Watchmaker de Richard Dawkins : MusiGenesis agrega elementos musicales al azar, y luego el usuario decide si conservar o no cada elemento agregado. La idea es simplemente mantener lo que te gusta y deshacerte de lo que no suene bien, y no tienes que tener ningún entrenamiento musical para usarlo.

La interfaz funciona, pero es vieja, demándame.

MusiGenesis
fuente
4

Siempre me han gustado los viejos juegos de Lucasarts que usaban el sistema iMuse, que producía una banda sonora reactiva e interminable para el juego y era muy musical (porque la mayor parte todavía fue creada por un compositor). Puede encontrar las especificaciones (incluida la patente) aquí: http://en.wikipedia.org/wiki/IMUSE

Nintendo parece ser la única compañía que todavía utiliza un enfoque similar a iMuse para crear o influir en la música sobre la marcha.

A menos que su proyecto sea muy experimental, no abandonaría el uso de un compositor: un compositor humano real producirá resultados mucho más musicales y escuchables que un algoritmo.

Compárelo con escribir un poema: puede generar fácilmente poemas disparatados que suenan muy vanguardistas, pero replicar a Shakespeare con un algoritmo es difícil, por decirlo suavemente.

Galghamon
fuente
Muy cierto, pero creo que los usuarios estarían mucho más interesados ​​en la música "ok" o "decente" que reacciona a la jugabilidad que en las mismas 5 pistas "geniales" una y otra vez ...
RCIX
@RCIX: ¿Alguna vez has jugado un juego con el sistema iMuse? Reacciona a un montón de cosas, es muy sutil u obvio, según sea necesario, pero usa música escrita por un compositor humano. No genera música completamente nueva, nunca antes escuchada, pero hace grandes transiciones entre señales, puede alterar arreglos (traer nuevos instrumentos, mezclar otros), puede acelerar o desacelerar, todo sin perder el ritmo. . Esto está muy lejos de "las mismas 5 grandes pistas una y otra vez". Yo lo llamaría "una corriente continua de música diseñada para adaptarse al estado de ánimo del juego en el momento presente".
Galghamon
3

¿Ha echado un vistazo a SoundHelix (http://www.soundhelix.com)? Es un marco de Java de código abierto para la creación de música aleatoria algorítmica que produce música bastante ordenada. Puede utilizar SoundHelix como una aplicación independiente, como un subprograma incrustado en una página web, como un subprograma basado en JNLP o puede incluirlo en su propio programa Java.

Los ejemplos generados con SoundHelix se pueden encontrar aquí: http://www.soundhelix.com/audio-examples

TranceTip
fuente
3

La investigación sobre la generación de música procedimental no aburrida data de hace mucho tiempo. Busque números antiguos y nuevos de Computer Music Journal http://www.mitpressjournals.org/cmj (¿no tiene un nombre de dominio real?). Tiene artículos técnicos serios de uso real para los manipuladores de síntesis de música, los jinetes de soldador, los pastores de bits e investigadores académicos. No es un trapo suave de reseñas y entrevistas como varias de las revistas que puedes encontrar en las principales librerías.

DarenW
fuente
Debo mencionar que mi conocimiento de esta revista se basa en la suscripción que tenía pero caduqué hace unos años. ¡Asumo que sigue siendo tan bueno!
DarenW
2

Un tema tan importante. Puede echar un vistazo a mi aplicación para iPad, Thicket o mi software Ripple en morganpackard.com. En mi experiencia, la mayoría de los enfoques académicos para la generación de música dinámica presentan cosas que suenan, bueno, académicas. Creo que las cosas más exitosas se encuentran al margen del mundo de los clubes / electrónica. Monolake es mi héroe a este respecto. Material muy escuchable, generado por computadora. Mi propia música tampoco es mala. El "Libro del alfabeto" de Paul Lansky es un buen ejemplo de música algorítmica extremadamente escuchable, especialmente considerando que es un tipo académico.

códigos morgan
fuente
1
Además, eche un vistazo a las comunidades en torno a las herramientas que los músicos utilizan para crear las cosas: Pure Data, SuperCollider, Max. Comenzaría por encontrar un músico cuyo trabajo te guste y trabajaría al revés a partir de eso, en lugar de comenzar buscando técnicas conceptualmente interesantes.
morgancodes
1

La técnica que he estado considerando es crear pequeños patrones musicales, hasta un compás o algo así. Etiqueta estos patrones con identificadores de sentimientos como "emoción", "intenso", etc. Cuando quieras generar música para una situación, elige algunos patrones basados ​​en estas etiquetas y elige un instrumento con el que quieras tocarlo. Según el instrumento, averigüe cómo combinar los patrones (por ejemplo, en un piano, es posible que pueda tocarlos todos juntos, según el alcance de las manos, en una guitarra puede tocar las notas en rápida sucesión) y luego renderícelo a PCM . Además, puede cambiar la clave, cambiar la velocidad, agregar efectos, etc.

Cody Brocious
fuente
1

La técnica específica que estás describiendo es algo en lo que Thomas Dolby estaba trabajando hace diez o quince años, aunque ahora no recuerdo cómo la llamó, así que no puedo darte un buen término de búsqueda.

Pero vea este artículo de Wikipedia y esta página de Metafilter.

Robert Rossney
fuente
1
Estás pensando en "música generativa" y en un programa llamado "Koan".
MusiGenesis
1

El libro Composición algorítmica es un buen recorrido por los diversos métodos utilizados:

"Los temas cubiertos son: modelos de Markov, gramáticas generativas, redes de transición, caos y auto-similitud, algoritmos genéticos, autómatas celulares, redes neuronales e inteligencia artificial".

Es un buen punto de partida sobre este amplio tema, sin embargo, nunca describe en profundidad cómo funciona cada método. Proporciona una buena descripción general de cada uno, pero no será suficiente si aún no los conoce.

Jeremy-George
fuente
0

A finales de los 90, Microsoft creó un control ActiveX llamado "Control interactivo de música" que hizo exactamente lo que buscaba. Desafortunadamente, parecen haber abandonado el proyecto.

James Curran
fuente
Eso es porque la música que creó explotó por completo, lo cual es una característica bastante común para la música compuesta algorítmicamente.
MusiGenesis
El proyecto Wolfram Tones al que hace referencia @thekidder arriba es notablemente exitoso en no soplar. Esperaba el habitual rnd noodling ...
defmeta
0

He estado buscando hacer esta propuesta de proyecto - "8.1 " del grupo de investigación "Teoría y praxis en el lenguaje de programación" de la Universidad de Copenhague - departamento de CS:

8.1 Cosecha automatizada y análisis estadístico de cuerpos musicales

El análisis tradicional de partituras consiste en que una o más personas analicen el ritmo, las secuencias de acordes y otras características de una sola pieza, en el contexto de una comparación a menudo vaga de otras piezas del mismo compositor o de otros compositores del mismo período.

El análisis automatizado tradicional de la música apenas ha tratado las partituras, pero se ha centrado en el análisis de señales y el uso de técnicas de aprendizaje automático para extraer y clasificar dentro de, digamos, el estado de ánimo o el género. Por el contrario, la investigación incipiente en DIKU tiene como objetivo automatizar partes del análisis de partituras. El valor agregado es el potencial para extraer información de grandes volúmenes de partituras que no se pueden hacer fácilmente a mano y no se pueden analizar de manera significativa mediante técnicas de aprendizaje automático.

Esto, como yo lo veo, es la dirección opuesta a su pregunta, los datos generados, imagino, podrían usarse en algunos casos de generación procedimental de música.

svrist
fuente
0

Mi opinión es que la música generativa solo funciona cuando pasa por un riguroso proceso de selección. David Cope, un pionero de la música algorítmica, pasaría horas de producción musical de sus algoritmos (que creo que se basaron principalmente en Markov Chain) para seleccionar los pocos que realmente resultaron bien.

Creo que este proceso de selección podría automatizarse modelando las características de un estilo musical en particular. Por ejemplo, un estilo "disco" otorgaría muchos puntos por una línea de bajo que presenta fuera de tiempo y partes de batería con trampas en los tiempos de fondo, pero restaría puntos para armonías fuertemente disonantes.

El hecho es que el proceso de composición musical está lleno de tantas prácticas idiomáticas que son muy difíciles de modelar sin un conocimiento específico del campo.

Gregsabo
fuente
0

He estado trabajando en un módulo de Python para música de procedimiento. Simplemente programé lo que sé sobre notas, escalas y construcción de acordes, luego pude dejar que generara contenido aleatoriamente a partir de esas restricciones. Estoy seguro de que hay más teoría y patrones que un sistema como ese podría ser enseñado, especialmente por alguien que entienda mejor el tema. Luego, puede usar esos sistemas como restricciones para algoritmos genéticos o generación de contenido aleatorio.

Puedes revisar mi implementación aquí , especialmente el ejemplo de plomo generado aleatoriamente puede serle útil. Alguien con un conocimiento sólido de las progresiones de acordes podría crear una estructura de canción a partir de técnicas como esa e implementar melodías aleatorias restringidas como esta sobre ella. Mi conocimiento de la teoría musical no se extiende tan lejos.

Pero básicamente, necesitará codificar la teoría del tipo de música que desea generar y luego usar eso como una restricción para algún algoritmo para explorar procedimentalmente el rango de esa teoría.


fuente