I2S audio playback is garbled for tone and mp3 playback on Metro ESP32-P4
Les mainteneurs répondent en général sous 1 jour
Évaluation
Cette issue n'a pas encore été évaluée.
Description
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
- Langage dominant
- C
- Étoiles
- 4.6k
- Forks
- 1.4k
- Merge moyen
- 1 j
- PR mergées (30 j)
- 212
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de adafruit/circuitpython
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
adafruit/circuitpython#11877 ·
Les mainteneurs répondent en général sous 1 jour
-
Update Learn Guides for #11777Ouvertedocumentation rp2
Difficulté 1/5 1-3 heures Accessibilité débutants 67/100
adafruit/circuitpython#11779 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
documentation enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
adafruit/circuitpython#11689 ·
Les mainteneurs répondent en général sous 1 jour
-
esp32-c3 memory optimization network
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 12/100
adafruit/circuitpython#11879 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
adafruit/circuitpython#11876 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de adafruit/circuitpython
Issues similaires
-
agent:WSL code-review linux pri:low refactoring tooling
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
DOC BUG Missing
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
SDL-Hercules-390/hyperion#911 ·
Les mainteneurs répondent en général sous 1 jour
-
build: man page directory doubledPeut-être pris @zeusgoose l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
-
ATtiny xy2: Missing #else path may lead to inconsistencies in core digital_pin_to_timer[] arrayOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
SpenceKonde/megaTinyCore#1294 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
ROCm/rocm-libraries#15866 ·
Les mainteneurs répondent en général sous 2 jours