5028浏览
查看: 5028|回复: 5

[入门教程] Microbit演奏音乐《心愿》

[复制链接]
这个作品是刚开始学习 micro:bit 的时候创作的,由四个女生演唱的歌曲《心愿》。


材料清单

1x
Mico:bit 链接
1x
Micro:bit 掌控I/O扩展板 链接
1x
3节7号AAA电池盒 链接


步骤1学习乐曲编程


首先要会看简谱。简谱音符上面有个点代表高音,下面有个点代表低音,没有点就是中音。其次要会看节拍。简谱音符没有下划线为一拍,一根下划线为二分之一拍,两根下划线为四分之一拍。减号是休止符,代表一拍。下面以诺基亚经典铃声为例,介绍乐曲编程的过程。

Microbit演奏音乐《心愿》图1

首先设置乐曲的基本速度。这个可以以后调整,暂定为 100,也就是每分钟 100 个节拍。
然后开始对照简谱一一设置每个音符的参数:具体是哪个音符,是高音、低音还是中音(没有点),到底是几拍的。这里我们假设没有下划线的为一拍。编写好的代码如下,就是比较费时间。

Microbit演奏音乐《心愿》图2
步骤2编写代码


搜索《心愿》的简谱。

Microbit演奏音乐《心愿》图3
对照简谱完成代码编写。其中重复的部分用到了循环结构,以减少重复操作。当然复制也可以,但是代码就更长了~~~~~


最后就是那么长!!!
代码



[mw_shl_code=c,true]#include <Microbit_Sound.h>

void setup() {
        MSound.setSpeed(100);
}

void loop() {
        for (int count = 0; count < 2; count++) {
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 330, BEAT_1);
                MSound.playTone(0, 330, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1);
                MSound.playTone(0, 294, BEAT_1_4);
                MSound.playTone(0, 330, BEAT_2);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 220, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1);
                MSound.playTone(0, 262, BEAT_1);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 220, BEAT_2);
                MSound.playTone(0, 220, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 247, BEAT_1);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 220, BEAT_1_2);
                MSound.playTone(0, 196, BEAT_1);
                MSound.playTone(0, 196, BEAT_1_4);
                MSound.playTone(0, 247, BEAT_2);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 196, BEAT_1_2);
                MSound.playTone(0, 220, BEAT_1);
                MSound.playTone(0, 220, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 220, BEAT_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 330, BEAT_1);
                MSound.playTone(0, 330, BEAT_1_2);
                MSound.playTone(0, 392, BEAT_1_2);
                MSound.playTone(0, 392, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 330, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_1);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_1);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 330, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 220, BEAT_1);
                MSound.playTone(0, 220, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 247, BEAT_1);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 220, BEAT_1_2);
                MSound.playTone(0, 196, BEAT_1);
                MSound.playTone(0, 196, BEAT_1_4);
                MSound.playTone(0, 247, BEAT_2);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 196, BEAT_1_2);
                MSound.playTone(0, 220, BEAT_1);
                MSound.playTone(0, 220, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 220, BEAT_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 330, BEAT_2);
                MSound.playTone(0, 349, BEAT_1_2);
                MSound.playTone(0, 330, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_2);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_2);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 330, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_2);
                MSound.playTone(0, 220, BEAT_1_2);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 220, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 247, BEAT_1);
                MSound.playTone(0, 247, BEAT_1);
                MSound.playTone(0, 196, BEAT_1);
                MSound.playTone(0, 330, BEAT_4);
                MSound.playTone(0, 330, BEAT_1);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 330, BEAT_2);
                MSound.playTone(0, 330, BEAT_1_2);
                MSound.playTone(0, 392, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_2);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 294, BEAT_2);
                MSound.playTone(0, 294, BEAT_1_2);
                MSound.playTone(0, 330, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_2);
                MSound.playTone(0, 220, BEAT_1_2);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 247, BEAT_1_2);
                MSound.playTone(0, 220, BEAT_1_2);
                MSound.playTone(0, 262, BEAT_1_2);
                MSound.playTone(0, 247, BEAT_1);
                MSound.playTone(0, 247, BEAT_1);
                MSound.playTone(0, 196, BEAT_1);
                MSound.playTone(0, 220, BEAT_4);
                MSound.playTone(0, 220, BEAT_1);
        }
        MSound.playTone(0, 220, BEAT_1_2);
        MSound.playTone(0, 247, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 330, BEAT_1);
        MSound.playTone(0, 330, BEAT_2);
        MSound.playTone(0, 294, BEAT_1);
        MSound.playTone(0, 294, BEAT_1);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 330, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 247, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_1);
        MSound.playTone(0, 220, BEAT_1_2);
        MSound.playTone(0, 247, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_1);
        MSound.playTone(0, 330, BEAT_1_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 294, BEAT_1);
        MSound.playTone(0, 330, BEAT_4);
        MSound.playTone(0, 330, BEAT_1);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 330, BEAT_2);
        MSound.playTone(0, 330, BEAT_1);
        MSound.playTone(0, 349, BEAT_1);
        MSound.playTone(0, 294, BEAT_1);
        MSound.playTone(0, 220, BEAT_1);
        MSound.playTone(0, 294, BEAT_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_1);
        MSound.playTone(0, 262, BEAT_1);
        MSound.playTone(0, 220, BEAT_1_2);
        MSound.playTone(0, 247, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 247, BEAT_1);
        MSound.playTone(0, 247, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 196, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 330, BEAT_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 330, BEAT_2);
        MSound.playTone(0, 330, BEAT_1);
        MSound.playTone(0, 349, BEAT_1);
        MSound.playTone(0, 294, BEAT_1);
        MSound.playTone(0, 220, BEAT_1);
        MSound.playTone(0, 294, BEAT_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_1);
        MSound.playTone(0, 262, BEAT_1);
        MSound.playTone(0, 220, BEAT_1_2);
        MSound.playTone(0, 247, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 247, BEAT_1);
        MSound.playTone(0, 247, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 196, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_2);
        MSound.playTone(0, 247, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_2);
        MSound.playTone(0, 220, BEAT_1_2);
        MSound.playTone(0, 247, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 247, BEAT_1);
        MSound.playTone(0, 247, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 294, BEAT_1_2);
        MSound.playTone(0, 196, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_4);
        MSound.playTone(0, 262, BEAT_1);
        MSound.playTone(0, 247, BEAT_1_2);
        MSound.playTone(0, 262, BEAT_1_2);
        MSound.playTone(0, 220, BEAT_4);
        MSound.playTone(0, 220, BEAT_1);
}[/mw_shl_code]
附件




原帖发布于:https://makelog.dfrobot.com.cn/article-1668.html

ASH腻  管理员

发表于 2019-7-8 14:40:24

哈哈哈哈用microbit演奏的大师作品很多耶  这么长是怎么写下来了
回复

使用道具 举报

汤果  初级技神
 楼主|

发表于 2019-7-12 19:11:21

ASH腻 发表于 2019-7-8 14:40
哈哈哈哈用microbit演奏的大师作品很多耶  这么长是怎么写下来了

我就是喜欢听这首歌。虽然中间想要放弃。不过好在最后还是坚持下来了~~~
回复

使用道具 举报

gada888  版主

发表于 2019-7-13 14:42:59

好长的歌,能坚持就能成功
回复

使用道具 举报

pATAq  版主

发表于 2019-7-17 22:39:07

我也有过这种想法,很好玩。想知道楼主是手动输入的乐谱还是?我的想法是使用通用的乐谱文件(简谱?),自动生成代码
回复

使用道具 举报

汤果  初级技神
 楼主|

发表于 2019-7-18 06:40:44

pATAq 发表于 2019-7-17 22:39
我也有过这种想法,很好玩。想知道楼主是手动输入的乐谱还是?我的想法是使用通用的乐谱文件(简谱?),自 ...

我用的是比较笨的方法,一个个手动输入的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

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

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

mail