🛠 Contrôleur MIDI USB : un potard qui joue du piano (MIDIx4/MIDIx16)

Teensy 4.0 · intermediaire · Schéma : IMG-teensy-40-intermediaire-5-teensy40-controleur-midi-usb.svg — Teensy 4.0 relié par USB à un ordinateur affichant un DAW ; potentiomètre sur A0, encart « Tools > USB Type : MIDI », bulles note ON / note OFF vers la piste logicielle.

Objectifs

Le MIDI est l'un des terrains de jeu favoris du Teensy : la classe USB MIDI est class-compliant (aucun pilote sur Windows, Mac, Linux) et PJRC pousse le concept jusqu'à MIDIx4 et MIDIx16 — 4 ou 16 câbles MIDI virtuels sur un seul câble USB, à 480 Mbit/s. Vous allez construire un contrôleur minimal : un potentiomètre sur A0 qui joue une note (C4 à B5) dans n'importe quel DAW.

Matériel

Procédure

  1. Tools > USB Type : MIDI AVANT de téléverser — c'est l'étape que tout le monde oublie.
  2. Téléversez le sketch ci-dessous, débranchez/rebranchez l'USB si besoin (pas de reset matériel sur le 4.0).
  3. Ouvrez votre DAW : un appareil « Teensy MIDI » apparaît.

Code complet

// Potard A0 -> note MIDI. USB Type: MIDI requis.
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE;

uint8_t derniereNote = 0;

void setup { MIDI.begin(MIDI_CHANNEL_OMNI); }

void loop {
  // ADC 10 bits effectifs (plage 0-3,3 V) -> 24 demi-tons
  uint8_t note = 60 + map(analogRead(A0), 0, 1023, 0, 23); // C4..B5
  if (note != derniereNote) {
    if (derniereNote) MIDI.sendNoteOff(derniereNote, 0, 1); // lâche l'ancienne
    MIDI.sendNoteOn(note, 100, 1);                          // vélocité 100
    derniereNote = note;
  }
  delay(10);
}

Vérification attendue

Tournez le potard : les notes s'enchaînent proprement (l'ancienne note est toujours relâchée avant la nouvelle — pas de note « collée »). Le moniteur MIDI affiche Note On/Off canal 1. Pour aller plus loin : changez USB Type pour MIDIx16 et émettez sur 16 canaux logiques distincts, ou combinez avec le mode Keyboard + MIDI (le Teensy devient à la fois un clavier USB et un périphérique MIDI).

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels