Skip to content
wzp edited this page Nov 2, 2018 · 8 revisions

Document

logo

音乐

MicroPython 在 micro:bit 中有着非常强劲的音乐和声音的模块,它是非常方便的从你外接或自带的喇叭上生成bleep和bloop声。使用鳄鱼夹外界pin 0和 GND 到喇叭的正极和负极,它们与扬声器的连接方式无关。 message ##注意不要装压电式蜂鸣器,它只能播放单个声调。

咳咳,废话不多说,来点音乐

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: 它会让这个警笛声一直持续下去的。 好的,讲到这里,这一章也就结束了,希望你能够学有所成!!!

Clone this wiki locally