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=125milliseconds1beat=500milliseconds

music.get_tempo()

获取当前节奏作为整数元组:(ticks,bpm)

music.play(music,pin=microbit.pin0,wait=True,loop=False)

music包含上面定义的音乐DSL的播放。

如果music是一个字符串,它将被预期为单个注释,例如'c1:4'

如果music被指定为音符列表(如上面音乐DSL中的部分所定义的),则将它们连续地播放出来。

在这两种情况下,在播放音乐之前,将durationoctave重置为默认值。

指定输出引脚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)