rzyzzxw 发表于 2018-11-20 11:09:35

【掌控】【BXY】micropython music音乐库及相关资源探索(1)

掌控的固件升级后完全兼容了micro:bit的音乐库,而如何把一曲简谱转化成音乐库代码,以前在用BXY时没搞清楚,现在做掌控音乐时也不明白。
论坛中相关帖子:1.有了新固件,我的掌控会“唱歌”
https://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=272106
2.玩转micro:bit-用BXY玩警笛声
https://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=37178
3.还有一个来自micropython中文论坛邵老师的消息音乐了。
http://www.micropython.org.cn/bbs/forum.php?mod=viewthread&tid=2005

http://www.micropython.org.cn/bbs/data/attachment/forum/201811/05/224701bqzoy1kacowyboqa.jpg
有了micro:bit和掌控板对自定义音乐的需求,不如今天好好探索一下。


先来一首曲子:(这个代码以掌控为例,如果用于micro:bit,只需去掉第一行代码,或者将mpython库改写成microbit)
from mpython import *
import music

# Whilst
music.set_tempo(ticks=16, bpm=160)# bpm 每分钟节拍数
tune = ['F5:16', 'A', 'R:8', 'A', 'G:16', 'F', 'A#', 'A#', 'A', 'G', 'A', 'C6',
'C', 'B5', 'C6:48', 'A5:16', 'D6:24', 'C:8', 'A#5:16', 'A', 'G', 'F',
'E', 'A', 'G', 'F', 'F', 'E', 'F:48']
music.play(tune)

1.播放音乐:import music
music.play(music.NYAN)注意:导入music模块;它包含生成和控制声音的方法。
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---表示失去成就的悲伤狂欢

2.创建自己的曲调很容易!每个音符表示为一串字符是这样的:NOTE[:duration]每一个音符都有一个名称(比如C调或F调),音阶(向Micropython传递音符音调高低)和周期(音调的持续时间)。音阶由数字表示。0是最低阶,4代表中音C调,8是最高音阶。你应该不会用到8,除非你想魔音穿耳。周期也是由数字表示,数字越大持续时间越长。不同周期值之间互有联系,比如说周期4的持续时间是周期2的两倍等等。如果你调用周期R,Micropython会在指定周期内不发声。其实最难懂的就是上面这一段,表示音乐0基础的我根本还是不明白啊。这完全就是音乐老师的世界啊。{:5_140:}例如,“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)3.函数music.set_tempo(ticks=16, bpm=160)设置播放的速度,一个音节(表示为整数)构成一个节拍。每个节拍将以每分钟的特定频率播放。建议的默认值允许以下有用的行为:
[*]music.set_tempo() 将速度设为默认值:ticks = 4,bpm = 120。
[*]music.set_tempo(ticks=8) 改变一个节拍的“定义”。
[*]music.set_tempo(bpm=180) 只改变速度。
4.再来两首

#命运交响曲
B5=['4:2', 'g', 'g', 'g', 'eb:8', 'r:2', 'f', 'f', 'f', 'd:8']
music.play(B5)

#两只老虎
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)
本教程学习资源来自:

http://docs.dfrobot.com.cn/bxy/music.html
BXY帮助文档
http://www.micropython.org.cn/bbs/
邵子扬老师:精心打造的micropython中文论坛
页: [1]
查看完整版本: 【掌控】【BXY】micropython music音乐库及相关资源探索(1)