I2S audio playback is garbled for tone and mp3 playback on Metro ESP32-P4
Los mantenedores suelen responder en 1 día
Evaluación
Este issue todavía no se ha evaluado.
Descripción
CircuitPython version and board name
Adafruit CircuitPython 11.0.0-alpha.3 on 2026-11-12; Adafruit Metro ESP32-P4 with ESP32P4
Code/REPL
# SPDX-FileCopyrightText: 2021 Kattni Rembor for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
CircuitPython I2S Tone playback example.
Plays a tone for one second on, one
second off, in a loop.
"""
import time
import array
import math
import audiocore
import board
import audiobusio
audio = audiobusio.I2SOut(board.D9, board.D10, board.D11)
tone_volume = 0.1 # Increase this to increase the volume of the tone.
frequency = 440 # Set this to the Hz of the tone you want to generate.
length = 8000 // frequency
sine_wave = array.array("h", [0] * length)
for i in range(length):
sine_wave[i] = int((math.sin(math.pi * 2 * i / length)) * tone_volume * (2 ** 15 - 1))
sine_wave_sample = audiocore.RawSample(sine_wave)
while True:
audio.play(sine_wave_sample, loop=True)
time.sleep(1)
audio.stop()
time.sleep(1)
Behavior
When playing back this tone, the audio crackles and can sound garbled. This behavior is also present with mp3 playback, which is how i first came across the issue.
here is test mp3 code:
import board
from audiomp3 import MP3Decoder
import audiobusio
mp3files = ["slow.mp3", "happy.mp3"]
mp3 = open(mp3files[0], "rb")
decoder = MP3Decoder(mp3)
audio = audiobusio.I2SOut(board.D9, board.D10, board.D11)
while True:
for filename in mp3files:
decoder.file = open(filename, "rb")
audio.play(decoder)
print("playing", filename)
while audio.playing:
pass
mp3 files are available here on learn repo: https://github.com/adafruit/Adafruit_Learning_System_Guides/tree/main/CircuitPython_Essentials/CircuitPython_Audio_Out_MP3
Description
i tested with the max98357a stereo dac and pcm5122 line out dac to rule out a speaker issue.
Additional information
the issue is not present with wav file playback. i ran the street chicken example with both DACs:
import audiocore
import board
import audiobusio
audio = audiobusio.I2SOut(board.D9, board.D10, board.D11)
with open("StreetChicken.wav", "rb") as wave_file:
wav = audiocore.WaveFile(wave_file)
print("Playing wav file!")
audio.play(wav)
while audio.playing:
pass
print("Done!")
(wav file here: https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/PCM510x_Examples/CircuitPython_WAV/StreetChicken.wav)
and that plays clearly
- Lenguaje dominante
- C
- Estrellas
- 4.6k
- Forks
- 1.4k
- Merge medio
- 1 d
- PR fusionados (30 d)
- 212
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de adafruit/circuitpython
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
adafruit/circuitpython#11877 ·
Los mantenedores suelen responder en 1 día
-
Update Learn Guides for #11777Abiertodocumentation rp2
Dificultad 1/5 1-3 horas Aptitud para principiantes 67/100
adafruit/circuitpython#11779 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
documentation enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
adafruit/circuitpython#11689 ·
Los mantenedores suelen responder en 1 día
-
esp32-c3 memory optimization network
Dificultad 5/5 Más de una semana Aptitud para principiantes 12/100
adafruit/circuitpython#11879 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
adafruit/circuitpython#11876 ·
Los mantenedores suelen responder en 1 día
Todos los issues de adafruit/circuitpython
Issues similares
-
agent:WSL code-review linux pri:low refactoring tooling
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
DOC BUG Missing
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
SDL-Hercules-390/hyperion#911 ·
Los mantenedores suelen responder en 1 día
-
build: man page directory doubledPosiblemente ocupada @zeusgoose la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
ATtiny xy2: Missing #else path may lead to inconsistencies in core digital_pin_to_timer[] arrayAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
SpenceKonde/megaTinyCore#1294 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ROCm/rocm-libraries#15866 ·
Los mantenedores suelen responder en 2 días