音乐¶
这是music
模块,您可以使用它来创建和播放旋律。默认情况下,声音输出将通过引脚 0 上的边缘连接器和
内置扬声器 V2。您可以将有线耳机或扬声器连接到边缘连接器上的引脚 0 和 GND 以听到声音:
您还可以禁用/启用内置扬声器或在另一个引脚上输出声音。
要访问此模块,您需要:
import music
我们假设您已经为以下示例完成了此操作。
乐谱¶
一个单独的音符是这样指定的:
NOTE[octave][:duration]
例如,A1:4
指的是八度音程 1 中的音符“A”,它持续四个节拍(节拍是由速度设置功能定义的任意时间长度 - 见下文)。如果使用音符名称R
,则将其视为休止符(静音)。
意外(平坦和锐利)由b
(平坦 - 小写 b)和#
(锐利 - 哈希符号)表示。例如,Ab
是 A-flat 和C#
is
C-sharp。
注释名称不区分大小写。
该 octave
和 duration
参数是结转到以后的笔记,直到重新指定的状态。默认状态是 (包含中间 C)和(一个四分音符,给定默认速度设置 - 见下文)。octave = 4
(containing middle C) duration = 4
例如,如果 4 个刻度是 crotchet,则以下列表是基于 crotchet、quaver、quaver、crotchet 的琶音:
['c1:4', 'e:2', 'g', 'c2:4']
贝多芬第五交响曲的开场将被编码为:
['r4:2', 'g', 'g', 'g', 'eb:8', 'r:2', 'f', 'f', 'f', 'd:8']
八度的定义和范围符合本页列出的关于科学音高符号的表格。例如,中间“C”是'c4'
,音乐会“A”(440)是 'a4'
。八度从音符“C”开始。
职能¶
-
music.
set_tempo
(ticks=4, bpm=120)¶ 设置播放的大致速度。
多个滴答声(表示为整数)构成一个节拍。每个节拍以每分钟一定的频率播放(表示为更熟悉的 BPM - 每分钟节拍 - 也为整数)。
建议的默认值允许以下有用的行为:
music.set_tempo()
- 将速度重置为默认的滴答声 = 4, bpm = 120music.set_tempo(ticks=8)
- 改变节拍的“定义”music.set_tempo(bpm=180)
-只需改变节奏
计算以毫秒为单位的刻度长度是非常简单的算术:
60000/bpm/ticks_per_beat
. 对于默认值为或。60000/120/4 = 125 milliseconds
1 beat = 500 milliseconds
.
-
music.
get_tempo
()¶ 获取当前速度为整数的元组:
(ticks, bpm)
.
-
music.
play
(music, pin=pin0, wait=True, loop=False)¶ music
包含上面定义的音乐 DSL 的播放。如果
music
是一个字符串,它应该是一个单一的音符,例如,'c1:4'
.如果
music
指定为音符列表(如上面音乐 DSL 部分中所定义),则它们会一个接一个地播放以演奏旋律。在这两种情况下,
duration
和octave
值都会在播放音乐(无论它是什么)之前重置为其默认值。指定输出引脚的可选参数可用于覆盖 的默认值
microbit.pin0
。如果我们不想播放任何声音,我们可以使用pin=None
.如果
wait
设置为True
, 则此功能是阻塞的。如果
loop
设置为True
,则曲调重复直到stop
被调用(见下文)或阻塞调用被中断。
-
music.
pitch
(frequency, duration=-1, pin=pin0, wait=True)¶ 在指定的毫秒数内以给定的整数频率播放音高。例如,如果频率设置为 440,长度设置为 1000,那么我们会听到标准音乐会 A 一秒钟。
请注意,您一次只能在一个针脚上演奏一个音高。
指定输出引脚的可选参数可用于覆盖 的默认值
microbit.pin0
。如果我们不想从引脚播放任何声音,我们可以使用pin=None
.如果
wait
设置为True
,则此功能是阻塞的。如果
duration
是负数,则音调将连续播放,直到阻塞呼叫被中断,或者在后台呼叫的情况下,设置或调用新频率stop
(见下文)。
-
music.
stop
(pin=pin0)¶ 停止内置扬声器上的所有音乐播放和任何输出声音的引脚。可以提供可选参数来指定引脚,例如。
music.stop(pin1)
.
-
music.
reset
()¶ 按以下方式重置以下属性的状态:
ticks = 4
bpm = 120
duration = 4
octave = 4
内置旋律¶
出于教育和娱乐的目的,该模块包含几个以 Python 列表表示的示例曲调。它们可以这样使用:
>>> import music
>>> music.play(music.NYAN)
所有曲调要么不受版权保护,由 Nicholas H.Tollervey 创作并发布到公共领域,要么有未知作曲家,并受公平(教育)使用条款的保护。
他们是:
DADADADUM
- 贝多芬 C 小调第五交响曲的开场。ENTERTAINER
-斯科特乔普林的拉格泰姆经典“艺人”的开场片段。PRELUDE
- JSBach 的 48 首前奏曲和赋格曲 C 大调第一首前奏曲的开场。ODE
-贝多芬 D 小调第九交响曲的“欢乐颂”主题曲。NYAN
- Nyan Cat 主题 (http://www.nyan.cat/)。作曲家不详。这是教育鼠海豚的合理使用(正如他们在纽约所说)。RINGTONE
- 听起来像手机铃声的东西。用于指示传入消息。FUNK
-为秘密特工和犯罪策划者准备的时髦低音线。BLUES
- 一个布吉伍吉 12 小节布鲁斯步行低音。BIRTHDAY
- “祝你生日快乐……”版权状态见:http://www.bbc.co.uk/news/world-us-canada-34332853WEDDING
- 来自瓦格纳歌剧“罗恩格林”的新娘合唱团。FUNERAL
-“葬礼进行曲”也被称为弗雷德里克·肖邦的 B♭ 小调第二钢琴奏鸣曲,作品。35.PUNCHLINE
-制作了一个有趣的片段,表示一个笑话。PYTHON
- John Philip Sousa 的进行曲“Liberty Bell”又名,“Monty Python's Flying Circus”的主题(Python 编程语言由此命名)。BADDY
- 一个坏蛋的无声电影时代的入口。CHASE
- 无声电影时代的追逐场景。BA_DING
- 表示某事发生的简短信号。WAWAWAWAA
- 一个非常悲伤的长号。JUMP_UP
- 用于游戏,表示向上运动。JUMP_DOWN
-用于游戏,表示向下移动。POWER_UP
- 大张旗鼓表明成就已解锁。POWER_DOWN
-悲伤的大张旗鼓表示失去的成就。
例子¶
"""
music.py
~~~~~~~~
Plays a simple tune using the Micropython music module.
This example requires a speaker/buzzer/headphones connected to P0 and GND,
or the latest micro:bit device with built-in speaker.
"""
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', 'a', 'd5', 'f5', 'a4', 'd5', 'f5', 'c4', 'd', 'a', 'd5', 'f5', 'a4', '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',
'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)