I2S audio playback is garbled for tone and mp3 playback on Metro ESP32-P4
Mantenedores costumam responder em até 1 dia
Avaliação
Esta issue ainda não foi avaliada.
Descrição
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
- Linguagem predominante
- C
- Estrelas
- 4.6k
- Forks
- 1.4k
- Merge médio
- 1d
- PRs com merge (30d)
- 212
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de adafruit/circuitpython
-
documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
adafruit/circuitpython#11877 ·
Mantenedores costumam responder em até 1 dia
-
documentation rp2
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 67/100
adafruit/circuitpython#11779 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
documentation enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100
adafruit/circuitpython#11689 ·
Mantenedores costumam responder em até 1 dia
-
esp32-c3 memory optimization network
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 12/100
adafruit/circuitpython#11879 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
adafruit/circuitpython#11876 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de adafruit/circuitpython
Issues semelhantes
-
agent:WSL code-review linux pri:low refactoring tooling
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
DOC BUG Missing
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
SDL-Hercules-390/hyperion#911 ·
Mantenedores costumam responder em até 1 dia
-
build: man page directory doubledTalvez já em andamento @zeusgoose assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
-
ATtiny xy2: Missing #else path may lead to inconsistencies in core digital_pin_to_timer[] arrayAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
SpenceKonde/megaTinyCore#1294 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
ROCm/rocm-libraries#15866 ·
Mantenedores costumam responder em até 2 dias