🛠 Un instrument MIDI USB en 10 minutes : Bounce, boutons et règle d'or du drain

Teensy 3.2 · debutant · Schéma : IMG-teensy-32-debutant-3-teensy32-usb-midi-instrument.svg — Teensy 3.2 avec trois boutons poussoirs sur les broches 1, 2 et 3, câble USB vers un ordinateur affichant une fenêtre de séquenceur (DAW) où apparaît l'entrée MIDI « Teensy » ; note de musique C4 au-dessus du premier bouton.

Objectifs

Transformer la Teensy 3.2 en instrument de musique USB : son port USB device 12 Mbit/s est reconfigurable à volonté (Serial, MIDI, MIDIx4/MIDIx16, Audio, Keyboard, Mouse, Joystick, Flightsim, RawHID…) via Tools > USB Type. Ce tutoriel construit un mini-clavier de 3 boutons avec la bibliothèque Bounce, en appliquant la règle d'or des contrôleurs MIDI énoncée par PJRC : toujours vider les messages entrants, sinon les buffers USB se remplissent et tout se fige.

Matériel

Code complet

Exemple officiel du tutoriel USB MIDI de PJRC (commentaires d'origine) :

#include <Bounce.h>   // Bounce library makes button change detection easy
const int channel = 1;

Bounce button1 = Bounce(1, 5);  // 5 = 5 ms debounce time
Bounce button2 = Bounce(2, 5);  // appropriate for good quality
Bounce button3 = Bounce(3, 5);  // mechanical pushbuttons

void setup {
  pinMode(1, INPUT_PULLUP);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
}

void loop {
  button1.update;
  button2.update;
  button3.update;
  // Note On when each button is pressed
  if (button1.fallingEdge) usbMIDI.sendNoteOn(60, 99, channel); // 60 = C4
  if (button2.fallingEdge) usbMIDI.sendNoteOn(61, 99, channel); // 61 = C#4
  if (button3.fallingEdge) usbMIDI.sendNoteOn(62, 99, channel); // 62 = D4
  // Note Off on release
  if (button1.risingEdge) usbMIDI.sendNoteOff(60, 0, channel);
  if (button2.risingEdge) usbMIDI.sendNoteOff(61, 0, channel);
  if (button3.risingEdge) usbMIDI.sendNoteOff(62, 0, channel);

  // MIDI controllers should discard incoming MIDI messages,
  // otherwise USB buffers fill up
  while (usbMIDI.read) { }
}

Téléversement

Réglez Outils > USB Type : MIDI AVANT de compiler, puis téléversez normalement (Teensy Loader). La carte est alors reconnue comme périphérique USB MIDI class-compliant — aucun driver à installer sur Windows, macOS ou Linux. C'est la raison du succès de la Teensy dans les contrôleurs MIDI DIY.

Vérification attendue

Ouvrez votre DAW ou MIDI-OX : la Teensy apparaît comme entrée MIDI. Chaque appui déclenche C4/C#4/D4 (notes 60/61/62, vélocité 99) et le relâchement envoie le Note Off correspondant. Testez maintenant la règle du drain : si votre séquenceur renvoie des messages (aftertouch, horloge MIDI, synchronisation MTC…), l'absence de la boucle while (usbMIDI.read) { } remplit les buffers USB et fige le contrôleur après quelques minutes — c'est le bug le plus rapporté.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels