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 por Internet de las cosas (IoT) Internet de las cosas: 10 productos útiles que debes probar en 2016Internet de las cosas se está intensificando en 2016, pero ¿qué significa eso exactamente? ¿Cómo se beneficia personalmente del Internet de las cosas? Aquí hay algunos productos útiles para ilustrar. Lee mas proyectos, un Arduino Uno simple (¿Cuáles son los diferentes tipos de Arduino? Guía de compra de Arduino: ¿Qué placa debería obtener?Hay tantos tipos diferentes de placas Arduino por ahí, que te perdonarían por estar confundido. ¿Cuál deberías comprar para tu proyecto? ¡Permítanos ayudarlo con esta guía de compra de Arduino! Lee mas ) tiene potencia más que suficiente para este proyecto.
¿Primera vez que usa un Arduino? No te preocupes, tenemos un completo
Guía para principiantes de Arduino Comenzando con Arduino: una guía para principiantesArduino es una plataforma de creación de prototipos de electrónica de código abierto basada en hardware y software flexible y fácil de usar. Está destinado a artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos. Lee mas para leer antes de abordar este proyecto.
¿Qué es el 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 relacionados con 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 llama "mensaje") que otro dispositivo puede implementar para hacer diferentes sonidos o controlar parámetros.
MIDI soporta 16 canales. Esto significa que cada cable puede soportar 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. A menudo se usa USB en lugar de DIN de 5 pines, o se puede usar una interfaz USB-MIDI.

Cambio de control y cambio de programa
Hay dos tipos principales de mensaje MIDI: Control Change y Program Change.
Los mensajes de cambio de control (CC) contienen un número de controlador y un valor entre 0 y 127. Los mensajes 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 explique qué canales y mensajes están configurados de manera predeterminada y cómo cambiarlos (conocido como mapeo MIDI).
Los mensajes de cambio de programa (PC) son más simples que los mensajes CC. Los mensajes de PC consisten en 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". Al igual que los mensajes CC, los fabricantes deben proporcionar un documento que describa qué valores predeterminados se cambian por un mensaje en particular.
Que necesitarás
- Arduino
- Conector hembra DIN de 5 pines
- 2 x resistencias de 220 ohmios
- 2 resistencias de 10k ohmios
- 2 x interruptores momentáneos
- Cables de conexión
- Tablero de circuitos
- Cable MIDI
- Dispositivo MIDI o interfaz USB
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 ha sido construido en un tablero de circuitos Electrónica para principiantes: 10 habilidades que debes saberMuchos de nosotros nunca hemos tocado un soldador, pero hacer cosas puede ser increíblemente gratificante. Aquí hay diez de las habilidades básicas de electrónica de bricolaje para ayudarlo a comenzar. Lee mas aquí, sin embargo, es posible transferirlo a una caja de proyecto y conectores soldados para una solución robusta.
Asamblea de circuito

Conexión MIDI

Conecte su toma MIDI de la siguiente manera:
- Pin MIDI 5 a Arduino Transmit (TX) 1 a través de una resistencia de 220 ohmios
- Pin MIDI 4 para Arduino + 5V a través de una resistencia de 220 ohmios
- Pin MIDI 2 a tierra Arduino
Conexión de botón
Los botones funcionan cambiando la resistencia que el Arduino "ve". El pin Arduino pasa por el interruptor directamente al suelo (BAJO) a través de una resistencia de 10k ohmios (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 digitalRead (pin) mando. Conecte los botones a los pines 6 y 7 en la entrada / salida digital Arduino (E / S). Conecta ambos botones:
- Lado izquierdo del botón a + 5V
- Lado derecho del botón a Arduino Ground a través de una resistencia de 10k ohmios
- 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 hacer esto) y un cable MIDI. El puerto MIDI conectado en 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 el excelente Arduino Biblioteca MIDI v4.2 por cuarenta y siete efectos. Una vez que haya instalado la Biblioteca, puede incluirla en su código yendo a Boceto> Incluir biblioteca> MIDI.
También necesitará un programa para monitorear los datos MIDI entrantes:
- Monitor MIDI para OS X
- MIDI-OX para ventanas
- KMidimon para Linux
Conecta el Arduino Introducción a su kit de inicio Arduino: instalación de controladores y configuración de la placa y el puertoEntonces, te has comprado un kit de inicio Arduino, y posiblemente algunos otros componentes geniales al azar, ¿y ahora qué? ¿Cómo comienzas a programar esta cosa de Arduino? Cómo lo configuras... Lee mas a su computadora y cargue el siguiente código de prueba (no olvide seleccionar la placa y el puerto correctos del 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 en serie para MIDI. } void loop () {midiOut.sendControlChange (56,127,1); // envía un CC MIDI - 56 = nota, 127 = velocidad, 1 = retardo de canal (1000); // espera 1 segundo midiOut.sendProgramChange (12,1); // enviar una PC MIDI - 12 = valor, 1 = retraso de canal (1000); // espera 1 segundo. }
Este código enviará un mensaje CC, espere 1 segundo, envíe un mensaje de PC y luego espere 1 segundo indefinidamente. Si todo funciona correctamente, debería ver aparecer un mensaje en su monitor MIDI.
Si no pasa nada, ¡no se asuste! Intenta solucionar problemas:
- Asegúrese de que todas las conexiones sean correctas
- Verifique que el puerto MIDI esté conectado correctamente: debe haber 2 pines de repuesto en los bordes exteriores
- Verifique que el circuito sea correcto
- Verifique que el circuito esté conectado a una interfaz USB-MIDI con un cable MIDI
- Verifique que su cable MIDI esté conectado al 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 Si tiene problemas, puede valer la pena revisar su tablero. 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; // asigna el pin del botón a la variable. const int buttonTwo = 7; // asigna el pin del botón a la configuración de vacío variable () {Serial.begin (9600); // configuración serial para texto pinMode (buttonOne, INPUT); // botón de configuración como input pinMode (buttonTwo, INPUT); // botón de configuración como entrada. } void loop () {if (digitalRead (buttonOne) == HIGH) {// comprueba el retraso del estado del botón (10); // software de-bounce if (digitalRead (buttonOne) == HIGH) {// comprueba el estado del botón nuevamente Serial.println ("Button One Works!"); // retraso del resultado del registro (250); }} if (digitalRead (buttonTwo) == HIGH) {// comprueba el retraso del estado del botón (10); // software rebote if (digitalRead (buttonTwo) == HIGH) {// comprueba el estado del botón otra vez Serial.println ("Button Two Works!"); // retraso del resultado del registro (250); } } }
Ejecute este código (pero mantenga el cable USB conectado) y abra el Monitor de serie (Arriba a la derecha> Monitor serie). Cuando presiona un botón, debería ver "¡El botón uno funciona!" o "¡El botón dos funciona!" dependiendo del botón que presionó.
Hay una nota importante para sacar de este ejemplo: el software de rebote. Este es un simple retraso de 10 milisegundos (ms) entre la comprobación del botón y la comprobación del botón nuevamente. Esto aumenta la precisión de la presión del botón y ayuda a evitar el ruido que activa el Arduino. No tiene que hacer esto, aunque se recomienda.
Crear 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 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.
#incluir
#incluir
#incluir
#incluir
#incluir const int buttonOne = 6; // asigna el pin del botón a la variable. const int buttonTwo = 7; // asigna 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 input pinMode (buttonTwo, INPUT); // botón de configuración como entrada Serial.begin (31250); // configurar salida MIDI. } void loop () {if (digitalRead (buttonOne) == HIGH) {// comprueba el retraso del estado del botón (10); // software de-bounce if (digitalRead (buttonOne) == HIGH) {// comprueba el estado del botón nuevamente midiOut.sendControlChange (56,127,1); // envía un CC MIDI - 56 = nota, 127 = velocidad, 1 = retardo de canal (250); }} if (digitalRead (buttonTwo) == HIGH) {// comprueba el retraso del estado del botón (10); // software de-bounce if (digitalRead (buttonTwo) == HIGH) {// comprueba el estado del botón nuevamente midiOut.sendControlChange (42,127,1); // envía un CC MIDI - 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 de DJ para cada presupuesto El mejor software de DJ para cada presupuestoUn buen software de mezcla puede marcar la diferencia en su rendimiento. Ya sea que esté utilizando una Mac, Windows o Linux, se atiende a todos los niveles de habilidad y presupuesto si desea comenzar a pinchar. Lee mas ). La parte superior derecha muestra los medidores de audio y la parte superior central muestra los mensajes midi entrantes (a través de Monitor MIDI 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. Y si estás interesado en comprar uno, aquí tienes los mejores controladores USB MIDI Los 9 mejores controladores MIDI USB para músicos¿En busca de un controlador USB MIDI? Aquí están los mejores controladores MIDI que puede comprar en este momento, independientemente del presupuesto. Lee mas tu puedes comprar.
Credito de imagen: Keith Gentry a través de Shutterstock.com
Joe se graduó en Ciencias de la Computación de la Universidad de Lincoln, Reino Unido. Es un desarrollador de software profesional, y cuando no está volando drones o escribiendo música, a menudo se lo puede encontrar tomando fotos o produciendo videos.