From 1f46569c1d1c43f7e300c178ccd86f04457f002a Mon Sep 17 00:00:00 2001 From: foamyguy Date: Mon, 25 Aug 2025 18:50:43 -0500 Subject: [PATCH 1/2] play_mp3_file() function --- adafruit_fruitjam/__init__.py | 1 + adafruit_fruitjam/peripherals.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/adafruit_fruitjam/__init__.py b/adafruit_fruitjam/__init__.py index 57240b9..51af6e6 100644 --- a/adafruit_fruitjam/__init__.py +++ b/adafruit_fruitjam/__init__.py @@ -193,6 +193,7 @@ def __init__( # noqa: PLR0912,PLR0913,Too many branches,Too many arguments in f self.sd_check = self.peripherals.sd_check self.play_file = self.peripherals.play_file + self.play_mp3_file = self.peripherals.play_mp3_file self.stop_play = self.peripherals.stop_play self.image_converter_url = self.network.image_converter_url diff --git a/adafruit_fruitjam/peripherals.py b/adafruit_fruitjam/peripherals.py index 461bbcf..e0797d2 100644 --- a/adafruit_fruitjam/peripherals.py +++ b/adafruit_fruitjam/peripherals.py @@ -189,6 +189,7 @@ def __init__(self): except OSError: # sdcard init or mounting failed self._sd_mounted = False + self._mp3_decoder = None @property def button1(self) -> bool: @@ -247,6 +248,19 @@ def play_file(self, file_name, wait_to_finish=True): pass self.wavfile.close() + def play_mp3_file(self, filename): + with open(filename, "rb") as f: + if self._mp3_decoder is None: + from audiomp3 import MP3Decoder # noqa: PLC0415, import outside top-level + + self._mp3_decoder = MP3Decoder(f) + else: + self._mp3_decoder.file = f + + self.audio.play(self._mp3_decoder) + while self.audio.playing: + pass + def stop_play(self): """Stops playing a wav file.""" self.audio.stop() From b4f18f7d8f1f60640633029ba6c1535e2900406d Mon Sep 17 00:00:00 2001 From: foamyguy Date: Thu, 28 Aug 2025 12:59:41 -0500 Subject: [PATCH 2/2] use MP3Decoder.open() --- adafruit_fruitjam/peripherals.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/adafruit_fruitjam/peripherals.py b/adafruit_fruitjam/peripherals.py index 5b0473c..8ef8e89 100644 --- a/adafruit_fruitjam/peripherals.py +++ b/adafruit_fruitjam/peripherals.py @@ -256,17 +256,16 @@ def play_file(self, file_name, wait_to_finish=True): self.wavfile.close() def play_mp3_file(self, filename): - with open(filename, "rb") as f: - if self._mp3_decoder is None: - from audiomp3 import MP3Decoder # noqa: PLC0415, import outside top-level + if self._mp3_decoder is None: + from audiomp3 import MP3Decoder # noqa: PLC0415, import outside top-level - self._mp3_decoder = MP3Decoder(f) - else: - self._mp3_decoder.file = f + self._mp3_decoder = MP3Decoder(filename) + else: + self._mp3_decoder.open(filename) - self.audio.play(self._mp3_decoder) - while self.audio.playing: - pass + self.audio.play(self._mp3_decoder) + while self.audio.playing: + pass def stop_play(self): """Stops playing a wav file."""