Skip to content

Commit db8bef1

Browse files
committed
rename method Speaker.clear()
1 parent 5acf584 commit db8bef1

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

src/arduino/app_bricks/sound_generator/__init__.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,16 @@ def set_master_volume(self, volume: float):
146146
"""
147147
self._master_volume = max(0.0, min(1.0, volume))
148148

149+
def set_bpm(self, bpm: int):
150+
"""
151+
Set the tempo in beats per minute.
152+
Args:
153+
bpm (int): Tempo in beats per minute.
154+
"""
155+
with self._cfg_lock:
156+
self._bpm = bpm
157+
logger.debug(f"BPM updated to {bpm}")
158+
149159
def set_effects(self, effects: list):
150160
"""
151161
Set the list of sound effects to apply to the audio signal.
@@ -750,7 +760,7 @@ def stop_sequence(self):
750760
self._sequence_stop_event.set()
751761
# Clear reference immediately - thread will clean itself up
752762
self._sequence_thread = None
753-
self._output_device.drop_playback()
763+
self._output_device.clear()
754764
else:
755765
logger.warning("stop_sequence called but no active sequence thread")
756766

@@ -782,7 +792,6 @@ def _playback_sequence_thread(
782792
queuing each step, ensuring perfect sync with audio playback.
783793
"""
784794
from itertools import cycle
785-
import numpy as np
786795

787796
try:
788797
duration = self._note_duration(note_duration)

src/arduino/app_peripherals/speaker/__init__.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@
77
import threading
88
import queue
99
import re
10-
import logging
1110
from arduino.app_utils import Logger
1211

13-
logger = Logger("Speaker", logging.DEBUG)
12+
logger = Logger("Speaker")
1413

1514

1615
class SpeakerException(Exception):
@@ -527,8 +526,8 @@ def clear_playback_queue(self):
527526
"""Clear the playback queue."""
528527
self._clear_queue()
529528

530-
def drop_playback(self):
531-
"""Drop all pending audio data immediately (both queue and hardware buffer).
529+
def clear(self):
530+
"""Clear all pending audio data immediately (both queue and hardware buffer).
532531
533532
This method clears both the software queue and the ALSA hardware buffer,
534533
stopping audio playback immediately. Use this for responsive stop operations.
@@ -539,14 +538,14 @@ def drop_playback(self):
539538
# Clear software queue first
540539
self._clear_queue()
541540

542-
# Then drop ALSA hardware buffer
541+
# Then clear ALSA hardware buffer
543542
with self._pcm_lock:
544543
if self._pcm is not None:
545544
try:
546545
self._pcm.drop() # Immediately stop PCM, drop pending frames
547-
logger.debug("ALSA PCM buffer dropped")
546+
logger.debug("ALSA PCM buffer cleared")
548547
except Exception as e:
549-
logger.warning(f"Failed to drop PCM buffer: {e}")
548+
logger.warning(f"Failed to clear PCM buffer: {e}")
550549

551550
# Allow playback to resume
552551
self._is_dropping.clear()

0 commit comments

Comments
 (0)