¿Cómo extraer info de un archivo .mid?

#1 por macki el 01/02/2013
Entendiendo que un archivo midi (.mid) solo contiene información relativa a que notas deben sonar, a que velocidad, etc. La información necesaria para que un sinte o un reproductor que acepte info midi reproduzca, en el caso que quiero exponer, una canción.

El caso es que yo tengo un archivo .mid, un tema de Kraftwerk - Autobahn, si lo abro con un DAW, el Ableton, me encuentro con un PianoRoll con toda la información relativa a que nota y que velocidad se debe reproducir este tema, pero no distingue si debe ser percusión, guitarra, sinte, etc. Eso si, si lo reproduzco en el reproductor de Windows Media (con sus limitaciones) si es capaz de discriminar si la info midi es percusión, sinte, guitarra, etc.

Entonces, entiendo que cuando lo abro en Ableton pierde info, o el DAW no es capaz de extraer toda la info que contiene.

¿Existe alguna manera de poder extraer toda esa info, saber que notas corresponde a tal y cual instrumento? ¿Hay alguna aplicación que lo haga?
Espero haberme explicado bien!!!

Adjunto archivo .mid con Autobahn.
Archivos adjuntos:
piano-mid.jpg
BBCode:

Macki

Subir
#2 por Tio Harpo Molon el 01/02/2013
macki escribió:
El caso es que yo tengo un archivo .mid, un tema de Kraftwerk - Autobahn, si lo abro con un DAW, el Ableton, me encuentro con un PianoRoll con toda la información relativa a que nota y que velocidad se debe reproducir este tema, pero no distingue si debe ser percusión, guitarra, sinte, etc. Eso si, si lo reproduzco en el reproductor de Windows Media (con sus limitaciones) si es capaz de discriminar si la info midi es percusión, sinte, guitarra, etc.


Hay 2 cosas que debes saber:

En MIDI se utilizan controladores continuos para controlar este tipo de cosas, existe uno llamado cambio de programa, pero no recuerdo cual es el numero que le corresponde (cada controlador continuo se identifica con un numero). El parametro velocity tambien es un CC (Controlador Continuo) y aparece por lo general bajo la secuencia en el piano roll, en esa misma zona donde puedes editar dicho parámetro podrás seleccionar el CC correspondiente al cambio de programa, el numero de programa determinará el instrumento.

Lo siguiente que debes saber, es que el reproductor de windows para hacer sonar la secuencia MIDI utiliza un sintetizador por tabla de ondas, este sintetizador se basa en el estándar General MIDI o GM, el cual determina que cada programa corresponda siempre al mismo instrumento, siempre que estés utilizando un sintetizador compatible con GM. El sintetizador por tabla de ondas reproduce el instrumento de acuerdo al CC que se encuentre en la secuencia MIDI.

Ahora bien, conociendo estas 2 cosas te explico que en un secunciador como lo es Live o cubase o cualquiera de ellos no trabajan por defecto utilizando un sintetizador por tabla de ondas compatible con GM, si no que te dan la opción de tu utilizar el sintetizador que quieras mediante la utilización de plugins compatibles con el estándar VSTi.

Por lo tanto para que suene tal cual suena en el reproductor de windows, pues debes seleccionar dentro de tu secuenciador el mismo sintetizador por tabla de ondas que utiliza el reproductor. En win XP existe un sintetizador por tabla de ondas integrado en el sistema, por lo que podrás selecionarlo, pero en win 7 ya no existe, por lo que no se si se pueda, pero en realidad nadie utiliza el sintetizador propio de windows, para eso están los plugins, claro que en cada plugin el cambio de programa puede generar cosas distintas, ya que solo en un sintetizador GM podrás elegir los instrumentos clásicos de la paleta General MIDI, pero en un sintetizador que solo haga sonidos electrónicos, pues un cambio de programa te llevará a algún preset determinado del sintetizador.
Subir
#3 por pablofcid el 02/02/2013
Hola Macki

A partir de la figura que muestras, me da la impresión de que te pasa también lo siguiente:

Los ficheros MIDI tienen la extensión .MID, pero en realidad con esa extensión hay dos tipos de fichero MIDI, los tipo 0 y los tipo 1.
En los ficheros tipo 0 todos los mensajes de todos los instrumentos están combinados en una única pista, lo cual no impide que suene cada nota con el instrumento que requiere puesto que cada nota MIDI contiene la información del canal (1 a 16) por el que viaja, y en cada canal típicamente podemos tener un sonido diferente ejecutando esas notas.
Los tipo 1 tienen pistas separadas para cada canal.
En tu caso (lo muestra la imagen) debes estar partiendo de un MIDI de tipo 0, y te está mezclando en una sola pista toda la información de los diferentes canales.

¿Qué puedes hacer?

En muchos programas hay opciones para separar una pista en varias usando la información de canal para realizar la segregación.
Por ejemplo en los cubase antiguos (hace unos días se lo mostré a un amigo sobre un Cubase SX) estaba la opción 'disolve' en los menús para realizarlo. En Cubases más modernos al importar directamente aplica la disolución y aparecen pistas separadas incluso cuando importas un MIDI file tipo 0.
En el programa que tú usas no sé qué función será la que lo haga, pero previsiblemente tenga alguna.

En los programas que yo manejo también puedes decir que esa pista en la que ha quedado todo mezclado use como canal MIDI de salida 'any' u 'omni' (depende de cómo lo llamen) en vez de usar un canal MIDI concreto (el 1, el 2...). Cuando das un número concreto, todos los mensajes (las notas y otros mensajes MIDI de canal) van a verse 'cambiados' al canal que hayas escogido. Sin embargo con 'Any' / 'Omni' o como se llame en tu caso, los mensajes saldrán tal como estén registrados, cada uno con su número de canal, y por tanto sonarán por diferentes canales MIDI (previsiblemente con diferentes sonidos).

Pero esa última opción te dejaría todavía toda la información en una única pista, y supongo que prefieres tenerla separada (para poder tener más control). Si no das con la opción que te permita importar MIDI Files tipo 0 o bien una vez importado como lo tienes en una sola pista conseguir separarlo, tienes todavía otra posibilidad. Hay un montón de utilidades gratuitas y shareware en Internet que convierten tipo 0 a tipo 1 y viceversa. Instálate alguna y resuelto tu problema.

En lo que te cuenta harpocrates (perdóname, harpo) hay buena intención y por ello mucho que agradecer, pero también alguna inexactitud.
Los mensajes de controlador (CC) se usan para muchas cosas en MIDI, pero los cambios de programa tienen su propio mensaje (Program Change), y la velocidad (fuerza) con la que se toca cada nota (Velocity) es una parte del propio mensaje de activación de nota (Note On).
Pero yo creo que tu problema no estaba tanto en estas cuestiones, sino en la referida a que te aparecían todas las notas e instrumentos combinados en una sola pista, y que podrás resolver con lo que te he comentado.

¡Suerte!

Pablo Fdez-Cid

http://www.cicloquintas.es (formación en síntesis y tecnologías para la música)
http://www.hispasonic.com/pablofcid/articulos (artículos sobre música y tecnología)

Subir
Respuesta rápida

Regístrate o para poder postear en este hilo