Cómo hacer un controlador MIDI con un Arduino

Cómo hacer un controlador MIDI con un Arduino / Bricolaje

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 haberse llevado 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 The Internet of Things está aumentando en 2016, pero ¿qué significa eso exactamente? ¿Cómo te beneficias personalmente de la Internet de las cosas? Aquí hay algunos productos útiles para ilustrar. Lea más proyectos, un Arduino Uno simple (¿cuáles son los diferentes tipos de Arduino? Guía de compra de Arduino: ¿Qué placa debería obtener? Guía de compra de Arduino: ¿Qué placa debería obtener? Hay tantos tipos diferentes de tablas de Arduino por ahí, usted se le perdonará por estar confundido. ¿Qué debería comprar para su proyecto? Déjenos ayudarlo con esta guía de compras de Arduino. Leer más) tiene más que suficiente poder para este proyecto.

¿Primera vez usando un Arduino? No se preocupe, tenemos una guía completa para principiantes de Arduino Introducción a Arduino: una guía para principiantes Introducción a Arduino: una guía para principiantes Arduino es una plataforma de creación de prototipos de electrónica de código abierto basada en hardware y software flexibles y fáciles 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..

Que es MIDI?

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

MIDI soporta 16 canales. Esto significa que cada cable puede admitir 16 dispositivos diferentes que se comunican independientemente entre sí. Los dispositivos se conectan mediante 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 DIN de 5 pines, o se puede usar una interfaz USB-MIDI.

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 venir con un manual que explica qué canales y mensajes están configurados de manera predeterminada y cómo cambiarlos (conocido como asignación MIDI).

Los mensajes de cambio de programa (PC) son más simples que los mensajes de CC. Los mensajes de PC consisten en un solo número y se usan para cambiar el ajuste preestablecido o el parche en un dispositivo. Los mensajes de PC a veces son conocidos como “Cambio de parche”. Al igual que los mensajes CC, los fabricantes deben proporcionar un documento que describa qué ajustes predeterminados cambian un mensaje en particular.

Que necesitarás

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

Agua y madera 5 pzas DIN 5 pines PCB de montaje para enchufes hembra PC Teclado Agua y madera 5 pcs DIN 5 pines PCB de montaje hembra sockets para teclado de PC Compre Ahora En Amazon $ 2.79

Plan de construcció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 consta de dos botones para controlar el programa, un puerto MIDI para enviar los datos y un dispositivo para recibir los mensajes. Este circuito se ha construido en una placa de prueba Electrónica para principiantes: 10 habilidades que necesita saber Electrónica para principiantes: 10 habilidades que necesita saber Muchos de nosotros ni siquiera hemos tocado un soldador, pero hacer cosas puede ser increíblemente gratificante. Aquí hay diez de las habilidades electrónicas de bricolaje más básicas para ayudarte a comenzar. Lea más aquí, sin embargo, es posible transferirlo a una caja de proyecto y conectores soldados para una solución robusta.

Montaje del circuito

Conexión MIDI

Conecta tu zócalo MIDI de la siguiente manera:

  • MIDI pin 5 a Arduino Transmit (TX) 1 a través de una resistencia de 220 ohmios
  • MIDI pin 4 a Arduino + 5V a través de una resistencia de 220 ohmios
  • MIDI pin 2 a tierra de Arduino

Conexión de botón

Los botones funcionan cambiando la resistencia del arduino. “ve”. El pin Arduino pasa a través del interruptor directamente a tierra (BAJO) a través de una resistencia de 10k ohm (un “derribar” resistencia, asegurando que el valor se mantiene 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 DigitalRead (pin) mando. Conecte los botones a los pines 6 y 7 en la entrada / salida digital (E / S) de Arduino. Conecte ambos botones:

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

Pruebas MIDI

Ahora que todo el hardware está terminado, es hora de probarlo. Necesitará una interfaz USB-MIDI (muchas interfaces de audio pueden hacer esto) y un cable MIDI. El puerto MIDI cableado en la placa base está enviando datos, así que es la salida. Su computadora está recibiendo los datos, por lo tanto, es la entrada. Este proyecto utiliza la excelente Biblioteca MIDI Arduino v4.2 de Forty Seven Effects. Una vez que haya instalado la Biblioteca, puede incluirla en su código yendo a Sketch> Incluir biblioteca> 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 Así que, usted se ha comprado un Arduino Starter Kit, y Posiblemente algunos otros componentes geniales al azar, ¿ahora qué? ¿Cómo empezar realmente con la programación de 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 el Herramientas> Tablero y Herramientas> Puerto menús).

#incluir  #incluir  #incluir  #incluir  #incluir  MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // crea un objeto MIDI llamado midiOut void setup () Serial.begin (31250); // configuración serial para MIDI void loop () midiOut.sendControlChange (56,127,1); // envía un MIDI CC - 56 = nota, 127 = velocidad, 1 = retardo de canal (1000); // espera 1 segundo midiOut.sendProgramChange (12,1); // envía un PC MIDI - 12 = valor, 1 = retardo de canal (1000); // espera 1 segundo

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

¡Si no pasa nada, no te asustes! Intenta solucionar el problema:

  • Asegúrese de que todas las conexiones son correctas
  • Verifique que el puerto MIDI esté cableado correctamente; debe haber 2 pines de repuesto en los bordes exteriores
  • Comprueba que el circuito sea correcto
  • Verifique que el circuito esté conectado a una interfaz USB-MIDI con un cable MIDI
  • Compruebe que su cable MIDI está conectado a la entrada en su interfaz USB-MIDI
  • Asegúrate de que el Arduino tenga poder.
  • Instale el controlador correcto para su interfaz USB-MIDI

Si usted es todavía Teniendo problemas podría valer la pena revisar su placa de pruebas. Los tableros baratos a veces pueden ser muy inconsistentes y de baja calidad; me sucedió mientras trabajaba en este proyecto.

Prueba de botones

Ahora es el momento de probar que los botones funcionan correctamente. Sube el siguiente código de prueba. MIDI no necesita estar conectado para probar esta parte.

const int buttonOne = 6; // asignar el pin del botón a la variable const int buttonTwo = 7; // asigne el pin del botón a la configuración de vacío de la variable () Serial.begin (9600); // configuración serial para texto pinMode (buttonOne, INPUT); // botón de configuración como pinMode de entrada (buttonTwo, INPUT); // configurar el botón como entrada void loop () if (digitalRead (buttonOne) == HIGH) // marcar el retraso del estado del botón (10); // software de rebote si (digitalRead (buttonOne) == HIGH) // verifique nuevamente el estado del botón Serial.println ("Button One Works!"); // registrar el retraso del resultado (250);  if (digitalRead (buttonTwo) == HIGH) // check delay state state (10); // software de rebote si (digitalRead (buttonTwo) == HIGH) // verifique nuevamente el estado del botón Serial.println ("Button Two Works!"); // registrar el retraso del resultado (250);  

Ejecute este código (pero mantenga el cable USB conectado) y abra el Monitor en serie (Arriba a la derecha> Monitor de serie). Cuando presionas un botón deberías ver “Botón uno funciona!” o “Botón dos obras!” Dependiendo del botón que presionaste.

Hay una nota importante que se debe sacar de este ejemplo: el software de rebote. Este es un simple retraso de 10 milisegundos (ms) entre la verificación del botón y luego la verificación del botón nuevamente. Esto aumenta la precisión de la presión del botón y ayuda a evitar que el Arduino active el ruido. No tienes que hacer esto, aunque se recomienda..

Creando el Controlador

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

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

#incluir  #incluir  #incluir  #incluir  #incluir  const int buttonOne = 6; // asignar el pin del botón a la variable const int buttonTwo = 7; // asignar el pin del botón a la variable MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // crea un objeto MIDI llamado midiOut void setup () pinMode (buttonOne, INPUT); // botón de configuración como pinMode de entrada (buttonTwo, INPUT); // botón de configuración como entrada Serial.begin (31250); // configura la salida MIDI void loop () if (digitalRead (buttonOne) == HIGH) // marca el retardo del estado del botón (10); // software de rebote si (digitalRead (buttonOne) == HIGH) // verifique nuevamente el estado del botón midiOut.sendControlChange (56,127,1); // envía un MIDI CC - 56 = nota, 127 = velocidad, 1 = retardo de canal (250);  if (digitalRead (buttonTwo) == HIGH) // check delay state state (10); // software de rebote si (digitalRead (buttonTwo) == HIGH) // verifique nuevamente el estado del botón midiOut.sendControlChange (42,127,1); // envía un MIDI CC - 42 = nota, 127 = velocidad, 1 = retardo de canal (250);  

Nota - no podrás 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 (valor, canal); 

En acción

A continuación se muestra una demostración como controlador para Ableton Live (el mejor software para DJ para cada presupuesto, el mejor software para DJ para cada presupuesto, el mejor software para DJ para cada presupuesto Un buen software de mezcla puede marcar la diferencia en su rendimiento. Ya sea que use una Mac , Windows o Linux, se atienden todos los niveles de habilidad y presupuesto si desea comenzar a trabajar como DJ. Leer más). La esquina superior derecha muestra los medidores de audio, y la parte superior central muestra los mensajes MIDI que se reciben (a través del Monitor MIDI en OS X).

¿Has hecho un controlador MIDI??

Hay muchos usos prácticos para un controlador MIDI personalizado. Podría construir una gran unidad controlada con 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

Explorar más sobre: ​​Arduino, software para DJ, electrónica, MIDI.