Tabla de contenido:

Construyendo un controlador MIDI Arduino: 9 pasos (con imágenes)
Construyendo un controlador MIDI Arduino: 9 pasos (con imágenes)

Video: Construyendo un controlador MIDI Arduino: 9 pasos (con imágenes)

Video: Construyendo un controlador MIDI Arduino: 9 pasos (con imágenes)
Video: Controlador MIDI con Arduino Uno (Plug and Play) - lo último no lo creerás 😱😱😱 (Ableton y Bias Fx) 2024, Noviembre
Anonim

Este instructivo se publicó originalmente en mi blog el 28 de junio de 2020

Disfruto construyendo cosas que incluyen electrónica, y siempre quise construir algo usando Arduino.

Una de las compilaciones más comunes para principiantes que encontré fue un controlador MIDI. Un controlador MIDI es cualquier hardware que envía datos MIDI (interfaz digital de instrumentos musicales) a un dispositivo para activar sonidos y hacer música.

Descubrí que muchas implementaciones son complicadas, incluso aquellas que son para principiantes. Fue muy frustrante descubrir que necesito usar cientos de líneas de código ilegible. O que necesito soldar una resistencia en algunos casos, entre otros ejemplos.

El proyecto

Al construir mi propio controlador MIDI Arduino, mi intención era hacer un proyecto agradable, manteniendo el ruido al mínimo. Algo que cualquier principiante podría seguir. Para lograr eso, utilicé MIDI Fighter 3D como inspiración base y eliminé todas las características no esenciales.

El costo total de mi proyecto fue de menos de $ 30 y la lista de materiales fue muy corta (enlaces de afiliados):

  • Arduino Leonardo (o clon): entre $ 10 y $ 20.
  • 16 botones Sanwa de 24 mm (o clon): entre $ 1 y $ 2,50 por botón.
  • Soldador
  • Cable eléctrico de 22 AWG

La placa Arduino

Cuando comencé este proyecto, descubrí que hay un montón de nuevos modelos de Arduino (sin incluir los cientos de placas compatibles). Y todos ofrecen capacidades ligeramente diferentes.

Necesitaba enviar señales MIDI a una computadora y la forma más sencilla de hacerlo es a través de USB. Cualquier placa Arduino basada en el microcontrolador ATmega32u4 tiene comunicación USB incorporada.

Las placas Arduino oficiales con soporte USB nativo son Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Estas placas tienen soporte USB integrado, lo que significa que pueden actuar como un dispositivo MIDI USB.

Decidí ir con un clon del Arduino Leonardo. Tiene suficientes entradas para este proyecto y también incluye encabezados, lo que facilita enchufar / desenchufar cables.

Primeros pasos

Aunque explicaré paso a paso cómo implementé el código para este proyecto, puedes descargar la versión final.

Para cargar el código en la placa, debe usar el IDE de Arduino. También tienen un editor web que es muy útil pero tienen una cuota limitada de horas al día en las que puedes compilar código.

Paso 1: parpadeo del LED incorporado

Es curioso cómo el "Hola mundo" en el mundo del hardware hace parpadear un LED.

Fue una agradable sorpresa para mí descubrir que Arduino Leonardo tiene un LED incorporado que puede parpadear para probar su código. De esa manera, no necesita construir un circuito externo en una placa con un LED y una resistencia.

Código:

Paso 2: parpadeo del LED en la entrada manual

El siguiente paso lógico fue hacer parpadear el mismo LED cada vez que envío una señal. Quité la cubierta de plástico de un extremo de 2 cables Dupont y conecté el otro extremo a la placa:

  • Pin número 2: Una de las entradas digitales (positiva). Podría ser cualquier pin digital.
  • Pin GND: cualquier pin de tierra (negativo).

Ahora, cada vez que uno los extremos expuestos de los cables, cierro el circuito y así puedo ejecutar el código en consecuencia

Cada uno de los 20 pines digitales del Leonardo tiene una resistencia interna (desconectada por defecto) que se puede habilitar usando INPUT_PULLUP. Tenga en cuenta que una entrada pull-up significa que el estado del botón está invertido:

  • ALTO cuando el circuito está abierto (el botón NO está presionado).
  • BAJA cuando el circuito está cerrado (se presiona el botón).

Código:

Paso 3: Instalación de la biblioteca MIDIUSB

Esta biblioteca permite que una placa Arduino con capacidades USB actúe como un instrumento MIDI a través de USB. Consulte la documentación oficial para obtener más información.

Usando el IDE de Arduino, puede instalar Bibliotecas Arduino adicionales usando el Administrador de Bibliotecas:

  1. Abra el IDE y haga clic en el menú "Sketch", luego en "Incluir biblioteca", luego en "Administrar bibliotecas".
  2. Busque MIDIUSB y haga clic en Instalar.
  3. Una vez que haya terminado, debería aparecer una etiqueta Instalada junto a la biblioteca MIDIUSB.
  4. Cierre el Administrador de bibliotecas.

¡Ahora el Leonardo puede enviar mensajes MIDI a través de USB! Pero primero, se necesita algo de información sobre cómo funciona MIDI.

Cómo funciona MIDI

"MIDI (Interfaz digital de instrumentos musicales) es un protocolo de comunicación estándar que conecta instrumentos musicales electrónicos, computadoras y dispositivos de audio relacionados para reproducir música". - Wikipedia

Maneja mensajes de eventos con datos del tono y la velocidad de la nota tocada, entre otras instrucciones

En este proyecto específico, la entrada de los 16 botones envía diferentes mensajes a través de USB. Estos mensajes se pueden convertir en sonido en una computadora usando cualquier software adecuado como GarageBand o Ableton Live.

Anatomía de un mensaje MIDI

Para enviar un mensaje MIDI, utilicé el método sendMIDI () de la biblioteca MIDIUSB que instalé en el paso 3.

Este método puede recibir 4 parámetros:

  • Tipo de evento: puede ser 0x09 para nota activada (reproducir nota) o 0x08 para nota desactivada (detener la reproducción de nota).
  • Note On / Off: el tipo de evento combinado con el canal MIDI (1-16). Solo uso el canal 1, por lo que es 0x90 para nota activada o 0x80 para nota desactivada.
  • Número de nota: cada nota tiene un tono numérico asociado (escala de frecuencia).
  • Velocidad: de 0 (sin velocidad) a 127 (más rápida).

Paso 4: enviar un mensaje MIDI

Incluí la biblioteca MIDIUSB y en lugar de hacer parpadear el LED incorporado, envié una nota.

Código:

⚠ Importante: A partir de este paso, el Arduino se convierte en un controlador USB MIDI y deja de recibir código a través de USB.

Cuando te quedes atascado en una posición en la que el Arduino ya no se puede programar, sigue estos pasos:

  1. Mantenga presionado el botón de reinicio redondeado en la placa Arduino.
  2. Haga clic en Cargar en el IDE de Arduino.
  3. Suelta el botón de reinicio.
  4. El código actualizado se cargará en el tablero.

Paso 5: enviar un mensaje MIDI desde cada botón

Envío de un mensaje MIDI desde cada botón
Envío de un mensaje MIDI desde cada botón

El último paso fue asignar cada tono a un botón. Para los 16 botones, definí una escala de C2 a E3b, que son los tonos de 36 a 51 en una secuencia de abajo hacia arriba y de izquierda a derecha. Consulte este archivo de los tutoriales de Arduino para ver qué tono corresponde a cada nota.

Usé pines digitales de 2 a 12 y pines analógicos (usándolos como digitales) de A0 a A4.

Y así es como se ve el código final

Paso 6: Configuración de canales o bancos (opcional)

Configuración de canales o bancos (opcional)
Configuración de canales o bancos (opcional)

En caso de que desee agregar más botones con la capacidad de cambiar canales o bancos, como en el MIDI Fighter 3D (ver imagen), el Arduino Leonardo tiene cuatro pines más que puede usar. El Arduino Leonardo tiene 20 pines de entrada / salida digital, de los cuales solo 16 están en uso para tocar notas.

Puede usar esos botones adicionales para actualizar una variable en el código y enviar su valor como parámetro al método MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Paso 7: el caso

El caso
El caso
El caso
El caso

Para mantener este proyecto simple, fui extremadamente exigente a la hora de elegir qué funciones incluir.

  • Solo botones: 16 botones de arcade tipo Sanwa, en una cuadrícula de 4x4. Sin perillas, deslizadores, faders o cualquier otra entrada analógica.
  • Carcasa unibody: no use tornillos, tuercas, pernos ni pegamento para la carcasa o para sujetar la placa Arduino.
  • Herramientas cotidianas: por ejemplo, soldé los cables en lugar de comprar una cortadora de cables específica para los botones de arcade.

Diseño Unibody

Uno de los desafíos que enfrenté fue diseñar un estuche lo suficientemente simple como para que no necesitara ensamblaje y se pueda imprimir en 3D en una sola ejecución.

Para evitar el uso de tornillos o pegamento, necesitaba diseñar un gabinete que proporcionara el acceso más pequeño a los componentes electrónicos. Mi mayor inspiración para la carcasa fue la Mac Mini, que tiene un orificio en forma de círculo en la parte inferior. También quería diseñar una tapa atornillable para eso, pero decidí dejarla abierta para exponer la electrónica.

Descargue el estuche imprimible en 3D (322 KB). Configuraciones recomendadas: PLA, capas de 0.15 mm, 20% de relleno, ejecutores de soporte al menos para el orificio inferior redondeado, los soportes de Arduino y el micro USB.

Sosteniendo un Arduino sin tornillos

El Leonardo tiene 4 orificios para atornillar la placa en cualquier caja adecuada, pero mi idea era facilitar la instalación y extracción de la placa de la caja.

Encontrar un soporte de clip para Arduino en Thingiverse fue fácil, y me tomó 5 iteraciones integrar ese soporte al diseño unibody. La parte más difícil fue hacer sus patas para evitar los agujeros de los botones y hacer que el micro USB quede alineado al centro de la carcasa.

Paso 8: el montaje

La Asamblea
La Asamblea
La Asamblea
La Asamblea
La Asamblea
La Asamblea

Después de insertar todos los botones en su lugar, soldé cables negros cortos que unían todas las patas negativas de los botones entre ellos.

Luego soldé cables rojos largos de cada pata positiva para conectarlos directamente a la placa.

Para conectar los cables al Arduino, corté y soldé algunos extremos Dupont y los cubrí con tubos termorretráctiles.

Conecté los cables a la placa siguiendo el mismo orden que en el MIDI Fighter. De abajo hacia arriba y de izquierda a derecha

Paso 9: uso del controlador MIDI

Usando el controlador MIDI
Usando el controlador MIDI

Se puede utilizar cualquier software de música (o hardware adecuado) para recibir MIDI y hacer música. Las más recomendadas son Garage Band, Ableton Live, y sé que hay un montón de aplicaciones para instalar en un teléfono.

Todas esas herramientas son útiles para cargar sonidos predefinidos para tocar con los dedos, pero se crearon para propósitos más importantes. Esas herramientas pueden ser difíciles de configurar para los principiantes.

MIDI en el navegador web

Para hacer algo más alineado con este proyecto y su simplicidad, construí una herramienta web completamente enfocada en controladores MIDI.

Punchy: Implementación de WebMIDI y WebAudio para controladores MIDI.

Puede leer mensajes MIDI en cualquier navegador que admita la API de JavaScript WebMIDI. Luego, reproduce sonidos en un sintetizador (usando la API de WebAudio) o en un muestreador, cargando sonidos personalizados desde cualquier paquete de sonido.

Configurar Ableton Live

Para que el controlador MIDI funcione con Ableton Live, siga estos sencillos pasos de su documentación oficial.

Vaya a Preferences → Link MIDI y asegúrese de que la "Input" tenga "Track" y "Remote" ON y que la salida tenga "Remote" ON, así como se menciona en la guía:

Recomendado: