Computadoras aprendiendo música

Published on Author lopezLeave a comment

Gracias a un tweet de @maraoz, me enteré que estaba MatBaires 09, Festival Matemático, el fin de semana pasado, en el Centro Cultural Recoleta, acá en Buenos Aires. Me perdí varias conferencias (el bueno de @maraoz envió el mensaje el sábado), así que no pude asistir a ver a Gregory Chaitin, Guillermo Martinez, y a otros, como John Allen Paulos. Pueden ver el programa y los temas en:

http://www.festivalmatematica.gov.ar/home09/web/es/index.html

(recuerdo haber trabajado en los ochentas, con el intérprete Lisp que Chaitin había escrito en Fortran, en la Universidad de Buenos Aires, yo fui lo bastante nerd como para reimplementarlo en assembler de 8080…. 馃槈

Una charla a la que pude asistir fue:

¿Puede una computadora aprender a componer música?

Por Pablo Rodríguez Zivic.

Al escuchar una pieza musical, uno es capaz de extraer información acerca del estilo, la métrica, y tal vez teniendo mayor conocimiento sobre teoría musical, cuestiones relacionadas con la armonía y el contrapunto. Todo músico es influenciado por otros músicos debido a diferentes razones, y esta capacidad de ser influenciado está estrechamente relacionada con la capacidad de extraer información útil para la composición a partir de escuchar lo que otros ya han hecho. Ahora, la pregunta es: ¿es posible darle a una computadora un conjunto de piezas musicales y que esta sea “influenciada” por este conjunto para componer nueva música?

(ver la actividad del domingo 10 de Mayo en http://www.festivalmatematica.gov.ar/home09/web/es/events/index/v/date/20090510.html#)

Pablo está trabajando en Popego, que yo sepa, y es compañero entonces de @santisiri y @scoffey, los que conocí personalmente ahí, entre el público. Popego está aplicando técnicas de inteligencia artificial, creo que son los de Zauber quienes las programan… Pero vayamos al tema de la conferencia.

Pablo se manejó bien, hubo bastante asistencia, y comenzó a tiempo. Excelente sonido, que fue aprovechado por Pablo para presentar el trabajo que está realizando para su tesis, comenzado hace apenas unos meses.

Primero planteó qué es una computadora, qué es aprender y qué es componer música.

A la primera pregunta, presentó que una computadora es un programa. Remontó todo al cálculo lambda (si, como gran parte de la humanidad, NO ESTAN suigiendo mis posts, lean:

Notas sobre el Cálculo Lambda
Presenting AjLambda, lambda calculus in C#
Presentando AjLambda: implementación de Cálculo Lambda en C#

)

Pablo hasta usa la misma foto de Alonzo Crurch que uso en mis charlas… :-)…. y luego comentó su equivalencia con las máquinas de Turing.

Con respecto a aprender, no me quedó tan claro hacia adonde apuntaba en su charla. Yo colecciono enlaces sobre Machine Learning en

http://delicious.com/ajlopez/machinelearning

Y despues comentó sobre qué es componer música. Y destacó que lo que uno considera música, depende de nuestro criterio humano. De ahí el desafío para un programa: que produzca no ruido, sino música.

En ese tema, recordó el trabajo de Heinrich Schenker. Pueden leer sobre su trabajo

Schenkerian analysis – Wikipedia, the free encyclopedia
Tom Pankhurst’s Guide to Schenkerian Analysis – Home Page.
Schenker Analysis for Pantonal Composition

Pablo comentó que si bien Schenker describía sus ideas sobre cómo analizar música, no daba pautas claras, lo que hoy llamaríamos un algoritmo. Recordó el trabajo de Fred Lerdahl y Ray Jackendoff:

Amazon.com: A Generative Theory of Tonal Music: Fred Lerdahl, Ray Jackendoff…

Por lo que entendí, estos trabajos se basan en gramáticas generativas (yo diría a al Chomsky), para ir describiendo música. Pablo presentó una partitura analizada de esa forma.

Y luego llegaron los platos fuertes, el trabajo de Pablo en acción.

Presentó en su notebook, un programa que lee y ejecuta un archivo MIDI y luego lo modifica, agregando notas (en un instrumento elegido manualmente), especificando altura y duración, SOBRE la música original. Ejecutó tres pruebas, recuerdo una sobre Mozart, y otra sobre Gershwin. Muy bien logrado la salida del programa, que no digamos “uy que bruto, que música generada….” 馃槈 pero era aceptable como producción.

Para cada música, presentó un diagrama de las decisiones que tomaba el programa para elegir su próxima nota. Pero no aclaró mucho sobre cómo se formaba ese diagrama. No parecía que tuviera relación con gramáticas generativas.

Al final, hubo una animada sesión de preguntas, lo que revela el interés que había despertado en el público. Yo pregunté si podía explicar en detalle el algoritmo que había usado para su programa, pero respondió que nos dormiríamos. Ahí se reveló que gran parte de la audiencia conocía de algunos temas, y luego de algunas preguntas más, Pablo soltó la prenda: estaba usando cadenas de Markov.

Eso era algo distinto de la línea que venía explicando. Recuerdo haber leido artículos sobre generación de música usando

Alguien preguntó sobre si se podía aplicar este “approach” a literatura. Me hubiera gustado comentar ahí dos cosas: una, recordar a mi apreciado Stanislav Lem, que en uno de sus excelentes “prólogos inventados”, creo que de su libro “Vacío perfecto”, trata de supercompadoras militares, una de las cuales se dedica en algún tiempo libre a analizar la obra de Dostoievsky, descubriendo que sus escritos forman una especie de toro en varias dimensiones, a las que le falta un pedazo. Y lo completa, escribiendo una obra que falta, a la que Lem describe con detalle, y uno se convence de que es la obra que Dostoievsky debería haber escrito.

Otra: que hay trabajos sobre la generación de texto, usando gramáticas generativas. Yo recordaría mi post:

Posmopolitan

Hubo varias sugerencias sobre cómo podría seguir Pablo con su trabajo. Creo que quedó la impresión que las cadenas de Markov son un “dead end”, pero habrá que ver.

Si hasta estuvo Gregory Chaitin y todo preguntando!!! (la primera vez que lo veo en persona!!)

Yo recuerdo haber sugerido:

– Armar un sistema que emplee reglas generativas, pero que las reglas se vayan descubriendo o aprendiendo (no tener que escribir las reglas). Yo me imagino un trabajo como el de Lenat con Eurisko, se le dan al programa música, y va intentando descubrir por sí mismo reglas

– Tener en Internet un comparador de música generada, para que los seres humanos vayamos “taggeando”, “rankeando” nuestras preferidas. Una especie de popego de música generada… 馃槈

Y en algún momento, haría hincapié en el tema de “aprender”. Ese es un camino difícil, pero que puede ser fructífero. Que el programa se modifique a sí mismo, a sus reglas, a sus decisiones, lo que sea, pero que el programa evolucione.

Comentaría acá algo adicional: exploraría en algún momento, el jazz. En esa música, se encuentra la tensión entre lo que el oyente espera, y lo que ejecutante decide. Si lo que el ejecutante es demasiado aleatorio, se pierde el encanto. Si es demasiado predecible, no hay gracia. O tal vez, comenzaría por Bach, y hacer que el programa haga ingeniería inversa, redescubra reglas de la fuga. Se comentó algo

Si quieren ver algo sobre cadenas de Markov en música, a visitar:

michael clemow ” Blog Archive ” markov chain music
CiteULike: Extracting Patterns in Music for Composition via Markov Chains
Digital Music Programming II- Markov Chains

En el medio de las preguntas, Pablo mencionó al pasar otros temas: me temo que los mencionó al pasar (uno de los pocos defectos de la charla, mencionar algo sin dar un detalle más firme sobre lo que avanzar). Supongo que eran:

CiteULike- The nested Chinese restaurant process and hierarchical
GWCR – Generalized Weighted Chinese Restaurant Monte Carlo algorithm
Dirichlet process – Wikipedia, the free encyclopedia

De nuevo, supongo que está explorando formas aplicar análisis estadístico sobre música de entrada. Recuerdo varios artículos que tengo en otro cubil, sobre la aplicación de cadenas de markov, y otros, sobre cómo se obtenían distintas reglas, según la entrada sea mucho blues, vs música más “clásica”. Hubo un tiempo en los ochentas, que Douglas Hofstadter se ocupó mucho del tema. Debo tener alguna Scientific American son eso.

No recuerdo que Pablo haya mencionado a Eugene Narmour, parece que lo mencionó en una charla que tuvo con Chaitin luego. Ver:

Eugene Narmour

Algunos enlaces que voy coleccionando sobre el tema

http://delicious.com/ajlopez/computermusic

Pablo abrió hace unos días, su blog, para los que quieran seguir su progreso:

http://lacompositora.blogspot.com/

Pueden leer ahí su avance sobre la línea Narmour.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez
http://ajlopez.popego.com

Enjoying Pappo playing piano, third video at Más blues con Pappo
No algorithm for that music, yet! 馃槈

Leave a Reply

Your email address will not be published. Required fields are marked *