¿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. Mientras que la Frambuesa Pi pueden haber tomado la corona para Internet de los objetos (IO) proyectos, un simple Arduino Uno (¿cuáles son los diferentes tipos de Arduino?) Tiene potencia más que suficiente para este proyecto.La Internet de las cosas: 10 productos útiles Tienes que probar en 2016La Internet de las cosas: 10 productos útiles Tienes que probar en 2016La Internet de las cosas está aumentando en 2016, pero ¿qué significa eso exactamente? ¿Cómo se beneficia personalmente de la Internet de las cosas? Aquí hay algunos productos útiles para ilustrar.Lee mas
Primera vez que utiliza un Arduino? No se preocupe, tenemos una completa Guía para principiantes de Arduino para leer antes de abordar este proyecto.
¿Qué es MIDI?
MIDI significa Musical Instrument Digital Interface. En él se esbozan una forma estándar para dispositivos musicales que se comunican entre sí. Si usted posee un teclado electrónico es probable que tenga una interfaz MIDI. Aunque hay algunos detalles técnicos involucrados en la implementación de MIDI, es importante recordar que MIDI no es audio! Los datos MIDI es un simple conjunto de instrucciones (una instrucción se llama un “mensaje”) que otro dispositivo se puede poner en práctica para hacer diferentes sonidos o parámetros de control.
MIDI soporta 16 canales. Esto significa que cada cable puede soportar 16 dispositivos diferentes que comunica de forma independiente entre sí. Los dispositivos se conectan mediante un cable DIN de 5 patillas. DIN significa “Instituto Alemán de Normalización”, y es simplemente un cable con cinco pines dentro del conector. USB se utiliza a menudo en lugar de la norma DIN de 5 patillas, o una interfaz MIDI USB se puede utilizar.
El control de cambios y el cambio de programa
Hay dos tipos principales de mensajes MIDI: Cambio de Control y cambio de programa.
Cambio de control (CC) mensajes contienen un número de controlador y un valor entre 0 y 127. mensajes CC a menudo se utilizan para cambiar la configuración, como el volumen o el tono. Dispositivos que aceptan MIDI debe venir con un manual explicando qué canales y mensajes están configurados por defecto, y cómo cambiarlos (conocida como mapeo MIDI).
Cambio de programa (PC) Los mensajes son más simples que los mensajes CC. mensajes de PC constan de un solo número, y se utilizan para cambiar el valor predefinido o un parche en un dispositivo. Mensajes de PC son a veces conocidos como “cambio de parche”. Al igual que en los mensajes CC, los fabricantes deben proporcionar un documento que indica de qué ajustes preestablecidos se cambian por un mensaje en particular.
Que necesitarás
- Arduino
- 5-pin DIN enchufe hembra
- 2 x 220 ohmios
- 2 x resistencias de 10k ohm
- 2 x interruptores momentáneos
- alambras interconexion
- Tablero de circuitos
- cable MIDI
- dispositivo MIDI o USB
construir plan
Este proyecto será bastante simple. Por supuesto, puede añadir más botones o hardware para satisfacer sus necesidades. Casi cualquier Arduino será adecuado - sólo 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 sobre una tablero de circuitos aquí, sin embargo, es posible transferir a una caja de conectores del proyecto y soldadas para una solución robusta.
Asamblea de circuito
Vídeo: Como construir um controlador midi utilizando Arduino!
Conexión MIDI
Cablear el zócalo MIDI de la siguiente manera:
- pin MIDI 5 a Arduino de transmisión (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 a tierra Arduino
Conexión del botón
Los botones funcionan cambiando la resistencia del Arduino “ve”. El pin de Arduino pasa por el interruptor directamente a tierra (BAJO) A través de una resistencia de 10 k ohmios (una resistencia “pull down”, asegurando el valor se mantiene baja). Cuando se pulsa el botón, el valor visto por los cambios en el circuito a + 5V sin una resistencia (ALTO). El Arduino puede detectar este cambio mediante el digitalRead (pin) mando. Conectar los botones a los pines 6 y 7 en la Arduino entrada digital / salida (I / O). Conecte los dos botones:
Vídeo: ARDUINO MIDI CONTROLLER CUBASE
- El lado izquierdo del botón a + 5V
- parte derecha del botón de Arduino de tierra a través de una resistencia de 10 k ohmios
- parte derecha del botón de pin de Arduino (6 o 7)
Prueba MIDI
Ahora que todo el hardware está terminado, es hora de probarlo. Usted necesitará una interfaz USB-MIDI (muchas interfaces de audio pueden hacer esto) y un cable MIDI. El puerto MIDI cableada en el tablero está enviando datos, por lo que es la salida. El ordenador está recibiendo los datos, por lo que es la entrada. Este proyecto utiliza la excelente v4.2 Arduino Biblioteca MIDI por cuarenta y siete Efectos. Una vez que haya instalado la biblioteca, puede incluirlo en su código yendo a Bosquejo gt; incluir Biblioteca gt; MIDI.
Usted también necesitará un programa para monitorear los datos MIDI entrante:
- Monitor de MIDI para OS X
- MIDI-OX para Windows
- KMidimon para Linux
Conectar el Arduino al ordenador y cargar el siguiente código de prueba (no se olvide de seleccionar la junta correcta y el puerto de la Herramientas gt; Tablero y Herramientas gt; Puerto menús).Para hacer funcionar su Arduino Starter Kit - Instalación de los controladores & Preparando la placa & PuertoPara hacer funcionar su Arduino Starter Kit - Instalación de los controladores & Preparando la placa & PuertoPor lo tanto, usted ha comprado a sí mismo un kit de iniciación Arduino, y posiblemente algunos otros componentes fresco al azar - y ahora qué? ¿Cómo se puede realmente comenzar con la programación de Arduino esta cosa? ¿Cómo se establece hasta que ...Lee mas
#incluir #incluir #incluir #incluir #incluir MIDI_CREATE_INSTANCE(HardwareSerial,De serie, midiOut)- // crear un objeto MIDI llamada midiOutvacío preparar() {De serie.empezar(31250)- // serie de configuración de MIDI}vacío lazo() {midiOut.sendControlChange(56,127,1)- // enviar un CC MIDI - 56 = nota, 127 = velocidad, 1 = canalretrasar(1000)- // espera 1 segundomidiOut.sendProgramChange(12,1)- // enviar un PC MIDI - 12 = valor, 1 = canalretrasar(1000)- // espera 1 segundo}
Este código enviará un mensaje CC, espere de 1 segundo, enviar un mensaje de PC luego esperar 1 segundo indefinidamente. Si todo funciona correctamente, aparecerá el siguiente mensaje aparece en el monitor MIDI.
Si no ocurre nada, no se asuste! Intenta resolver el problema:
- Asegúrese de que todas las conexiones son correctas
- Compruebe el puerto MIDI está conectado correctamente - no debe haber 2 pines de repuesto a los bordes exteriores
- Vuelva a comprobar el circuito es correcta
- Verificar que el circuito está conectado a una interfaz USB-MIDI con un cable MIDI
- Compruebe el cable MIDI está conectado a la entrada en su interfaz USB-MIDI
- Asegúrese de que el Arduino tiene poder
- Instalar el controlador correcto para la interfaz USB-MIDI
Si usted es todavía teniendo problemas puede ser que valga la comprobación de su placa. tableros baratos a veces puede ser muy inconsistente y de baja calidad - me sucedió mientras estaba trabajando en este proyecto.
Prueba de botón
Ahora es el momento para poner a prueba los botones funcionan correctamente. Sube el siguiente código de prueba. MIDI no necesita estar conectado a probar esta parte.
const int buttonOne = 6- // asigna a la variable botón del pernoconst int buttonTwo = 7- // asigna a la variable botón del pernovacío preparar() {De serie.empezar(9600)- // serie de configuración para el textopinMode(buttonOne,ENTRADA)- // botón de configuración como entradapinMode(buttonTwo,ENTRADA)- // botón de configuración como entrada}vacío lazo() {Si(digitalRead(buttonOne) == ALTO) { // comprobar estado de botónretrasar(10)- // software de reboteSi(digitalRead(buttonOne) == ALTO) { // comprobar el estado de nuevo el botónDe serie.println("Un botón de Obras!")- // resultado de registroretrasar(250)-}}Si(digitalRead(buttonTwo) == ALTO) { // comprobar estado de botónretrasar(10)- // software de reboteSi(digitalRead(buttonTwo) == ALTO) { // comprobar el estado de nuevo el botónDe serie.println("Botón dos obras!")- // resultado de registroretrasar(250)-}}}
Ejecutar este código (pero mantener el cable USB está conectado) y abrir el monitor de serie (Parte superior derecha gt; serial monitor). Cuando se pulsa un botón debería ver “botones de One Works!” O “Botón dos obras!”, Dependiendo del botón pulsado.
Hay una nota importante para llevar de este ejemplo - el software de-rebote. Este es un simple retardo de 10 milisegundos (ms) entre el control de la tecla y después de comprobar de nuevo el botón. Esto aumenta la exactitud de la tecla de presión y ayuda a evitar el ruido de disparo el Arduino. Usted no tiene que hacer esto, aunque se recomienda.
Crear el controlador
Ahora que todo está conectado y funcionando, es el momento de montar el controlador completo.
En este ejemplo se 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 tanto a las muestras de prueba anteriores.
#incluir #incluir #incluir #incluir #incluir const int buttonOne = 6- // asigna a la variable botón del pernoconst int buttonTwo = 7- // asigna a la variable botón del pernoMIDI_CREATE_INSTANCE(HardwareSerial,De serie, midiOut)- // crear un objeto MIDI llamada midiOutvacío preparar() {pinMode(buttonOne,ENTRADA)- // botón de configuración como entradapinMode(buttonTwo,ENTRADA)- // botón de configuración como entradaDe serie.empezar(31250)- // salida MIDI instalación}vacío lazo() {Si(digitalRead(buttonOne) == ALTO) { // comprobar estado de botónretrasar(10)- // software de reboteSi(digitalRead(buttonOne) == ALTO) { // comprobar el estado de nuevo el botónmidiOut.sendControlChange(56,127,1)- // enviar un CC MIDI - 56 = nota, 127 = velocidad, 1 = canalretrasar(250)-}}Si(digitalRead(buttonTwo) == ALTO) { // comprobar estado de botónretrasar(10)- // software de reboteSi(digitalRead(buttonTwo) == ALTO) { // comprobar el estado de nuevo el botónmidiOut.sendControlChange(42,127,1)- // enviar un CC MIDI - 42 = nota, 127 = velocidad, 1 = canalretrasar(250)-}}}
Nota - usted no será capaz de utilizar Serial.println () una salida MIDI.
Si desea enviar un mensaje de PC en lugar de un CC simplemente reemplazar:
midiOut.sendControlChange(42,127,1)-
Con:
Vídeo: Prototipo controlador midi 8 potenciometros ableton live arduino
midiOut.sendProgramChange(valor, canal)-
En acción
A continuación se muestra una demostración como un controlador para Ableton Live (El mejor software de DJ para todos los bolsillos). La parte superior derecha muestra los medidores de audio, y la mitad superior muestra los mensajes MIDI de entrada (a través de MIDI monitor en OS X).El Mejor Software de DJ para todos los bolsillosEl Mejor Software de DJ para todos los bolsillosUn buen software de mezcla puede hacer toda la diferencia en su rendimiento. Ya sea que esté usando un Mac, Windows o Linux, todos los niveles de habilidad y presupuesto se ocuparon de si desea empezar a pinchar.Lee mas
¿Ha hecho un controlador MIDI?
Hay un montón de usos prácticos para un controlador MIDI personalizado. Se puede construir una vasta unidad controlado con el pie, o un controlador de estudio y elegante. Ha hecho un controlador MIDI personalizada? Déjame saber en los comentarios, me encantaría verlos!