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 3.2 (NXP Kinetis MK20DX256, Cortex-M4 @ 72 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
Installer le plugin Teensyduino dans l'Arduino IDE, choisir la carte « Teensy 3.2 », cliquer sur Téléverser puis sur le bouton du Teensy Loader. Attention : broches en 3,3 V.
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]);
}
}
}