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

Objetivos

Transformar la Teensy 3.2 en un instrumento de música USB: su puerto USB de dispositivo de 12 Mbit/s es reconfigurable a voluntad (Serial, MIDI, MIDIx4/MIDIx16, Audio, Keyboard, Mouse, Joystick, Flightsim, RawHID…) mediante Tools > USB Type. Este tutorial construye un mini-teclado de 3 botones con la biblioteca Bounce, aplicando la regla de oro de los controladores MIDI enunciada por PJRC: siempre vaciar los mensajes entrantes, de lo contrario los búferes USB se llenan y todo se congela.

Material

Código completo

Ejemplo oficial del tutorial USB MIDI de PJRC (comentarios originales):

#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) { }
}

Carga del programa

Configure Tools > USB Type: MIDI ANTES de compilar, y luego cargue el programa normalmente (Teensy Loader). La placa es entonces reconocida como un dispositivo USB MIDI class-compliant — no hay que instalar ningún driver en Windows, macOS o Linux. Esta es la razón del éxito de la Teensy en los controladores MIDI DIY.

Verificación esperada

Abra su DAW o MIDI-OX: la Teensy aparece como entrada MIDI. Cada pulsación dispara C4/C#4/D4 (notas 60/61/62, velocidad 99) y la liberación envía el Note Off correspondiente. Pruebe ahora la regla del drenaje: si su secuenciador devuelve mensajes (aftertouch, reloj MIDI, sincronización MTC…), la ausencia del bucle while (usbMIDI.read) { } llena los búferes USB y congela el controlador después de unos minutos — este es el error más reportado.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales