Tabla de contenido:
- Este instructivo se publicó originalmente en mi blog el 28 de junio de 2020
- Paso 1: parpadeo del LED incorporado
- Paso 2: parpadeo del LED en la entrada manual
- Paso 3: Instalación de la biblioteca MIDIUSB
- Paso 4: enviar un mensaje MIDI
- Paso 5: enviar un mensaje MIDI desde cada botón
- Paso 6: Configuración de canales o bancos (opcional)
- Paso 7: el caso
- Paso 8: el montaje
- Paso 9: uso del controlador MIDI
Video: Construyendo un controlador MIDI Arduino: 9 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
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:
- Abra el IDE y haga clic en el menú "Sketch", luego en "Incluir biblioteca", luego en "Administrar bibliotecas".
- Busque MIDIUSB y haga clic en Instalar.
- Una vez que haya terminado, debería aparecer una etiqueta Instalada junto a la biblioteca MIDIUSB.
- 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:
- Mantenga presionado el botón de reinicio redondeado en la placa Arduino.
- Haga clic en Cargar en el IDE de Arduino.
- Suelta el botón de reinicio.
- El código actualizado se cargará en el tablero.
Paso 5: enviar 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)
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
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
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
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:
Construyendo un Arduino de bricolaje en una PCB y algunos consejos para principiantes: 17 pasos (con imágenes)
Construyendo un Arduino de bricolaje en una PCB y algunos consejos para principiantes: Esto es una guía para cualquiera que suelde su propio Arduino desde un kit, que se puede comprar en A2D Electronics. Contiene muchos consejos y trucos para construirlo con éxito. También aprenderá acerca de lo que todos los diferentes componentes d
Controlador de tira de luces LED MIDI 5V para Spielatron u otro sintetizador MIDI: 7 pasos (con imágenes)
Controlador de tira de luces LED MIDI 5V para Spielatron u otro sintetizador MIDI: este controlador destella tiras de luces LED de tres colores por 50mS por nota. Azul para G5 a D # 6, rojo para E6 a B6 y verde para C7 a G7. El controlador es un dispositivo MIDI ALSA, por lo que el software MIDI puede emitir a los LED al mismo tiempo que un dispositivo de sintetizador MIDI
Construyendo sus propias barras de iluminación de color ambiental: 7 pasos (con imágenes)
Construyendo sus propias barras de iluminación de color ambiental: este instructivo cubre cómo construir, montar y controlar barras de luz LED para proporcionar iluminación ambiental a todo color, así como también " ambilight " efectos de video de estilo. Tenga en cuenta que el parpadeo de los leds no es tan notable en la vida real como
Construyendo robots pequeños: Haciendo robots de micro-sumo de una pulgada cúbica y más pequeños: 5 pasos (con imágenes)
Construyendo robots pequeños: Haciendo robots de micro-sumo de una pulgada cúbica y más pequeños: Aquí hay algunos detalles sobre cómo construir pequeños robots y circuitos. Este instructivo también cubrirá algunos consejos y técnicas básicas que son útiles en la construcción de robots de cualquier tamaño. Para mí, uno de los grandes desafíos en electrónica es ver cuán pequeño es un
Construyendo una cúpula con papel (y acero y cemento ): 6 pasos (con imágenes)
Construir una cúpula con papel (y acero … y cemento …): Cuando mi novia (Wendy Tremayne) y yo llegamos al sur de Nuevo México, una de las primeras cosas que hicimos fue buscar un material de construcción local. La arcilla tendría que ser excavada y transportada, la bala de paja ya era cara y no local, hombre