🛠 DSP audio temps réel sur le Teensy 4.1 : bibliothèque Audio, I2S/TDM, S/PDIF et MQS
Objectifs
L'écosystème audio est l'apanage du Teensy : la bibliothèque Audio streams du 16 bits / 44,1 kHz multi-canaux en exploitant les instructions DSP du Cortex-M7, se programme graphiquement avec l'Audio System Design Tool (glisser-déposer d'objets : oscillateurs, filtres, effets, mixeurs) et génère le code C++ correspondant. Le 4.1 pousse l'avantage : 2 ports I2S/TDM (jusqu'à 8 canaux I2S / 16 TDM par port), une entrée et une sortie S/PDIF indépendantes, et la sortie MQS pour petit haut-parleur.
Matériel
- 1 Teensy 4.1 + câble micro-USB de données
- L'Audio Shield officiel (il chevauche les ports I2S) pour l'entrée/sortie analogique stéréo
- Sans shield : la broche MQS attaque directement un petit haut-parleur ; un kit PT8211 offre une sortie DAC simple
Points clés
- Le tutoriel officiel s'exécute dans l'IDE : File > Examples > Audio > Tutorial — suivez-le dans l'ordre.
- L'outil graphique (https://www.pjrc.com/teensy/gui/) génère la configuration des objets et des canaux ; le code produit se compile comme un sketch ordinaire.
- Le M7 à 600 MHz avec ses extensions DSP et son FPU matériel (simple ET double précision) fait tourner des chaînes complètes de filtres en temps réel.
- Les canaux QuadTimer4 sont réservés par la temporisation ADC de la bibliothèque Audio : ne les utilisez pas pour votre PWM.
- Pas de DAC interne sur le 4.1 (contrairement aux 3.5/3.6) : toute sortie analogique passe par I2S (shield), MQS ou PT8211.
Démarche
- Ouvrez l'outil de conception Audio, posez un objet Waveform (sinus 440 Hz), un objet Output (I2S), reliez-les, exportez.
- Collez le code généré dans un sketch, choisissez Tools > Board > Teensy 4.1, téléversez.
- Écoutez sur l'Audio Shield (sortie casque) ou le haut-parleur MQS.
- Enrichissez : filtre biquad, réverbération à retard, mixage multi-objets — l'outil affiche le budget CPU consommé.
Vérification attendue
Un 440 Hz propre sort de la sortie choisie, sans arte audible malgré les filtres ajoutés : le budget CPU affiché par l'outil reste très bas sur le M7 à 600 MHz. En branchant l'entrée ligne sur un micro, vous pouvez enchaîner filtre + delay et entendre l'effet en direct.
Erreurs fréquentes
- Chercher
analogWritepour la sortie audio : le 4.1 n'a pas de DAC ; MQS ou I2S uniquement. - Empiler l'Audio Shield (conçu pour les ports des Teensy 3.x/4.0) sans lire la notice d'adaptation des broches vers le format long du 4.1.
- Oublier que S/PDIF est indépendant des ports I2S : vous pouvez numériser en S/PDIF tout en jouant sur I2S, mais il faut configurer les deux horloges.
- Surcharger un seul port I2S : répartissez sur les deux ports (et jusqu'à 16 canaux en TDM) avant de saturer.
Autres tutoriels pour cette carte
- Premiers pas sur le Teensy 4.1 : Teensyduino, Teensy Loader et premier Blink
- GPIO et PWM sur le Teensy 4.1 : 55 broches en 3,3 V, ni 5 V tolérées ni traîne
- Entrées analogiques du Teensy 4.1 : 18 broches, 2 ADC, 0-3,3 V fixes et zéro DAC
- Logger sur carte SD via le port SDIO natif du Teensy 4.1
- Serveur web embarqué : l'Ethernet natif 10/100 du Teensy 4.1 (DP83825)
- Boîte à rythmes USB MIDI : classes MIDI, MIDIx16 et port hôte USBHost_t36
Exemples de code pour cette carte
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino