🛠 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.

Objetivos

El MIDI es uno de los campos de juego favoritos del Teensy: la clase USB MIDI es class-compliant (sin controladores en Windows, Mac, Linux) y PJRC lleva el concepto hasta MIDIx4 y MIDIx16 — 4 o 16 cables MIDI virtuales sobre un solo cable USB, a 480 Mbit/s. Vas a construir un controlador mínimo: un potenciómetro en A0 que toca una nota (de C4 a B5) en cualquier DAW.

Material

Procedimiento

  1. Tools > USB Type : MIDI ANTES de cargar — esta es la etapa que todos olvidan.
  2. Carga el sketch de abajo, desenchufa/vuelve a enchufar el USB si es necesario (no hay reset físico en el 4.0).
  3. Abre tu DAW: aparece un dispositivo « Teensy MIDI ».

Código completo

// 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);
}

Verificación esperada

Gira el potenciómetro: las notas se encadenan correctamente (la nota anterior siempre se libera antes de la nueva — sin notas «colgadas»). El monitor MIDI muestra Note On/Off en el canal 1. Para ir más allá: cambia USB Type a MIDIx16 y emite en 16 canales lógicos distintos, o combínalo con el modo Keyboard + MIDI (el Teensy se convierte a la vez en un teclado USB y en un dispositivo MIDI).

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales