Ejemplo de uso de una de las consolas MIDI que construí controlando una aplicación Flash.
Introducción
Durante los años 2011~12 diseñé y construí 3 consolas MIDI con las cuales puedo controlar software de terceros tales como Virtual DJ, Traktor, Fruity Loops, Reason, Arkaos, Resolume, Jezcola Buzz, 3D Studio MAX y básicamente cualquier programa que posea entrada MIDI. Pero siempre me quedé con las ganas de desarrollar aplicaciones propias que permitan el uso de mis consolas.
Este año he decidido llevar a cabo algunos proyectos con tecnología MIDI que me permitan aprovechar todas las ventajas de este protocolo.
Investigación
Durante esta etapa me dediqué a realizar un análisis de las diversas tecnologías de desarrollo, que beneficios obtengo de cada una y sobre todo sus impedimentos.
Llegué a la conclusión de que lo mejor son las aplicaciones web debido a su relativa independencia de la plataforma. Por desgracia, tanto Javascript como Actionscript no tienen soporte directo para protocolo MIDI, lo que casi tira por tierra mis espectativas.
Una de las soluciones posibles era desarrollar un servicio en C#, Java o similar que sea consumido por javascript a través de una conexión http, pero las pruebas que hice fueron desalentadoras. La latencia de la conexión hacia imposible su uso.
Luego de muchas horas probando diversas soluciones dí con la definitiva. Java+Javascript+Actionscript. Esta combinación tiene una latencia de solo algunos milisegundos y ofrece una experiencia agradable, percibiéndose como tiempo real.
Descripción del proyecto
Para este proyecto he desarrollado:
- Una aplicación JAVA encargada de configurar los dispositivos y recibir los eventos MIDI.
- Una aplicación Flash que consume estos eventos.
- Una API Javascript que interactúa con ambas aplicaciones canalizando los mensajes.
La aplicación JAVA cuenta con los métodos necesarios para devolver una lista de los dispositivos MIDI instalados en el sistema, permitir la selección de un dispositivo de entrada y el envío de datos disparando un evento.
La aplicación Flash interpreta un archivo de configuración XML en el que se detallan los archivos de sonido a cargar, sus títulos y las notas que se usan para dispararlos. Una vez cargados los botones pueden usarse como una botonera normal, mediante el mouse.
Si encuentra cargada la aplicación JAVA entonces realiza una petición de dispositivos, activa el que corresponda a la consola MIDI y queda a la espera de los eventos MIDI.
Por último la API en Javascript es la encargada de garantizar la carga de ambas aplicaciones, procesar las llamadas y manejar los eventos.
Muy pronto iré publicando los resultados de mis proyectos.



















