Paso 6: Tiempo de código! Bueno, casi...
Arduino Uno
Para la ONU, tendrás flash ATmega16U2 * en el tablero con el firmware personalizado de Dimitri Diakopoulos . Se trata de un archivo HEX que grabar en el chip usando el software Flip de Atmel. El firmware tiene entrado desde el microprocesador principal de la ONU (ATmega328P) y lo convierte en el MIDI sobre el protocolo de USB.
(*) El microprocesador principal de la ONU (ATmega328P) no tiene USB capacidad. En cambio, tiene una conexión en serie en el pin 0 y 1, con un microprocesador de segunda (ATmega16U2, este es el pequeño cuadrado negro entre el conector USB y LED RX y TX). Este chip está programado para ser un convertidor USB-serial y es reconocido por el ordenador como un puerto serie o COM. Al cargar su propio firmware para el chip, puede ser prácticamente cualquier dispositivo USB, incluyendo un dispositivo MIDI.
Programación del Uno y MIDI
Porque el ATmega328P se basa en la conexión serie establecida por el ATmega16U2 para subir nuevos bocetos de Arduino, se puede cambiar el programa mientras se ejecuta el firmware de MIDI. Es por qué va escribir nuestro programa primero y grabar el MIDI firmware después de subir nuestro programa al ATmega328.
Puede eliminar el firmware de MIDI en cualquier momento y vuelva a instalar el original firmware de serie de Arduino Uno.
Arduino Leonardo
Leonardo solo necesita una biblioteca especial para utilizar las funciones de MIDI Teensy en Arduino.
Aquí es cómo instalar esto:
Linux (Ubuntu)
- Descargar el IDE oficial de Arduino 1.0.6 aquí. Usted necesita 1.0.6, otras versiones que no trabajo.
- Crear una nueva carpeta en el directorio de inicio llamado 'Ejecutables'.
- Extraiga el archivo de arduino-1.0.6-linux64.tgz que acabas de descargar en la nueva carpeta de ejecutables.
- Descargar al instalador de la Teensyduino desde aquí.
- En la sección 'otros archivos' en la misma página, haga clic en reglas de udev de Linux y golpear CTRL + S para guardar.
- Quitar la extensión .txt en el guardar de diálogo y seleccione 'todos los archivos' en vez de .txt antes de guardar (pero mantenga la extensión .rules). Luego guardarlo en la carpeta 'Descargas'.
- Abrir una ventana de terminal con CTRL + ALT + T, o a través de su menú de la aplicación.
- Ejecutar este comando para copiar las reglas udev en la carpeta correcta.
sudo cp teensy.rules/49-descargas /etc/udev/rules.d/ - Vaya a usted usando su explorador de archivos de carpeta de descargas. Haga clic con el botón derecho el archivo teensyduino.64bit descargado en el paso 4 y seleccione 'Propiedades'.
- En la pestaña 'Permisos', marque la casilla "Permitir ejecutar archivo como un programa". Cierre esta ventana.
- Haga doble clic en teensyduino.64bit para ejecutar al instalador.
- Presione 'siguiente'.
- A continuación, vaya a su «arduino-1.0.6' carpeta dentro de la carpeta de 'Ejecutables'. Una vez hecho esto, el botón 'siguiente' si ya no aparecerán atenuado. Haga clic en 'siguiente'.
- Verifique la casilla 'MIDI' y otras librerías, si es necesario para su proyecto. (Puede también seleccionar 'todas' si se desea). Haga clic en 'siguiente' otra vez.
- Haga clic en 'Instalar'.
- Descargar 'TeeOnArdu' de Fricklr-software de GitHub. En el lado derecho, hay un botón de 'Descargar ZIP'.
- Extraiga el archivo ZIP en tu carpeta de descargas y abrir los archivos en el explorador de archivos.
- Debe haber una carpeta llamada a 'TeeOnArdu-master'. Haga doble clic y copiar el directorio 'TeeOnArdu'.
- Ir a la carpeta /home/Executables/arduino-1.0.6/hardware y la carpeta de TeeOnArdu aquí.
- En la terminal (CTRL + ALT + T), vaya al directorio de Arduino:
CD Executables/arduino-1.0.6/ - Ejecutar el software de Arduino:
. / arduino - Dentro del software de Arduino, en 'Herramientas', seleccione 'TeeOnArdu (Leo TeensyCore)' como su tablero.
- Establecer 'USB tipo' a 'MIDI'.
- Ahora estás listo para utilizar MIDI con tu Leonardo!
Las instrucciones para Windows y Mac son muy similares, se encuentran en la página de Adafruit. Tenga en cuenta que la versión es diferente. El tutorial de Adafruit usa Arduino 1.0.5, pero necesita 1.0.6. Además, no use los links de descarga de Adafruit, pero utilice los vínculos en los pasos 1, 4 y 16 (mencionadas arriba).
Mensajes MIDI
Antes de empezar programación, primero tratemos de entender lo que es MIDI.
MIDI (interfaz Digital de instrumentos musicales) fue desarrollado en 1982 y es un estándar para la comunicación entre instrumentos musicales, como su nombre indica. Las señales originales fueron transferidas sobre una antigua DIN 41524 conector. Hoy en día, la mayoría de dispositivos MIDI tienen un conector USB, para conectar a un ordenador. Sin embargo, el protocolo sí mismo no ha cambiado.
Un mensaje MIDI se compone de 3 bytes y tiene 4 partes:
- Byte de estado: en nuestro caso, esto consistirá en un 'mensaje de canal' y un 'canal'.
- Byte de datos 1: un número de 7 bits.
- Octeto de datos 2: otro número de 7 bits.
Para nuestro controlador MIDI, usaremos sólo 3 mensajes diferentes canales: noteOn, noteOff y ControlChange.
- NoteOn:
mensaje de canal: 0b1001 * (0x9) **
canal: 0b0000-0b1111 (0 x 0-0xF) datos 1: número de cuenta: 0-127
datos 2: velocidad ***: 0-127 - NoteOff:
mensaje de canal: 0b1000 (0x8)
canal: 0b0000-0b1111 (0 x 0-0xF)
datos 1: número de cuenta: 0-127
datos 2: velocidad: 0-127 - ControlChange:
mensaje de canal: 0b1011 (0xB)
canal: 0b0000-0b1111 (0 x 0-0xF)
datos 1: número de control: 0-119 ***
datos 2: valor de control: 0-127
(*) 0b significa notación binaria .
(*) 0 x significa hexadecimal notación.
(***) La velocidad es lo difícil que es una clave de éxito.
(****) Controlador de números 120-127 no están disponibles para los controladores normales, pero están reservados para los modos de funcionamiento.
Nota: hay otros mensajes así (ver enlaces al final de este paso). Por ejemplo un mensaje de pitch bend tiene sus 4 primeros bits y no es un mensaje de cambio de control, no tiene número de controlador, por lo que puede almacenar un valor de 14 bits. Esto es utilizado por mayor Controladores MIDI del final, cuando se requiere mayor resolución. Sin embargo, sólo puede haber un máximo de 16 Dobladoras de pitch (1 para cada uno de los 16 canales).
N oteOn y noteOff se utilizan para las teclas de un piano digital, por ejemplo. Aquí están los números de nota con sus correspondientes notas musicales. El do central (C4) se asigna a 60, y 440Hz (A4) se asigna a 69. Vamos a usar estas notas para nuestros botones e interruptores: noteOn cuando se presiona el botón y noteOff cuando se suelta el botón. Te recomiendo que uses el canal 1 (0b0000), pero cuando tienes más de 128 teclas, obviamente necesitarás un segundo canal. Datos 1 será el número, la dirección si se quiere, del botón, y Data 2 (la velocidad) en realidad no importa para un botón (aunque sí si desea que las almohadillas sensibles de presión/velocidad por ejemplo). Apenas lo hacemos 127 (100%).
Notación general noteOn: cccc 1001 0nnnnnnn 0vvvvvvv
donde cccc es el canal, nnnnnnn es el número del botón y vvvvvvv la velocidad
Por ejemplo: presionar el botón 15 (0b00001111) enviaría este mensaje: 1001 0000 00001111 01111111
Notación general noteOff: cccc 1000 0nnnnnnn 0vvvvvvv
donde cccc es el canal, nnnnnnn es el número del botón y vvvvvvv la velocidad
Por ejemplo: soltar botón 15 (0b00001111) enviará este mensaje: 1000 0000 00001111 01111111
ControlChange mensajes se utilizan para los controladores que pueden tener una amplia gama de valores, como un potenciómetro, o un fader. Este valor tiene 7 bits, por lo que tiene un rango de 0 a 127 (0% - 100%). Aquí está una lista de todos los controladores y sus números correspondientes.
Notación general ControlChange: cccc 1011 0nnnnnnn 0vvvvvvv
donde cccc es el canal, nnnnnnn es el número del controlador y vvvvvvv el valor del controlador.
Por ejemplo: convirtiendo el volumen (número de controlador 7 o 0b00000111) de canal 8 (0b1000) al máximo (127 o 0b01111111) enviará este mensaje: 1011 1000 00000111 01111111
Más información sobre el protocolo MIDI se puede encontrar en midi.org, en este PDF, o en Wikipedia.