Posts Tagged ‘midi’

Consola MIDI a Flash

Domingo, marzo 3rd, 2013

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.

Consola de mezcla midi con dos bandejas giradiscos

Domingo, noviembre 13th, 2011

Diseño basado en consolas comerciales que permite realizar mezclas de música, agregar efectos, reproducir samples y muchas funciones configurables según la necesidad. Actúa como interface para programas como Virtual DJ, Traktor, DJ ProMixer, etc…

Posee 19 potenciometros que se pueden configurar para cumplir cualquier función que deseemos, de los cuales dos son comunmente usados como controles de volumen de cada deck y uno para controlar las mezclas.

Además cuenta con 22 pulsadores de uso general, se pueden configurar a gusto en el mapeo del software usado.

Cuenta con dos discos para realizar scratching y/o como diales para la selección de temas, efectos y demás.

01_consola_midi2_pompa

Para su construcción seguí los pasos de la nota anterior Consola midi de 16 canales

En este video puede verse parte de su funcionamiento:

Si no podés verlo en Youtube acá lo podés ver localmente:

Lista de materiales

  • 16 potenciometros rotativos de 50K lineales.
  • 16 pulsadores redondos normal abierto.
  • 3 potenciometros deslizantes de 50K lineales.
  • 6 pulsadores rectangulares normal cerrado (Deberían ser normal abierto pero me vendieron estos por equivocación así que adapte el diseño del circuito)
  • 2 motores de disco rígido con sus correspondientes separadores, platos y sujeciones.
  • 1 plancha de fibrofácil.
  • 1 plancha de mdf.
  • 1 pic 16F877A con zócalo
  • 3 HEF4051BE con zócalo
  • 1 7805
  • 1 capacitor electrolítico de 470uF 25V
  • 4 1N4007
  • 1 cristal 4MHz
  • 2 capacitores cerámicos de 33pF
  • 1 capacitor cerámico de 10nF
  • 2 resistencias de 220 Ohms
  • 1 placa perforada (perfboard)

Mecanicé la caja usando el mismo método que para la consola de 16 canales

02_consola_midi2_pompa

Una vez terminados de soldar todos los componentes

07_consola_midi2_pompa

Las dos consolas juntas

05_consola_midi2_pompa

Prueba exitosa en Virtual DJ

06_consola_midi2_pompa

Diagrama de componentes

08_consola_midi2_pompa

Diagrama de componentes actualizado con los discos de scratching

Consola MIDI de 16 canales

Domingo, octubre 2nd, 2011

Este proyecto está basado en una primera versión que desarrollé en el año 2002. El anterior contaba con 8 canales y una pantalla LCD que resultó ser un accesorio sin utilidad, salvo la de llamar la atención por aquel entonces.

14_consola_midi_pompa

El principal motivo para armar este dispositivo es el de emplearlo como complemento de teclados MIDI para componer música en programas tales como Reason, Fruity Loops, etc. Otro uso importante es la captura de movimiento en 3D Studio MAX.

Lista de componentes:

  • 1 cristal 4MHz
  • 2 capacitores cerámicos 33pF
  • 1 capacitor electrolítico 470uF
  • 2 resistencias 220 Ohms
  • 4 diodos 1N4007
  • 1 microcontrolador 16F877A
  • 2 multiplexores/demultiplexores analógicos de 8 canales 4051
  • 1 regulador de voltaje 7805
  • 8 potenciometros giratorios 50K lineales
  • 8 potenciometros deslizantes 50K lineales
  • 1 ficha hembra DIN 5 pines 180º para gabinete
  • 1 conector de alimentación CC hembra 2.1 mm
  • 1 conector de alimentación CC macho 2.1 mm
  • 1 zócalo de 40 pines
  • 2 zócalos de 16 pines
  • 1 plancha de fibrofácil
  • 1 plancha de MDF

En la plancha de fibrofácil marqué la posición de cada potenciómetro y los bordes

01_consola_midi_pompa

Utilicé una sierra caladora de banco para cortar los bordes

02_consola_midi_pompa

Empleé un torno con el accesorio de fresado para calar las perforaciones donde irán ubicados los potenciómetros

03_consola_midi_pompa

Resultado de haber calado todas las perforaciones

04_consola_midi_pompa

Utilicé una lija de grano fino para eliminar los rebordes y las marcas de guía

05_consola_midi_pompa

Luego del lijado obtuve un resultado como el siguiente

06_consola_midi_pompa

A continuación un repaso de los componentes que utilicé en el armado de la placa

07_consola_midi_pompa

En esta imagen se observa la placa con la etapa de alimentación terminada y los zócalos donde se insertarán los circuitos integrados

08_consola_midi_pompa

Luego del armado de la placa fijé los potenciómetros a la plancha usando la tuerca y arandela en el caso de los giratorios y la pistola encoladora para los deslizantes

10_consola_midi_pompa

Fijé la placa sobre los potenciómetros empleando un separador de fibrofácil a modo de aislante

11_consola_midi_pompa

Luego tomé la medida de los laterales y recorté una plancha de MDF para completar la caja

Para fijar los bordes empleé tornillos autorroscantes para madera

Resultado final luego de agregar los laterales de MDF

12_consola_midi_pompa

Esquema del circuito empleado

13_consola_midi_pompa