🛠 Boîte à rythmes USB MIDI : classes MIDI, MIDIx16 et port hôte USBHost_t36
Objectifs
Le Teensy 4.1 est le cerveau de synthé DIY de référence : il se fait passer pour un périphérique USB MIDI classe-compliant (aucun pilote à installer) avec jusqu'à 16 câbles MIDI virtuels (MIDIx4/MIDIx16), et peut simultanément agir en hôte USB sur son second port — les deux à 480 Mbit/s. Ce tutoriel fabrique une pad de déclenchement, puis évoque la lecture d'un clavier USB externe.
Matériel
- 1 Teensy 4.1 + câble micro-USB de données
- 1 bouton poussoir sur la broche 24 (vers GND)
- Optionnel pour l'hôte : le câble USB host spécial PJRC et un appareil USB (clavier, contrôleur MIDI)
Points clés
- Tools > USB Type > MIDI (ou MIDIx4 / MIDIx16 pour plusieurs câbles).
- Le port série USB disparaît quand USB Type = MIDI : pour déboguer, passez par un second port ou changez de type.
- Obligation documentée : drainer les entrées avec
while (usbMIDI.read) {}à chaque boucle, sinon les tampons USB se remplissent et bloquent. - En hôte, la bibliothèque USBHost_t36 lit claviers, contrôleurs MIDI et DAC audio sur le second port (480/12/1,5 Mbit/s, hubs acceptés) via le câble hôte dédié.
Code complet
#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);
}
Vérification attendue
Dans votre DAW (ou un moniteur MIDI comme MIDI Monitor / MIDI-OX), le Teensy apparaît comme périphérique MIDI classe-compliant ; chaque appui envoie un Note On 60 vélocité 127 sur le canal 1. En MIDIx16, seize instruments virtuels distincts peuvent être adressés par un seul câble USB.
Erreurs fréquentes
- Oublier
while (usbMIDI.read): après quelques secondes, plus aucune sortie ne part — le grand classique du MIDI sur Teensy. - Rester en USB Type = Serial :
usbMIDIn'existe tout simplement pas à la compilation. - Chercher le moniteur série après être passé en MIDI : l'interface série USB a laissé place à l'interface MIDI, c'est normal.
- Brancher un périphérique USB standard sur le port hôte sans le câble hôte spécial : le connectier ne correspond pas, le câble PJRC est requis.
- Pour des contrôleurs complets (encodeurs, faders, matrices de LEDs), la bibliothèque MIDIcontroller de Josh Nishikawa s'appuie sur ces classes et les 8 ports série indépendants.
Autres tutoriels pour cette carte
- 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
Exemples de code pour cette carte
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino