Controlador Arduino personalizado MIDI (6 / 14 paso)

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)

  1. Descargar el IDE oficial de Arduino 1.0.6 aquí. Usted necesita 1.0.6, otras versiones que no trabajo.
  2. Crear una nueva carpeta en el directorio de inicio llamado 'Ejecutables'.
  3. Extraiga el archivo de arduino-1.0.6-linux64.tgz que acabas de descargar en la nueva carpeta de ejecutables.
  4. Descargar al instalador de la Teensyduino desde aquí.
  5. 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.
  6. 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'.
  7. Abrir una ventana de terminal con CTRL + ALT + T, o a través de su menú de la aplicación.
  8. Ejecutar este comando para copiar las reglas udev en la carpeta correcta.
    sudo cp teensy.rules/49-descargas /etc/udev/rules.d/
  9. 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'.
  10. En la pestaña 'Permisos', marque la casilla "Permitir ejecutar archivo como un programa". Cierre esta ventana.
  11. Haga doble clic en teensyduino.64bit para ejecutar al instalador.
  12. Presione 'siguiente'.
  13. 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'.
  14. 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.
  15. Haga clic en 'Instalar'.
  16. Descargar 'TeeOnArdu' de Fricklr-software de GitHub. En el lado derecho, hay un botón de 'Descargar ZIP'.
  17. Extraiga el archivo ZIP en tu carpeta de descargas y abrir los archivos en el explorador de archivos.
  18. Debe haber una carpeta llamada a 'TeeOnArdu-master'. Haga doble clic y copiar el directorio 'TeeOnArdu'.
  19. Ir a la carpeta /home/Executables/arduino-1.0.6/hardware y la carpeta de TeeOnArdu aquí.
  20. En la terminal (CTRL + ALT + T), vaya al directorio de Arduino:
    CD Executables/arduino-1.0.6/
  21. Ejecutar el software de Arduino:
    . / arduino
  22. Dentro del software de Arduino, en 'Herramientas', seleccione 'TeeOnArdu (Leo TeensyCore)' como su tablero.
  23. Establecer 'USB tipo' a 'MIDI'.
  24. 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:

  1. Byte de estado: en nuestro caso, esto consistirá en un 'mensaje de canal' y un 'canal'.
  2. Byte de datos 1: un número de 7 bits.
  3. 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.

Artículos Relacionados

Controlador de DJ MIDI de estilo arcade

Controlador de DJ MIDI de estilo arcade

>>> esto no es muy acabado pero ya armado un poco del circuito. Voy a actualizar el instructivo y subir un video cuando se ordena <<<He sido DJ por cerca de 10 años, y para los últimos he intercambiado buena viejo vinilo moda vinilo virt
Interfaz Arduino USB MIDI

Interfaz Arduino USB MIDI

Hace unas semanas comencé a trabajar en un controlador MIDI con Arduino y ATmega32. Lo hice no terminado proyectado todavía. Está en desarrollo.Usted puede leer toda la historia aquí http://openhardware.ro/arduino-usb-midi-controller/.Pero durante lo
Señal de tráfico / luz de freno cables con controlador Arduino

Señal de tráfico / luz de freno cables con controlador Arduino

siempre ha querido una vieja señal de tráfico y finalmente consiguió uno recientemente.  Sin embargo, fue muy simple cableado para que todas las luces estaban fijos en.  ¿Qué divertido es esto?  También quería probar un controlador Arduino y pensé qu
Controlador Arduino DIY

Controlador Arduino DIY

mi Instructable primer es sobre cómo construir tu propio controlador Arduino!Usted puede construir en un protoboard, pero prefiero la soldadura mi propia. Para uso con proyectos. Esta junta wil no sean capaces de programar un chip ATmega. Yo utilice
Cómo instalar controlador Arduino R3

Cómo instalar controlador Arduino R3

Hoy voy a introducir la forma de instalar controlador Arduino R3.Espero útilPaso 1: Paso 1: driver descargar controlador Arduino R3Puede descargar aquí el driver del controlador Arduino R3Paso 2: Paso 2Conecte el cable de kit Arduino a tu ordenadorDe
Cómo crear un controlador de Dj MIDI

Cómo crear un controlador de Dj MIDI

así que esto era un proyecto escolar. Acabo de terminarlo. El documento adjunto al final es todo el proyecto, como lo he escrito bien a mano. Si desea tratar esta build me avisas y te puedo dar algunas sugerencias. También un alza para este proyecto
Controlador Arduino MIDI

Controlador Arduino MIDI

Un controlador MIDI es cualquier pieza de equipo que genera y transmite los datos MIDI para dispositivos compatibles con MIDI. En Resumen, si tiene botones en el controlador de MIDI, puede programar los botones a cualquier sonido que desee a través d
Controlador Arduino Midi con una distancia de ZX y gesto Sensor

Controlador Arduino Midi con una distancia de ZX y gesto Sensor

Bienvenido a este instructable sobre cómo construir un controlador Midi muy básico con la distancia de ZX de SparkFun y Sensor de gesto. Este instructable es parte de una asignación de la escuela.Nota: Se trata de ningún tutorial de codificación. El
Controlador de pie MIDI basados en Arduino DIY

Controlador de pie MIDI basados en Arduino DIY

Llevo muuuucho tiempo con intentar un lazador de guitarra durante un tiempo, pero no me gusta la idea de gastar dinero en un pedal específicos del lazador cuando puedo usar un ordenador para eso y desde que he estado aprendiendo arduino para divertir
Controlador de pie Midi Arduino para Ableton Live

Controlador de pie Midi Arduino para Ableton Live

Soy un geek. Yo lo sé. Me gustan las cosas DIY'ing. Compré una impresora 3d (que está sentado en mi oficina no funciona ahora mismo)... y como construir drones. Yo generalmente morder más de lo que puedo masticar y a menudo tiene que ir a otros para
Controlador de DJ MIDI PACMOD

Controlador de DJ MIDI PACMOD

para el cumpleaños de mi hijo le hice una controladora para DJ diseñado para parecerse a un viejo gabinete arcade de la máquina. Lo que sigue es un breve resumen del proceso para hacerlo, incluyendo el código.El Teensy fue elegido como el cerebro deb
Shield Arduino personalizado y sensores

Shield Arduino personalizado y sensores

Resumen:Este instructable construirá una serie de módulos de sensor de encargo y un escudo de Arduino. Dichos módulos están disponibles en muchas fuentes diferentes, pero los fanáticos de la Web de Instructables probablemente encontraría satisfacción
Controlador Arduino Rgb desde Vb.net

Controlador Arduino Rgb desde Vb.net

Hola, este es mi primer instractables, hoy te voy a mostrar cómo hacer una controladora rgb con un arduino UNO R3, controlado por una aplicación en vb.netCon este proyecto simplemente controlar su tira led y hacer de qué color te gustaperdón por mi i
Controlador de pie MIDI (Pedalera controladora MIDI) para Amplitube 3.

Controlador de pie MIDI (Pedalera controladora MIDI) para Amplitube 3.

Instrucciones de armado y puesta en funcionamiento del Midi pedal.(Pedalera controladora MIDI) para Amplitube 3.Hola, uso habitualmente el programa Amplitube 3 para practicar con mi Guitarra, realmente me gustan mucho los sonidos y posibilidades de c