viernes, 27 de febrero de 2015

1.Comunicación (enviar datos MIDI desde arduino)

Lo primero que quiero mostrar es lo fundamental, la comunicación desde arduino hasta cualquier programa musical en este caso TRAKTOR SCRACH PRO pero tambien lo puedes conectar a cualquier otro programa que acepte controladores MIDI como es el caso de MIXXX que es de software libre.

Para ello usaremos el puerto serie de arduino, lo malo de esto es que no puedes tener abierta la comunicación serie del IDE de arduino puesto que el programa que usaremos necesita comunicarse con la placa de arduino por medio de Hairless-midiserial y MIDI-YOKE o LoopMIDI si tienes un ordendor moderno con un S.O. superior a Windows XP como puede ser Windows7 o 8 es mejor usar el segundo (LoopMIDI) pero para ordenadores antiguos es preferible el otro (MIDI-YOKE).




Esto es muy bonito pero hay que saber que se envía para poder controlar lo que quieres desde cada botón o potenciometro el programa de arduino es sencillo de entender tras un rato interpretandolo voy a intentar ponerlo de un modo sencillo para que no tengan que perder el tiempo en esto.

Del ejemplo de arduino MIDI que viene dentro de comunicacion utilizaremos todo menos el void loop en el que pondremos lo que queramos  que haga cada boton o potenciometro.

Para empezar hay que saber como se manda una pulsacion de un boton que es con el siguiente comando:

Aquí utilizamos la función noteOn() la cual tiene tres parámetros separados por comas en primer lugar va el canal (con lo que no he enredado mucho pero es un numero hexadecimal creo) en este caso es el canal 0. El segundo parámetro es la nota en este caso es la 36 que en MIDI es el do de la tercera octava. y por ultimo la velocidad que va de 0 a 127 que en los botones da igual porque 127 es pulsado y 0 es sin pulsar.


En este caso usamos la misma función con los mismos parámetros pero cambiando el canal que es el primero por uno de potenciómetros ya os he comentado que no he enredado mucho con esto así que es el primero que he encontrado que es el 0xb0 el cual es para potenciómetros, es segundo parámetro indica el numero de potenciómetro que mandas en mi caso mando varios potenciómetros y el tercer parámetro que es el que cambia es muy parecido va de 0 a 127 pero ahora aprovecharemos los 128 valores mapeando las lecturas de los potenciómetros para que en lugar de dar valores desde 0 a 1023 nos lo de desde 0 a 127 y poder controlar un potenciómetro virtual.

Aquí tuve un problema el cual David Cuartielles me dio la idea para solucionar el problema. Anteriormente enviaba la información de los potenciómetros de seguido lo cual colapsaba el puerto MIDI cuando ponías muchos potenciómetros, el me comentó que podía hacer una función introduciendo una variable para que solo se enviase la lectura cuando se movía el potenciómetro.

Sabiendo esto y suponiendo que todo el mundo sabe usar y poner pulsadores y potenciómetros llega el primer problema o complicación que necesitamos mandar las notas a unos determinados baudios para poder tener comunicación con el programa del principio (Hairless) para ello le damos a File -> Preferences... y dentro cambiemos el campo donde pone baud rate. En sistemas operativos de 64bit no se por qué se queda pillado si lo pones muy alto, yo lo tengo a 4800 baudios. Recuerda que este numero es el mismo que declaras al principio del programa en el "Serial.begin(4800);"

Y con esto en teoría sabemos mandar notas por MIDI hasta Hairless a continuación necesitamos abrir el programa LoopMIDI y crear un puerto MIDI virtual pulsando el mas.

Y de qui en adelante dependera del programa que quieras utilizar.
En la siguiente entrada explicare como enviar notas MIDI desde el programa a arduino.

No hay comentarios:

Publicar un comentario