Music(音乐)
Microbit开发板拥有一个音乐模块。如果Pin0和GND连接扬声器,调用相应方法,可以播放一些音乐。
播放音乐:
import music
music.play(music.NYAN)
注意:导入music模块;它包含生成和控制声音的方法。
函数
music.set_tempo(ticks=4,bpm=120)
设置播放的速度,一个音节(表示为整数)构成一个节拍。每个节拍将以每分钟的特定频率播放。
建议的默认值允许以下有用的行为:
-
**music.set_tempo() **将速度设为默认值:ticks = 4,bpm = 120。
-
**music.set_tempo(ticks=8) **改变一个节拍的“定义”。
-
**music.set_tempo(bpm=180) **只改变速度。
计算出毫秒的刻度长度非常简单:
60000/bpm/ticks_per_beat
。默认值为60000/120/4=125milliseconds
或1beat=500milliseconds
music.get_tempo()
获取当前节奏作为整数元组:(ticks,bpm)
music.play(music,pin=microbit.pin0,wait=True,loop=False)
music
包含上面定义的音乐DSL的播放。
如果music
是一个字符串,它将被预期为单个注释,例如'c1:4'
。
如果music
被指定为音符列表(如上面音乐DSL中的部分所定义的),则将它们连续地播放出来。
在这两种情况下,在播放音乐之前,将duration
和octave
重置为默认值。
指定输出引脚microbit.pin0
。
如果wait
设置True
,则阻塞。
如果loop设置为True,则重复播放直到stop被调用(见下文)或被阻塞中断。
music.pitch(frequency,len=-1,pin=microbit.pin0,wait=True)
在指定的时间(单位:毫秒)内播放1个音调。例如,如果frequency
为440,len
为1000,那么我们听到一种音调(frequency为440)一秒钟。
如果wait
设置为True
,则此函数处于阻塞状态。
如果len
为负,音调将持续播放,直到阻塞被中断。
music.stop(pin=microbit.pin0)
停止给定针脚上的所有音乐播放。
music.reset()
以下列方式重置以下属性的状态:
- ticks=4
- bpm=120
- duration=4
- octave=4
Micropython包含许多内置音律,你可以使用如下旋律演示:
- music.DADADADUM---贝多芬C小调第五交响曲开幕
- music.ENTERTAINER---Scott Joplin的Ragtime经典“The Entertainer”的开场片段
- music.PRELUDE---在JSBach的48个Preludes and Fugues的C大调第一个序曲开幕
- music.ODE---贝多芬第九交响曲“DOD”中的“欢乐”主题
- music.NYAN---Nyan Cat主题
- music.RINGTONE---听起来像手机铃声的东西。用于指示传入的消息。
- music.FUNK---一个时髦的低音线。
- music.BLUES---boogie-woogie 12杆蓝调散步低音
- music.BIRTHDAY---“祝你生日快乐”
- music.WEDDING---瓦格纳歌剧“Lohengrin”
- music.FUNERAL---“葬礼游行”,又称FrédéricChopin的钢琴奏鸣曲“B”小调中的第2号钢琴奏鸣曲
- music.PUNCHLINE---一个有趣的片段
- music.PYTHON---约翰·菲利普·苏萨(John Philip Sousa)的“自由钟”
- music.BADDY---沉默的电影时代入口的一个坏蛋
- music.CHASE---沉默的电影时代追逐的场景
- music.BA_DING---一些事情的简短信号
- music.WAWAWAWAA---非常难过的长号
- music.JUMP_UP---用于游戏,指示向上移动
- music.JUMP_DOWN---用于游戏,表示向下移动
- music.POWER_UP---表示成就解锁的狂欢
- music.POWER_DOWN---表示失去成就的悲伤狂欢
创建自己的曲调很容易!
每个音符表示为一串字符是这样的:
NOTE[octave][:duration]
每一个音符都有一个名称(比如C调或F调),音阶(向Micropython传递音符音调高低)和周期(音调的持续时间)。音阶由数字表示。0是最低阶,4代表中音C调,8是最高音阶。你应该不会用到8,除非你想魔音穿耳。周期也是由数字表示,数字越大持续时间越长。不同周期值之间互有联系,比如说周期4的持续时间是周期2的两倍等等。如果你调用周期R,Micropython会在指定周期内不发声。
例如,“A1:4”
表示1个为A的音符在八度音阶持续播放“4”周期。
列出的基调来创建一个旋律(相当于创建一个动画的图像)。例如,下面是如何使MicroPython播放“Frere Jaques”:
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)
Sound Effects(音效)
Micropython可以让你制作曲调,例如,制作一个警笛声:
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)
上面例子中的range用户循环改变曲调。Range(800,1760,16)表示在800到1760之间,每循环一次,freq增加16.(-16每循环一次,减少16)。
注意music.pitch这个实例如何使用。它需要一个频率,例如,频率设置为440,用于调出管弦乐中的A调。
上面例子中的range用户循环改变曲调。Range(800,1760,16)表示在800到1760之间,每循环一次,freq增加16.(-16每循环一次,减少16)。
Examples
from microbit import *
import music
# play Prelude in C.
notes=['c4:1','e','g','c5','e5','g4','c5','e5','c4','e','g','c5','e5','g4','c5','e5',
'c4','d','g','d5','f5','g4','d5','f5','c4','d','g','d5','f5','g4','d5','f5','b3','d4','g',
'd5','f5','g4','d5','f5','b3','d4','g','d5','f5','g4','d5','f5','c4','e','g','c5','e5',
'g4','c5','e5','c4','e','g','c5','e5','g4','c5','e5','c4','e','a','e5','a5','a4','e5','a5',
'c4','e','a','e5','a5','a4','e5','a5','c4','d','f#','a','d5','f#4','a','d5','c4','d','f#',
'a','d5','f#4','a','d5','b3','d4','g','d5','g5','g4','d5','g5','b3','d4','g','d5','g5','g4',
'd5','g5','b3','c4','e','g','c5','e4','g','c5','b3','c4','e','g','c5','e4','g','c5','b3','c4',
'e','g','c5','e4','g','c5','b3','c4','e','g','c5','e4','g','c5','a3','c4','e','g','c5','e4',
'g','c5','a3','c4','e','g','c5','e4','g','c5','d3','a','d4','f#','c5','d4','f#','c5','d3','a',
'd4','f#','c5','d4','f#','c5','g3','b','d4','g','b','d','g','b','g3','b3','d4','g','b','d','g','b']
music.play(notes)