🛠 Contrôleur MIDI USB : un potard qui joue du piano (MIDIx4/MIDIx16)
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
- 1 Teensy 4.0 + cable USB hacia un ordenador
- 1 potenciómetro de 10 kΩ: 3,3 V / GND / cursor en A0
- Un DAW, GarageBand, o un monitor MIDI (MIDI-OX, midiMonitor, la aplicación web webmidi.com)
- Biblioteca MIDI (MIDI Library) a través del gestor de la IDE
Procedimiento
- Tools > USB Type : MIDI ANTES de cargar — esta es la etapa que todos olvidan.
- Carga el sketch de abajo, desenchufa/vuelve a enchufar el USB si es necesario (no hay reset físico en el 4.0).
- 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
- Olvidar USB Type : MIDI : el sketch compila, se ejecuta, y ningún dispositivo MIDI aparece — el descriptor USB se elige EN LA COMPILACIÓN.
- El Monitor serie desaparece en modo MIDI : la clase MIDI no transporta la serie ; para depurar, usa un USB Type combinado (p. ej. « Serial + MIDI ») si está disponible, o usa el LED.
- Notas fantasma tras reconectar : sin reset físico, el estado se pierde al desconectar ; envía un All Notes Off (0xB0, 123) al inicio si tu sintetizador es susceptible.
- Potenciómetro en 5 V : otra vez ella — el rango ADC es 0–3,3 V, alimentarlo con 5 V satura la lectura en el extremo superior (y roza el límite de entrada).
- delay(10) en una verdadera máquina de ritmo : para MIDI en tiempo real, sincroniza con el contador de ciclos ARM_DWT_CYCCNT o un IntervalTimer ; 10 ms sigue siendo correcto para un controlador.
- Varios Teensy MIDI en el mismo PC : los DAW los listan ambos como « Teensy MIDI » — nombra tus cables virtuales (MIDIx4) para orientarte.
Otros tutoriales para esta placa
- Premiers pas sur le Teensy 4.0 : Teensyduino, Loader et premier Blink
- GPIO et PWM sous 3,3 V : les règles d'or du Teensy 4.0
- Entrées analogiques et capteur de température interne : le ADC et ses limites
- Piloter un ruban WS2812 sans bloquer le CPU : WS2812Serial et OctoWS2811
- Comprendre la mémoire : 2 Mo de flash, 1 Mo de RAM TCM/DMA, EEPROM émulée et LittleFS
- Deux ports USB simultanés : périphérique 480 Mbit/s ET hôte USB sur les pastilles
Ejemplos de código para esta placa
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino