音乐
micro:bit 上的 BiBoPython 带有强大的音乐与声音模块。你可以接扬声器或带线耳机,用鳄鱼夹连接 pin 0 与 GND;也可以直接使用 micro:bit 内置扬声器,无需外接硬件。
若外接扬声器、无源压电蜂鸣器或耳机,用鳄鱼夹把 pin 0 和 GND 接到正负输入即可。接扬声器时正负不分先后;无源蜂鸣器可能有极性(看是否有 + 标记正极)。

来听一段内置乐曲:
import music
music.play(music.NYAN)
这里 import music 导入音乐模块,其中包含发声与控制的方法。
BiBoPython 内置不少旋律,完整列表如下:
music.DADADADUMmusic.ENTERTAINERmusic.PRELUDEmusic.ODEmusic.NYANmusic.RINGTONEmusic.FUNKmusic.BLUESmusic.BIRTHDAYmusic.WEDDINGmusic.FUNERALmusic.PUNCHLINEmusic.PYTHONmusic.BADDYmusic.CHASEmusic.BA_DINGmusic.WAWAWAWAAmusic.JUMP_UPmusic.JUMP_DOWNmusic.POWER_UPmusic.POWER_DOWN
把示例里的旋律名换掉,听听你最喜欢哪一首。这些曲调还能当作提示音或信号吗?
小小作曲家
自己写曲子也很容易!
每个音符有名称(如 C# 或 F)、八度(音高,0 最低,4 含中央 C,8 已经很高)和时值(持续多久)。时值用数字表示,数字越大越长;例如时值 4 是 2 的两倍。音符名用 R 表示休止(静音),持续指定的时值。
每个音符写成字符串:
NOTE[octave][:duration]
例如 "A1:4" 表示八度 1 上的 A 音,时值 4。
把多个音符放进列表就得到旋律(类似用图像列表做动画)。播放《两只老虎》开头可以这样写:
import music
tune = ["C4:4", "D4:4", "E4:4", "C4:4", "C4:4", "D4:4", "E4:4", "C4:4",
"E4:4", "F4:4", "G4:8", "E4:4", "F4:4", "G4:8"]
music.play(tune)
音效
BiBoPython 还能发出非音符的 tone,例如警笛效果:
import music
while True:
for freq in range(880, 1760, 16):
music.pitch(freq, 6)
for freq in range(1760, 880, -16):
music.pitch(freq, 6)
这里用的是 music.pitch 方法,参数是频率。例如频率 440 对应音乐会调音用的 A 音。
range 函数生成一串数字,三个参数分别是起始值、结束值和步长。第一个 range(880, 1760, 16) 表示从 880 到 1760、步长 16;第二个 range(1760, 880, -16) 步长为负,音高由高到低——就像警笛上下扫频。
警笛要一直响,所以包在无限 while 循环里。
我们还用了 for 循环——在 Python 里相当于:「对集合里的每一项,做某件事」。上面即:「对每个频率,播放 6 毫秒该音高的声音。」循环体要缩进,Python 才知道哪些代码属于循环。