🛠 Chaîne audio 44,1 kHz : Audio Library, Design Tool, I2S, S/PDIF et sortie MQS
Objetivos
Teensy es la plataforma de referencia para pedales y sintetizadores DIY gracias a la Teensy Audio Library y su Audio System Design Tool gráfico (https://www.pjrc.com/teensy/gui/): dibujas un grafo de flujo de señales mediante arrastrar y soltar, y la herramienta EXPORTA el código Arduino funcional. El M7 a 600 MHz y sus instrucciones DSP permiten procesar audio estéreo real a 44,1 kHz. En cuanto al hardware: 2 puertos I2S/TDM (8 canales I2S / 16 TDM), entradas/salidas S/PDIF independientes, y la salida MQS «Medium Quality Sound» para altavoz directo. Atención a las revisiones del Audio Shield: es LA trampa histórica del paso de la versión 3.x a la 4.0.
Material
- 1 Teensy 4.0
- A elegir: Audio Shield (se recomienda la rev D — ver más abajo), kit DAC PT8211 (https://www.pjrc.com/store/pt8211_kit.html), o la salida MQS en un pin
- Auriculares o amplificador; librería Audio (incluida en Teensyduino)
La trampa de las revisiones del shield
Las señales de audio cambiaron de pines entre Teensy 3.x y 4.0: los shields Rev B originales NO funcionan directamente — hay que añadir cables Y una resistencia de 100 Ω en serie con MCLK; la Rev C solo añadió la resistencia; solo la Rev D enruta nativamente el Teensy 4.0 (fuente: hilo del foro, Paul Stoffregen).
Código completo (generable por el 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
Verificación esperada
Un tono limpio de 440 Hz sale por los auriculares. Abre el Design Tool: añade un EffectReverb, un EffectFilterLowPass, un archivo WAV leído desde la tarjeta SD (los 8 pads SDIO en la parte trasera, SD.begin(BUILTIN_SDCARD)), exporta y compara el código generado con el tuyo — ese es todo el interés de la herramienta. Bajo carga, verifica el espacio de CPU restante (la herramienta estima la carga del grafo): el M7 procesa simultáneamente reverberación + EQ + delay.
Errores frecuentes
- Olvidar AudioMemory(n): el código compila, se ejecuta, y solo produce un silencio educado — el pool de bloques es obligatorio.
- Conectar un shield Rev B «como en el Teensy 3.2»: sin sonido o sonido distorsionado — cableado adicional + 100 Ω en MCLK obligatorios; verifica la serigrafía de tu shield.
- Creer que la entrada de micrófono está conectada al ADC interno: el códec SGTL5000 del Audio Shield pasa por I2S; el ADC del borde, en cambio, no está diseñado para audio (~10 bits efectivos).
- Confundir MQS e I2S: MQS = salida PWM filtrada para altavoz pequeño (calidad correcta, cero componentes críticos); I2S = hacia un DAC real (PT8211, códec del Audio Shield).
- Saturar el pool de audio: cada bloque de efecto tiene un coste; AudioMemory demasiado pequeño = crujidos, demasiado grande = escasez de RAM para el resto.
- S/PDIF: los pines de entrada/salida son independientes de los puertos I2S — no los configures dos veces.
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
- 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
Ejemplos de código para esta placa
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino