algorithm music midi composition

algorithm - Meta-composición durante actuaciones musicales



midi composition (8)

Hace un par de semanas, mi profesor de piano y yo estábamos intercambiando ideas sobre el software de metacomposición musical. La idea era esta:

Hay un sistema que toma la entrada MIDI de un grupo de instrumentos y empuja la salida hacia los parlantes y las luces. El software que se ejecuta en este sistema analiza los datos midi que recibe y determina qué sonidos usar, según los disparadores configurados por el compositor (cuando toco un acorde F7 3 veces en 2 segundos, cambio del sonido de clavicémbalo al sonido de piano ), pedales o análisis real de la música en tiempo real. Controlaría las luces según el rendimiento y los sonidos de los instrumentos de una manera similar (el músico solo tendría que especificar vagamente lo que deseaba) y el análisis en tiempo real de su interpretación haría el resto. Sobre la marcha, la música generada por el procedimiento también podría tocar junto con el músico. Esencialmente, el software jugaría junto con el ejecutante, con uno guiando al otro. Imagino que tomaría un poco de práctica acostumbrarse a dicho sistema, pero que podría tener resultados bastante increíbles.

Soy un gran fanático del improv jazz. Una característica de la improvisación que falta en otras formas de arte es la temporalidad de la misma. Una pintura puede apreciarse 10 o 1000 años después de haber sido pintada, pero la música (especialmente la improvisada) se trata de la interpretación, ya que es la creación. Creo que el software que describí agregaría mucho al rendimiento, como con él, ya que tocar exactamente la misma pieza daría lugar a un espectáculo completamente diferente cada vez.

Entonces, ahora para las preguntas.

¿Estoy loco?

¿Ya existe software para hacer algo o todo esto? Investigué un poco y no encontré nada. La clave de este sistema es que se ejecuta durante la ejecución.

Si escribiera algo como esto, ¿un lenguaje de scripting como Python sería lo suficientemente rápido como para hacer los cálculos que necesito? Es de suponer que se estaría ejecutando en un sistema bastante rápido, y podría aprovechar los procesadores centrales 2 ^ n que Intel sigue lanzando.

¿Alguno de ustedes puede compartir su experiencia y consejos sobre la interacción con instrumentos musicales, luces y similares?

¿Tienes alguna idea o sugerencia? ¿Crítica fría y dura?

¡Gracias por su tiempo al leer esto y por todos los consejos! (Y perdón por la broma en las etiquetas, no pude resistir)


He usado bastante PyAudio para manejar entradas de audio en bruto, y he descubierto que es muy antiponético, y actúa mucho más como un envoltorio muy fino sobre el código C. Sin embargo, si se trata de midi, en lugar de formas de onda en bruto, entonces sus tareas son bastante más simples, y python debería ser bastante rápido, a menos que juegue a 10000 beats por minuto :)

Algunos de los problemas: detección de simultaneidad, análisis armónico (formal, es decir, estructura de la cuerda).

Este es también un problema 80/20 que si restringe las progresiones de acordes permitidas, entonces se vuelve un poco más simple. Después de todo, ¿qué significa "jugar junto", de todos modos, ¿verdad?

(Además, en las confesiones de música electrónica que he sido también, hay mucha gente haciendo varios experimentos de acompañamiento en tiempo real basados ​​en el sonido y el movimiento de entrada). ¡Buena suerte!


Mira PureData . Puede hacer un extenso análisis midi y la gente lo usa para el desempeño.

De hecho, aquí hay un video que parpadea más allá de una pantalla de datos puros. Muestra a alguien interactuando con un instrumento bastante complejo usando PD.

Además, mira CSounds .


La gente ha usado Max MSP para hacer este tipo de cosas con Midi y crear acompañamiento de video, o simplemente acompañamiento Midi. Es una aplicación completamente de dominio específico, que probablemente se inspiró en una pequeña charla o algo, que casi ningún programador real podría amar, pero los programadores músicos sí.

A pesar del texto en el sitio que acabo de vincular, y el hecho de que "todos" usa la versión comercial, no siempre fue un producto comercial. Ircam finalmente lanzó su propio linaje . Se llama jMax . PureData , mencionado en otro post aquí, es otra reescritura de ese linaje.

También hay CSound; que no estaba destinado a ser en tiempo real, pero es probable que pueda ser bastante en tiempo real ahora que tiene una computadora decente en comparación con donde comenzó CSound.

Algunas personas también han pirateado las extensiones de Macromedia Director para permitir hacer cosas midi en Lingo ... Eso está muy desactualizado y, por lo tanto, algunos de ellos se han trasladado a entornos de Adobe más modernos .


También puede ver ChucK y SuperCollider , los dos lenguajes de programación musical en tiempo real más populares.

Además, es posible que se sorprenda de lo mucho que puede lograr con los bastidores Ableton Live .

(y es CSound. No ''s'' al final)


Puede contactar a Gary Lee Nelson en el departamento de TIMARA en Oberlin. Hace 20 años hice un proyecto que generó automáticamente la sección rítmica para blues de 12 compases y recuerdo que describió una herramienta que él conocía que básicamente hacía lo que usted describía.


Usted podría estar interesado en GenJam


ver también:

No tengo idea si el segundo es realmente real o vale la pena mirarlo. Keykit, sin embargo, es.


La respuesta a tu pregunta es no, no estás loco. Existen sistemas similares, pero su descripción es bastante vaga para comenzar, por lo que no es muy específico para juzgar en contra.

Sugiero que empieces a escribir un prototipo y veas cómo funciona. Algo extremadamente pequeño y simple. Los sistemas existentes sean malditos.

Estoy usando c ++ en win32 api (no mfc). Comencé a escribir mi secuenciador en el Amiga500. No hace luces, pero hay mucho que hacer con solo música.

Buena suerte para ti. Es un proyecto EXTREMADAMENTE divertido. Yo diría "no": modele su proyecto sobre cómo funcionan otros proyectos. Porque, si me preguntas, no funcionan tan bien;) Y la diversión es poder hacer algo diferente.