diff --git a/adafruit_fruitjam/__init__.py b/adafruit_fruitjam/__init__.py index 4086b39..35bde3e 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.volume = self.peripherals.volume self.audio_output = self.peripherals.audio_output diff --git a/adafruit_fruitjam/peripherals.py b/adafruit_fruitjam/peripherals.py index 35e03c5..8ef8e89 100644 --- a/adafruit_fruitjam/peripherals.py +++ b/adafruit_fruitjam/peripherals.py @@ -196,6 +196,7 @@ def __init__(self, audio_output="headphone", safe_volume_limit=12): except OSError: # sdcard init or mounting failed self._sd_mounted = False + self._mp3_decoder = None @property def button1(self) -> bool: @@ -254,6 +255,18 @@ def play_file(self, file_name, wait_to_finish=True): pass self.wavfile.close() + def play_mp3_file(self, filename): + if self._mp3_decoder is None: + from audiomp3 import MP3Decoder # noqa: PLC0415, import outside top-level + + self._mp3_decoder = MP3Decoder(filename) + else: + self._mp3_decoder.open(filename) + + self.audio.play(self._mp3_decoder) + while self.audio.playing: + pass + def stop_play(self): """Stops playing a wav file.""" self.audio.stop()