🛠 Chaîne audio 44,1 kHz : Audio Library, Design Tool, I2S, S/PDIF et sortie MQS
Objectifs
Le Teensy est la plateforme de référence des pédales et synthés DIY grâce à la Teensy Audio Library et son Audio System Design Tool graphique (https://www.pjrc.com/teensy/gui/) : vous dessinez un graphe de flux de signaux par glisser-déposer et l'outil EXPORT le code Arduino fonctionnel. Le M7 à 600 MHz et ses instructions DSP font passer du 44,1 kHz stéréo réel. Côté matériel : 2 ports I2S/TDM (8 canaux I2S / 16 TDM), entrées/sorties S/PDIF indépendantes, et la sortie MQS « Medium Quality Sound » pour haut-parleur direct. Attention aux révisions de l'Audio Shield : c'est LE piège historique du passage 3.x → 4.0.
Matériel
- 1 Teensy 4.0
- Au choix : Audio Shield (rév D recommandée — voir plus bas), kit DAC PT8211 (https://www.pjrc.com/store/pt8211_kit.html), ou la sortie MQS sur broche
- Casque ou ampli ; bibliothèque Audio (incluse dans Teensyduino)
Le piège des révisions de shield
Les signaux audio ont changé de broches entre Teensy 3.x et 4.0 : les shields Rev B d'origine ne fonctionnent PAS directement — il faut ajouter des fils ET une résistance 100 Ω en série sur MCLK ; la Rev C n'a ajouté que la résistance ; seule la Rev D route nativement le Teensy 4.0 (source : fil de sortie du forum, Paul Stoffregen).
Code complet (générable par le Design Tool)
// 440 Hz stéréo via l'Audio Shield — le graphe décrit ici est
// exactement ce que produit le Design Tool par glisser-déposer.
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
AudioSynthWaveformSine sine;
AudioOutputI2S sortie;
AudioConnection patchDroite(sine, 0, sortie, 0);
AudioConnection patchGauche(sine, 0, sortie, 1);
AudioControlSGTL5000 codec;
void setup {
AudioMemory(10); // pool de blocs audio — sans lui, rien ne sort
codec.enable;
codec.volume(0.5);
sine.frequency(440.0);
sine.amplitude(0.3);
}
void loop { } // tout tourne dans les interruptions audio
Vérification attendue
Un 440 Hz propre sort dans le casque. Ouvrez le Design Tool : ajoutez un EffectReverb, un EffectFilterLowPass, un fichier WAV lu depuis la carte SD (les 8 pastilles SDIO du dos, SD.begin(BUILTIN_SDCARD)), exportez, comparez le code généré avec le vôtre — c'est tout l'intérêt de l'outil. Sous charge, vérifiez la place CPU restante (l'outil estime la charge du graphe) : le M7 avale réverbe + EQ + delay simultanés.
Erreurs fréquentes
- Oublier AudioMemory(n) : le code compile, tourne, et ne produit qu'un silence poli — le pool de blocs est obligatoire.
- Shield Rev B branché « comme sur le Teensy 3.2 » : aucun son ou son haché — câblage additionnel + 100 Ω sur MCLK obligatoires ; vérifiez la sérigraphie de votre shield.
- Croire l'entrée micro branchée sur l'ADC interne : le codec SGTL5000 de l'Audio Shield passe par I2S ; l'ADC du bord, lui, n'est pas fait pour l'audio (~10 bits effectifs).
- Confondre MQS et I2S : MQS = sortie PWM filtrée pour petit haut-parleur (qualité correcte, zéro composant critique) ; I2S = vers un vrai DAC (PT8211, codec de l'Audio Shield).
- Saturer le pool audio : chaque bloc d'effet coûte ; AudioMemory trop petit = craquements, trop gros = famine de RAM pour le reste.
- S/PDIF : les broches d'entrée/sortie sont indépendantes des ports I2S — ne pas les configurer deux fois.
Autres tutoriels pour cette carte
- 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
- Contrôleur MIDI USB : un potard qui joue du piano (MIDIx4/MIDIx16)
- Comprendre la mémoire : 2 Mo de flash, 1 Mo de RAM TCM/DMA, EEPROM émulée et LittleFS
Exemples de code pour cette carte
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino