Cómo hacer un controlador MIDI con un Arduino

Como músico que ha acumulado una colección de instrumentos musicales y cajas de ruido, el humilde Arduino es la herramienta perfecta para crear un controlador MIDI personalizado.

Como músico que ha acumulado una colección de instrumentos musicales y cajas de ruido, el humilde Arduino es la herramienta perfecta para crear un controlador MIDI personalizado.
Anuncio

Como músico que ha acumulado una colección de instrumentos musicales y cajas de ruido, el humilde Arduino es la herramienta perfecta para crear un controlador MIDI personalizado. Mientras que la Raspberry Pi puede haber tomado la corona de Internet of Things (IoT) Internet of Things: 10 productos útiles que debes probar en 2016 The Internet of Things: 10 productos útiles que debes probar en 2016 Internet de las cosas está aumentando 2016, pero ¿qué significa eso exactamente? ¿Cómo se beneficia usted personalmente con el Internet de las cosas? Aquí hay algunos productos útiles para ilustrar. Leer más proyectos, un Arduino Uno simple (¿cuáles son los diferentes tipos de Arduino? Guía de compra de Arduino: ¿Qué placa debe obtener? Guía de compra de Arduino: ¿Qué placa debe obtener? Hay tantos tipos diferentes de placas de Arduino por ahí, usted Sería perdonado por estar confundido. ¿Qué debería comprar para su proyecto? ¡Déjenos ayudar, con esta guía de compra de Arduino! Lea más) tiene potencia más que suficiente para este proyecto.

¿Es la primera vez que usas un Arduino? Sin preocupaciones, tenemos una guía completa para principiantes Arduino Comenzar con Arduino: una guía para principiantes Comenzar con Arduino: una guía para principiantes Arduino es una plataforma de prototipos de electrónica de código abierto basada en hardware y software flexible y fácil de usar. Está dirigido a artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos. Lea más para leer antes de abordar este proyecto.

Arduino-Midi-Controller-Breadboard

¿Qué es MIDI?

MIDI significa Interfaz Digital de Instrumentos Musicales. Describe una forma estándar para que los dispositivos musicales se comuniquen entre sí. Si posee un teclado electrónico, probablemente tenga una interfaz MIDI. Si bien hay algunos detalles técnicos involucrados en la implementación de MIDI, es importante recordar que MIDI no es de audio. Los datos MIDI son un conjunto simple de instrucciones (una instrucción se denomina "mensaje") que otro dispositivo puede implementar para crear diferentes sonidos o parámetros de control.

MIDI es compatible con 16 canales. Esto significa que cada cable puede admitir 16 dispositivos diferentes que se comunican de forma independiente entre sí. Los dispositivos se conectan usando un cable DIN de 5 pines. DIN significa "Instituto Alemán de Normalización", y es simplemente un cable con cinco pines dentro del conector. USB se usa a menudo en lugar de 5-pin DIN, o se puede usar una interfaz USB-MIDI.

MIDI-Cable-Male

Control de cambio y cambio de programa

Hay dos tipos principales de mensajes MIDI: Cambio de control y Cambio de programa.

Los mensajes de cambio de control (CC) contienen un número de controlador y un valor entre 0 y 127. Los mensajes de CC a menudo se usan para cambiar configuraciones como el volumen o el tono. Los dispositivos que aceptan MIDI deben incluir un manual que explique qué canales y mensajes se configuran de manera predeterminada y cómo cambiarlos (lo que se conoce como mapeo MIDI).

Los mensajes de cambio de programa (PC) son más simples que los mensajes CC. Los mensajes de PC constan de un solo número y se usan para cambiar el preajuste o parche en un dispositivo. Los mensajes de PC a veces se conocen como "Cambio de parche". De forma similar a los mensajes CC, los fabricantes deben proporcionar un documento que describa qué preajustes cambian por un mensaje en particular.

Que necesitarás

  • Arduino
  • Conector hembra DIN de 5 pines
  • 2 resistencias de 220 ohmios
  • 2 resistencias de 10k ohmios
  • 2 interruptores momentáneos
  • Cables de conexión
  • Tablero de circuitos
  • Cable MIDI
  • Dispositivo MIDI o interfaz USB

Agua y madera 5 piezas DIN 5 pines Montaje de PCB Sockets hembra para PC Teclado de agua y madera 5 Piezas DIN 5 pines PCB Montaje de enchufes hembra para teclado de PC Comprar ahora En Amazon $ 4.59

Plan de compilación

Este proyecto será bastante simple. Por supuesto, puede agregar más botones o hardware para satisfacer sus necesidades. Casi cualquier Arduino será adecuado, solo se necesitan tres pines para este ejemplo. Este proyecto consiste en dos botones para controlar el programa, un puerto MIDI para enviar los datos y un dispositivo para recibir los mensajes. Este circuito ha sido construido sobre una placa para el tablero. Electrónica para principiantes: 10 habilidades que necesitas saber Electrónica para principiantes: 10 habilidades que necesitas saber Muchos de nosotros nunca hemos tocado un soldador, pero hacer cosas puede ser increíblemente gratificante. Aquí encontrarás diez de las habilidades básicas de electrónica de bricolaje para ayudarte a comenzar. Lea más aquí, sin embargo, es posible transferirlo a una caja de proyecto y a conectores soldados para una solución robusta.

Asamblea de circuito

Arduino-Midi-Controller-Circuit

Conexión MIDI

MIDI-Pinout

Conecta tu toma MIDI de la siguiente manera:

  • PIN MIDI 5 a Arduino Transmit (TX) 1 a través de una resistencia de 220 ohm
  • PIN MIDI 4 a Arduino + 5V a través de una resistencia de 220 ohm
  • Pin MIDI 2 para Arduino

Conexión de botón

Los botones funcionan al cambiar la resistencia que "ve" Arduino. El pin Arduino pasa a través del interruptor directamente a tierra ( BAJO ) a través de una resistencia de 10k ohm (una resistencia "pull down", asegurando que el valor permanezca bajo). Cuando se presiona el botón, el valor visto por el circuito cambia a + 5v sin una resistencia ( ALTO ). El Arduino puede detectar este cambio usando el comando digitalRead (pin) . Conecte los botones a los pines 6 y 7 en la entrada / salida digital Arduino (E / S). Conecte ambos botones:

  • Lado izquierdo del botón a + 5V
  • Lado derecho del botón para Arduino Ground a través de una resistencia de 10k ohm
  • Lado derecho del botón al pin Arduino (6 o 7)

Prueba MIDI

Ahora que todo el hardware está terminado, es hora de probarlo. Necesitará una interfaz USB-MIDI (muchas interfaces de audio pueden hacerlo) y un cable MIDI. El puerto MIDI conectado a la placa de prueba está enviando datos, por lo que es la salida. Su computadora está recibiendo los datos, por lo tanto, es la entrada. Este proyecto utiliza la excelente Arduino MIDI Library v4.2 de Forty Seven Effects. Una vez que haya instalado la Biblioteca, puede incluirla en su código yendo a Sketch> Include Library> MIDI .

También necesitarás un programa para monitorear los datos MIDI entrantes:

  • Monitor MIDI para OS X
  • MIDI-OX para Windows
  • KMidimon para Linux

Conecte el Arduino Primeros pasos con su Arduino Starter Kit - Instalación de controladores y configuración de la placa y el puerto Primeros pasos con su Arduino Starter Kit - Instalación de controladores y configuración de la placa y el puerto Por lo tanto, se ha comprado un Arduino starter kit, y posiblemente algunos otros componentes fríos al azar, ¿y ahora qué? ¿Cómo empiezas a programar esta cosa de Arduino? ¿Cómo lo configura ... Lea más en su computadora y cargue el siguiente código de prueba (no olvide seleccionar la placa y el puerto correctos en Herramientas> Tablero y Herramientas> Menús de puertos ).

#include #include #include #include #include MIDI_CREATE_INSTANCE(HardwareSerial, Serial, midiOut); // create a MIDI object called midiOut void setup() { Serial.begin(31250); // setup serial for MIDI } void loop() { midiOut.sendControlChange(56, 127, 1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel delay(1000); // wait 1 second midiOut.sendProgramChange(12, 1); // send a MIDI PC -- 12 = value, 1 = channel delay(1000); // wait 1 second } 

Este código enviará un mensaje CC, esperará 1 segundo, enviará un mensaje de PC y luego esperará 1 segundo indefinidamente. Si todo funciona correctamente, debería ver aparecer un mensaje en su monitor MIDI.

Si no sucede nada, ¡no entres en pánico! Prueba solucionar problemas:

  • Asegúrese de que todas las conexiones sean correctas
  • Comprueba que el puerto MIDI esté cableado correctamente: debe haber 2 pasadores de repuesto en los bordes externos
  • Verifique dos veces si el circuito es correcto
  • Verifique que el circuito esté conectado a una interfaz USB-MIDI con un cable MIDI
  • Comprueba que tu cable MIDI esté conectado a la entrada de tu interfaz USB-MIDI
  • Asegúrate de que el Arduino tenga poder
  • Instale el controlador correcto para su interfaz USB-MIDI

Si todavía tiene problemas, podría valer la pena consultar su tabla de pruebas. Los tableros baratos a veces pueden ser muy inconsistentes y de baja calidad, me pasó mientras trabajaba en este proyecto.

Prueba de botones

Ahora es el momento de probar que los botones estén funcionando correctamente. Cargue el siguiente código de prueba. MIDI no necesita estar conectado para probar esta parte.

 const int buttonOne = 6; // assign button pin to variable const int buttonTwo = 7; // assign button pin to variable void setup() { Serial.begin(9600); // setup serial for text pinMode(buttonOne, INPUT); // setup button as input pinMode(buttonTwo, INPUT); // setup button as input } void loop() { if(digitalRead(buttonOne) == HIGH) { // check button state delay(10); // software de-bounce if(digitalRead(buttonOne) == HIGH) { // check button state again Serial.println("Button One Works!"); // log result delay(250); } } if(digitalRead(buttonTwo) == HIGH) { // check button state delay(10); // software de-bounce if(digitalRead(buttonTwo) == HIGH) { // check button state again Serial.println("Button Two Works!"); // log result delay(250); } } } 

Ejecute este código (pero mantenga conectado el cable USB) y abra el Monitor en serie ( Superior derecho> Monitor en serie ). Cuando presione un botón, debería ver "¡El botón uno funciona!" O "¡El botón dos funciona!" Según el botón que presionó.

Hay una nota importante para llevar de este ejemplo: el software de rebote. Este es un retraso simple de 10 milisegundos (ms) entre verificar el botón y luego revisar el botón nuevamente. Esto aumenta la precisión de la pulsación del botón y ayuda a evitar el ruido que activa el Arduino. No tienes que hacer esto, aunque es recomendado.

Creando el Controlador

Ahora que todo está conectado y funcionando, es hora de armar el controlador completo.

Este ejemplo enviará un mensaje CC diferente para cada botón que se presione. Estoy usando esto para controlar Ableton Live 9.6 en OS X. El código es similar a los dos ejemplos de prueba anteriores.

 #include #include #include #include #include const int buttonOne = 6; // assign button pin to variable const int buttonTwo = 7; // assign button pin to variable MIDI_CREATE_INSTANCE(HardwareSerial, Serial, midiOut); // create a MIDI object called midiOut void setup() { pinMode(buttonOne, INPUT); // setup button as input pinMode(buttonTwo, INPUT); // setup button as input Serial.begin(31250); // setup MIDI output } void loop() { if(digitalRead(buttonOne) == HIGH) { // check button state delay(10); // software de-bounce if(digitalRead(buttonOne) == HIGH) { // check button state again midiOut.sendControlChange(56, 127, 1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel delay(250); } } if(digitalRead(buttonTwo) == HIGH) { // check button state delay(10); // software de-bounce if(digitalRead(buttonTwo) == HIGH) { // check button state again midiOut.sendControlChange(42, 127, 1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel delay(250); } } } 

Nota: no podrá usar Serial.println () con salida MIDI.
Si desea enviar un mensaje de PC en lugar de un CC simplemente reemplace:

 midiOut.sendControlChange(42, 127, 1); 

Con:

 midiOut.sendProgramChange(value, channel); 

En acción

Debajo hay una demostración como controlador para Ableton Live (El mejor software para DJ para cada presupuesto El mejor software para DJ para todos los presupuestos El mejor software para DJ para cada presupuesto Un buen software de mezcla puede marcar la diferencia en su rendimiento. Ya sea que esté usando una Mac, Windows o Linux, cada nivel de habilidad y presupuesto es atendido si desea comenzar a pinchar. Lea más). La parte superior derecha muestra los medidores de audio, y la parte superior central muestra los mensajes midi entrantes (a través de MIDI Monitor en OS X).

¿Has hecho un controlador MIDI?

Hay muchos usos prácticos para un controlador MIDI personalizado. Podrías construir una gran unidad controlada por el pie, o un elegante controlador de estudio. ¿Has hecho un controlador MIDI personalizado? Déjame saber en los comentarios, ¡me encantaría verlos!

Crédito de la imagen: Keith Gentry a través de Shutterstock.com

In this article