查看: 968|回复: 0

[入门教程] 【掌控】【BXY】micropython music音乐库及相关资源探索(1)

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


有了micro:bit和掌控板对自定义音乐的需求,不如今天好好探索一下。
截图201811201002313653.png

先来一首曲子:(这个代码以掌控为例,如果用于micro:bit,只需去掉第一行代码,或者将mpython库改写成microbit)
[Python] 纯文本查看 复制代码
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.播放音乐:
[Python] 纯文本查看 复制代码
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[octave][:duration]
每一个音符都有一个名称(比如C调或F调),音阶(向Micropython传递音符音调高低)和周期(音调的持续时间)。
音阶由数字表示。0是最低阶,4代表中音C调,8是最高音阶。你应该不会用到8,除非你想魔音穿耳。
周期也是由数字表示,数字越大持续时间越长。不同周期值之间互有联系,比如说周期4的持续时间是周期2的两倍等等。
如果你调用周期R,Micropython会在指定周期内不发声。
其实最难懂的就是上面这一段,表示音乐0基础的我根本还是不明白啊。这完全就是音乐老师的世界啊。
例如,“A1:4”表示1个为A的音符在八度音阶持续播放“4”周期。
列出的基调来创建一个旋律。
例如,下面是如何使MicroPython播放“Frere Jaques”:
[Python] 纯文本查看 复制代码
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.再来两首

[Python] 纯文本查看 复制代码
#命运交响曲
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中文论坛
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail