-
Notifications
You must be signed in to change notification settings - Fork 31
how_to_sound
MicroPython 在 micro:bit 中有着非常强劲的音乐和声音的模块,它是非常方便的从你外接或自带的喇叭上生成bleep和bloop声。使用鳄鱼夹外界pin 0和 GND 到喇叭的正极和负极,它们与扬声器的连接方式无关。
##注意不要装压电式蜂鸣器,它只能播放单个声调。
咳咳,废话不多说,来点音乐
import music
music.play(music.NYAN)
注意拉,我们导入了音乐模块,它包含许多方法去使用或者控制音乐。 同时 MicroPython 有大量内置的音乐,这是全部列表
- music.DADADADUM
- music.ENTERTAINER
- music.PRELUDE
- music.ODE
- music.NYAN
- music.RINGTONE
- music.FUNK
- music.BLUES
- music.BIRTHDAY
- music.WEDDING
- music.FUNERAL
- music.PUNCHLINE
- music.PYTHON
- music.BADDY
- music.CHASE
- music.BA_DING
- music.WAWAWAWAA
- music.JUMP_UP
- music.JUMP_DOWN
- music.POWER_UP
- music.POWER_DOWN 挑选一些出来听听,应该会有你喜欢的
每一个节点都有它的名字,比如 C# 或者 F ,于是搭配一个8度的音阶 告诉 MicroPython 这个该被播放的音符应该是高还是低,而且该持续多久,八度用数字表示,0是最低的,4则是中间C,然后8则为最高的音符,当然持续时间也得用一个数字表示,值越大,所持续时间也自然越长,所以这个值很好计算,比如4的持续时间是2的二倍,如果你给节点命名为 R 那么在哪一个持续周期,喇叭就不会播放任何声音。 为了很好解释这些,我们来看一个案例
NOTE[octave][:duration]
对于这个案例, “A1:4”指的是 被命名为A的字符在第一度,播放4个的时间 我们可以做一个node的列表 创建一个旋律。这其实跟创建一个动画有异曲同工之妙! ###案例:二只老虎
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)
而且神奇的 MicroPython 并不只会这样哦,它会进一步简化作曲过程,比如如果你下一次修改这些node,它会记注上一次音符以及持续时间。 所以你可以这样写:
import music
tune = ["C4:4", "D", "E", "C", "C", "D", "E", "C", "E", "F", "G:8",
"E:4", "F", "G:8"]
music.play(tune)
#声音效果 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)
注意了,music.pitch方法是使用它的实例,它需要一个频率,440的频率相当于一场用来调音的音乐会a的频率。
另外,在这个案例中,range 函数是被用作生成一个数字的值,这些数字定义了音调的音高,这三个参数分别分开始值,结束值,以及梯度值。因此,这里第一个 range 的意思是。创造一个介于880开始,以16递增到1760 ,至于第二个 range 是说创造一个1760 以16递减到880。这就是我们如何获取到频率一上一下像警笛一样的声音。 最后我们使用了while Ture: 它会让这个警笛声一直持续下去的。 好的,讲到这里,这一章也就结束了,希望你能够学有所成!!!