midi-piano.ino
Le Teensy se fait reconnaître en instrument MIDI USB sans aucun circuit : trois boutons jouent un accord de do majeur reçu directement par un DAW (Ardour, LMMS, GarageBand). La bibliothèque MIDI du core gère toute la classe USB.
Matériel requis
Un Teensy 4.0 (NXP i.MX RT1062, Cortex-M7 @ 600 MHz, logique 3,3 V) alimenté par USB. 3 boutons poussoirs (vers GND).
Câblage
Un bouton par broche (2, 3, 4) vers GND, résistance interne PULLUP. Câble USB vers l'ordinateur.
Fonctionnement
MIDI.sendNoteOn/Off émet les messages MIDI sur l'USB (clé USB MIDI). Le moniteur MIDI de l'Arduino IDE ou un DAW les affiche ; Serial reste disponible pour le debug.
Exécution
Avec Teensyduino dans l'Arduino IDE, choisir « Teensy 4.0 », Téléverser puis valider dans le Teensy Loader. Les broches sont en 3,3 V ; le 4.0 est pin-compatible avec le 3.2.
Variantes
Ajouter un potentiomètre pour le volume (Control Change), ou piloter la bibliothèque Audio du Teensy pour générer le son à bord.
midi-piano.ino
// Piano 3 touches : le Teensy est reconnu comme peripherique MIDI USB.
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
const int BROCHES[3] = {2, 3, 4}; // touches vers GND
const int NOTES[3] = {60, 64, 67}; // do, mi, sol
bool enfonce[3] = {false, false, false};
void setup() {
for (int i = 0; i < 3; i++) pinMode(BROCHES[i], INPUT_PULLUP);
MIDI.begin(MIDI_CHANNEL_OMNI);
Serial.begin(9600); // le MIDI passe par l'USB, Serial reste libre
Serial.println(F("MIDI pret (voir le moniteur MIDI de l'IDE)"));
}
void loop() {
for (int i = 0; i < 3; i++) {
bool appui = digitalRead(BROCHES[i]) == LOW;
if (appui && !enfonce[i]) {
enfonce[i] = true;
MIDI.sendNoteOn(NOTES[i], 100, 1); // note, vélocité, canal
Serial.print(F("noteOn ")); Serial.println(NOTES[i]);
} else if (!appui && enfonce[i]) {
enfonce[i] = false;
MIDI.sendNoteOff(NOTES[i], 0, 1);
Serial.print(F("noteOff ")); Serial.println(NOTES[i]);
}
}
}