更新 mini支持后台播放音乐

This commit is contained in:
dahanzimin
2025-10-14 16:22:00 +08:00
parent 027a40d3a0
commit 21d7c4f84a

View File

@@ -5,6 +5,7 @@ Micropython library for the Music buzzer(Coprocessor I2C communication)
=======================================================
@dahanzimin From the Mixly Team
"""
import _thread
from time import sleep_ms
normal_tone = {
@@ -24,6 +25,8 @@ class MIDI():
def __init__(self, bus, volume=100):
self.reset()
self._bus = bus
self._play = False
self._over = True
self._volume = volume // 5
def set_volume(self, volume):
@@ -86,12 +89,16 @@ class MIDI():
tone = tone[:pos]
def play(self, tune, duration=None):
self._play = True
self._over = False
if duration is None:
self.set_default(tune[0])
else:
self.set_duration(duration)
for tone in tune:
tone = tone.upper()
if not self._play:
break
if tone[0] not in Letter:
continue
midi = self.midi(tone)
@@ -100,6 +107,15 @@ class MIDI():
self._bus.buzzer(0)
sleep_ms(1)
sleep_ms(10)
self._over = True
def play_thread(self, tune, duration=None):
self._play = False
while not self._over:
pass
if not self._play:
_thread.start_new_thread(self.play, (tune, duration))
sleep_ms(50)
def pitch(self, freq):
self._bus.buzzer(self._volume, int(freq))
@@ -112,6 +128,7 @@ class MIDI():
def stop(self):
self._bus.buzzer(0)
self._play = False
sleep_ms(10)
BA_DING=('b5:1','e6:3')