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).
fuente
Respuestas:
Autómatas celulares - leer .
También puedes probarlo aquí .
Editar:
rakkarage ha proporcionado otro recurso: http://www.ibm.com/developerworks/java/library/j-camusic/
fuente
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.
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 .
fuente
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
fuente
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
fuente
Dmitri Tymoczko tiene algunas ideas y ejemplos interesantes aquí:
http://music.princeton.edu/~dmitri/whatmakesmusicsoundgood.html
fuente
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.
fuente
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.
fuente
¿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
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
No es exactamente lo que buscas, pero conocí a alguien que buscaba generar automáticamente sets de DJ llamado Content Based Music Similarity .
fuente
Si te gustan las teorías más profundas sobre cómo la música se une, el sitio de Bill Sethares tiene algunos giros interesantes.
fuente
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:
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.
fuente
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.
fuente
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