Skip to content

Commit f358ed6

Browse files
Fix volume setting
1 parent daa7125 commit f358ed6

5 files changed

Lines changed: 30 additions & 11 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,6 @@ __pycache__/
3030

3131
# these get created:
3232
c_mpos/c_mpos
33+
34+
# build files
35+
*.bin

internal_filesystem/apps/com.micropythonos.musicplayer/assets/music_player.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,21 @@ class FullscreenPlayer(Activity):
6262
def onCreate(self):
6363
self._filename = self.getIntent().extras.get("filename")
6464
qr_screen = lv.obj()
65-
self._slider_label=lv.label(qr_screen)
65+
self._slider_label = lv.label(qr_screen)
6666
self._slider_label.set_text(f"Volume: {AudioManager.get_volume()}%")
67-
self._slider_label.align(lv.ALIGN.TOP_MID,0,lv.pct(4))
68-
self._slider=lv.slider(qr_screen)
69-
self._slider.set_range(0,16)
70-
self._slider.set_value(int(AudioManager.get_volume()/6.25), False)
67+
self._slider_label.align(lv.ALIGN.TOP_MID, 0, lv.pct(4))
68+
self._slider = lv.slider(qr_screen)
69+
self._slider.set_range(0, 100)
70+
self._slider.set_value(int(AudioManager.get_volume()), False)
7171
self._slider.set_width(lv.pct(90))
72-
self._slider.align_to(self._slider_label,lv.ALIGN.OUT_BOTTOM_MID,0,10)
72+
self._slider.align_to(self._slider_label, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
73+
7374
def volume_slider_changed(e):
74-
volume_int = self._slider.get_value()*6.25
75+
volume_int = int(self._slider.get_value())
7576
self._slider_label.set_text(f"Volume: {volume_int}%")
7677
AudioManager.set_volume(volume_int)
77-
self._slider.add_event_cb(volume_slider_changed,lv.EVENT.VALUE_CHANGED,None)
78+
79+
self._slider.add_event_cb(volume_slider_changed, lv.EVENT.VALUE_CHANGED, None)
7880
self._filename_label = lv.label(qr_screen)
7981
self._filename_label.align(lv.ALIGN.CENTER,0,0)
8082
self._filename_label.set_text(self._filename)

internal_filesystem/lib/mpos/audio/audiomanager.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,23 @@ def set_default_input(cls, input_device):
187187

188188
@classmethod
189189
def set_volume(cls, volume):
190-
cls.get()._volume = max(0, min(100, volume))
190+
manager = cls.get()
191+
try:
192+
volume_int = int(round(volume))
193+
except (TypeError, ValueError):
194+
return manager._volume
195+
volume_int = max(0, min(100, volume_int))
196+
manager._volume = volume_int
197+
198+
for session in list(manager._active_sessions):
199+
stream = getattr(session, "_stream", None)
200+
if stream and hasattr(stream, "set_volume"):
201+
try:
202+
stream.set_volume(volume_int)
203+
except Exception:
204+
pass
205+
206+
return volume_int
191207

192208
@classmethod
193209
def get_volume(cls):

internal_filesystem/lib/mpos/board/linux.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ def adc_to_voltage(adc_value):
108108
# Desktop builds have no real audio hardware, but we simulate microphone
109109
# recording with a 440Hz sine wave for testing WAV file generation
110110
# The i2s_pins dict with 'sd_in' enables microphone simulation
111-
AudioManager()
112111

113112
output_i2s_pins = {
114113
'sck': 0, # Simulated - not used on desktop

internal_filesystem/lib/mpos/board/m5stack_fire.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848

4949
print("m5stack_fire.py init buzzer")
5050
buzzer = PWM(Pin(BUZZER_PIN, Pin.OUT, value=1), duty=5)
51-
AudioManager()
5251
AudioManager.add(AudioManager.Output("buzzer", "buzzer", buzzer_pin=BUZZER_PIN))
5352
AudioManager.set_volume(40)
5453

0 commit comments

Comments
 (0)