Pregunta

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

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

¿Fue útil?

Solución

Autómatas celulares: lea .

También puedes probarlo aquí .

Editar:

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

Otros consejos

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

Cadenas de Markov , por ejemplo, son muy adecuadas para la generación de secuencias armónicas y melódicas. Este método requiere el análisis de las 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, intente 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, intente una combinación de números de notas relativas a clave para la raíz del acorde, el tipo de acorde (mayor, menor, disminuido, aumentado, etc.) y la inversión del acorde (raíz, primero o segundo)

Redes neuronales son adecuadas para predicción de series de tiempo (pronóstico), lo que significa que son igualmente aptos 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 cadena de Markov que no sea reducir la huella de memoria.

Además del tono, necesitará duración para determinar el ritmo de las notas o acordes generados. Puede elegir 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.

Los algoritmos genéticos se pueden usar para evolucionar las secciones de ritmo. Un modelo simple podría usar un cromosoma en el que los primeros 32 bits representan el patrón de un bombo, el segundo 32 bits una caja, el tercero 32 bits un hi hat cerrado y así sucesivamente. La desventaja en este caso es que requieren comentarios humanos continuos para evaluar la idoneidad de los patrones recientemente desarrollados.

Un sistema experto se puede utilizar para verificar las secuencias generadas por las otras técnicas. La base de conocimientos para dicho sistema de validación probablemente se puede eliminar de cualquier libro o sitio web de teoría musical. Pruebe la musictheory.net de Ricci Adams.

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

http://www.algorithmic.net

Un algoritmo fácil y algo efectivo es usar 1 / f noise también conocido como " noise rosa " 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" para 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. Para mejorar esto, observe la secuencia de las últimas notas, por ejemplo " C A B " es probable que el 15% esté seguido por B, y el 4% que esté seguido por un Bb, etc. Luego, simplemente seleccione las 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

Dmitri Tymoczko tiene algunas ideas y ejemplos interesantes aquí:

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

Siempre me han gustado los antiguos juegos de Lucasarts que usaban el sistema iMuse, que producían una banda sonora reactiva e interminable para el juego y que 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 al iMuse para crear o influenciar la música sobre la marcha.

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

Compáralo con escribir un poema: puedes generar fácilmente poemas no genéricos que suenen muy vanguardistas, pero replicar shakespeare con un algoritmo es difícil, para decirlo suavemente.

¿Ha echado un vistazo a SoundHelix (http://www.soundhelix.com)? Es un marco Java de código abierto para la creación de música aleatoria algorítmica que produce música bastante ordenada. Puede usar SoundHelix como una aplicación independiente, como un applet incrustado en una página web, como un applet 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

La investigación sobre la generación de música procesal no aburrida se remonta. Navega por ediciones antiguas y nuevas de Computer Music Journal. http://www.mitpressjournals.org/cmj (¿no tiene un nombre de dominio real?) Esto tiene seriedad técnica artículos de uso real para manipuladores de síntesis de música, soldadores de hierro, pastores de bits e investigadores académicos. No es un mullido de revisiones y entrevistas, como varias de las revistas que puedes encontrar en las principales librerías.

Un tema tan grande. 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 dinámica de música vienen con cosas que suenan, bueno, académicas. Creo que las cosas más exitosas se encuentran en los márgenes del mundo del club / electrónica. Monolake es mi héroe a este respecto. Cosas muy escuchadas, muy generadas 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 teniendo en cuenta que es un chico académico.

La técnica que he estado considerando es crear pequeños patrones musicales, hasta un bar o algo así. Etiquete estos patrones con identificadores de sentimientos como 'emoción', 'intenso', etc. Cuando desee generar música para una situación, elija algunos patrones basados ??en estas etiquetas y elija el instrumento con el que quiera tocar. Basándose en el instrumento, descubra cómo combinar los patrones (p. Ej., En un piano puede tocarlos todos juntos, dependiendo del alcance de la mano, en una guitarra puede tocar las notas en rápida sucesión) y luego procesarlos en PCM . Además, puede cambiar la clave, cambiar la velocidad, agregar efectos, etc.

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 puedo recordar cómo lo 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.

El libro Composición Algorítmica es una buena 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 en este amplio tema, sin embargo, nunca describe en profundidad cómo funciona cada método. Proporciona una buena visión general de cada uno, pero no será suficiente si aún no los conoce.

A finales de los 90, Microsoft creó un control ActiveX llamado " Interactive Music Control " que hizo exactamente lo que estás buscando. Desafortunadamente, parecen haber abandonado el proyecto.

No es exactamente lo que estás buscando, pero conocí a alguien que buscaba la generación automática de conjuntos de DJ llamados Similitud de música basada en contenido .

Si te gustan las teorías más profundas sobre cómo la música se une, sitio de Bill Sethares Tiene algunos giros interesantes.

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

  

8.1 Cosecha automatizada y análisis estadístico de corpora musical

     

Análisis tradicional de partituras   consiste en una o mas personas   Analizando ritmo, secuencias de acordes y   Otras características de una sola.   pieza, ambientada en el contexto de una frecuencia   vaga comparación de otras piezas por   el mismo compositor u otros compositores   del mismo periodo.

     

tradicional   El análisis automatizado de la música apenas tiene   Partituras tratadas, pero se ha centrado.   en el análisis de la señal y el uso de   Técnicas de aprendizaje automático para extraer.   y clasificar dentro, digamos, estado de ánimo o   género. En contraste, la investigación incipiente.   en DIKU tiene como objetivo automatizar partes de la   Análisis de las partituras. El agregado   El valor es el potencial de extracción.   información de grandes volúmenes de   partituras que no se pueden hacer fácilmente   a mano y no puede ser significativo   analizado por aprendizaje automático   técnicas.

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

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 por horas de producción musical de sus algoritmos (que creo que en su mayoría estaban basados ??en la Cadena de Markov) 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 " disco " el estilo otorgaría muchos puntos por una línea de bajo que presenta ritmos extraños y partes de batería con lazos en los ritmos de fondo, pero sustrae los puntos para armonías muy 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.

He estado trabajando en un módulo de Python para música de procedimiento. Acabo de programar lo que sé sobre notas, escalas y construcción de acordes, luego he podido dejar que genere contenido al azar 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 entiende mejor el tema. Luego, puede usar esos sistemas como restricciones para los algoritmos genéticos o la generación aleatoria de contenido.

Puede revisar mi implementación aquí , especialmente el ejemplo de plomo generado al azar puede ser útil para usted. Alguien con una sólida comprensión 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, deberá codificar la teoría del tipo de música que desea generar, y luego usarla como una restricción para algún algoritmo para explorar el rango de esa teoría de manera procesal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top