🛠 Boîte à rythmes USB MIDI : classes MIDI, MIDIx16 et port hôte USBHost_t36
Objetivos
El Teensy 4.1 es el cerebro de referencia para sintetizadores DIY: se presenta como un dispositivo USB MIDI clase-compliant (sin necesidad de instalar controladores) con hasta 16 cables MIDI virtuales (MIDIx4/MIDIx16), y puede actuar simultáneamente como anfitrión USB en su segundo puerto — ambos a 480 Mbit/s. Este tutorial construye una almohadilla de disparo (pad), y luego menciona la lectura de un teclado USB externo.
Material
- 1 Teensy 4.1 + cable micro-USB de datos
- 1 botón pulsador en el pin 24 (hacia GND)
- Opcional para el modo anfitrión: el cable USB host especial de PJRC y un dispositivo USB (teclado, controlador MIDI)
Puntos clave
- Tools > USB Type > MIDI (o MIDIx4 / MIDIx16 para varios cables).
- El puerto serie USB desaparece cuando USB Type = MIDI: para depurar, utilice un segundo puerto o cambie el tipo.
- Obligación documentada: vaciar las entradas con
while (usbMIDI.read) {}en cada bucle, de lo contrario los búferes USB se llenan y bloquean. - En modo anfitrión, la biblioteca USBHost_t36 lee teclados, controladores MIDI y DAC de audio en el segundo puerto (480/12/1,5 Mbit/s, hubs aceptados) mediante el cable host dedicado.
Código completo
#include <Bounce.h>
Bounce padBtn(24, 10); // anti-rebond 10 ms sur une broche du 4.1
void setup {}
void loop {
padBtn.update;
if (padBtn.fallingEdge) usbMIDI.sendNoteOn(60, 127, 1);
if (padBtn.risingEdge) usbMIDI.sendNoteOff(60, 0, 1);
// vider les entrées MIDI, sous peine de saturer les tampons USB
while (usbMIDI.read) { }
delay(1);
}
Verificación esperada
En su DAW (o un monitor MIDI como MIDI Monitor / MIDI-OX), el Teensy aparece como dispositivo MIDI clase-compliant; cada pulsación envía un Note On 60 con velocidad 127 en el canal 1. En MIDIx16, dieciséis instrumentos virtuales distintos pueden ser direccionados mediante un solo cable USB.
Errores frecuentes
- Olvidar
while (usbMIDI.read): después de unos segundos, no sale ninguna señal — el clásico error de MIDI en Teensy. - Mantener USB Type = Serial:
usbMIDIsimplemente no existe durante la compilación. - Buscar el monitor serie después de cambiar a MIDI: la interfaz serie USB ha sido reemplazada por la interfaz MIDI, esto es normal.
- Conectar un dispositivo USB estándar al puerto host sin el cable host especial: el conector no coincide, se requiere el cable PJRC.
- Para controladores completos (codificadores, faders, matrices de LEDs), la biblioteca MIDIcontroller de Josh Nishikawa se basa en estas clases y en los 8 puertos serie independientes.
Otros tutoriales para esta placa
- Premiers pas sur le Teensy 4.1 : Teensyduino, Teensy Loader et premier Blink
- GPIO et PWM sur le Teensy 4.1 : 55 broches en 3,3 V, ni 5 V tolérées ni traîne
- Entrées analogiques du Teensy 4.1 : 18 broches, 2 ADC, 0-3,3 V fixes et zéro DAC
- Logger sur carte SD via le port SDIO natif du Teensy 4.1
- Serveur web embarqué : l'Ethernet natif 10/100 du Teensy 4.1 (DP83825)
- Ingénierie mémoire du Teensy 4.1 : TCM, DMAMEM, EXTMEM, flash QSPI et EEPROM
Ejemplos de código para esta placa
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino