2018-12-1 11:19:58 [显示全部楼层]
5084浏览
查看: 5084|回复: 2

[入门教程] 【掌控】mpython_掌控是个音乐家(new)

[复制链接]
【学习目标】
1、学习音乐函数的使用
2、播放内置音乐
3、制作自定义乐曲
4、练习列表的使用

【music】
先看下键盘图,方便后面编程时使用:


下面这个图片也能帮助我们。
【掌控】mpython_掌控是个音乐家(new)图1

【演奏内置音乐】
掌控移植了micro:bit的音乐库,拥有众多内置乐曲。

[mw_shl_code=python,true]from mpython import *
import music  

music.play(music.PYTHON)[/mw_shl_code]

运行一下听听。

上面代码再加上一行。
music.set_tempo(ticks=16, bpm=160)  

[mw_shl_code=python,true]from mpython import *
import music  

music.set_tempo(ticks=4, bpm=120)  
music.play(music.PYTHON)[/mw_shl_code]

修改音乐播放速度—--bpm节拍数为80 or 100 or 160,下载到掌控,节拍数和播放速度的关系是________________________.

函数
music.set_tempo(ticks=4, bpm=120)  
设置播放的速度,一个音节(表示为整数)构成一个节拍。每个节拍将以每分钟的特定频率播放。
建议的默认值允许以下有用的行为:
  • music.set_tempo() 将速度设为默认值:ticks = 4,bpm = 120。
  • music.set_tempo(ticks=8) 改变一个节拍的“定义”。
  • music.set_tempo(bpm=180) 只改变速度。



【bpm】
BPM是Beat Per Minute的简称,中文名为拍子数,释义为每分钟节拍数的单位。最浅显的概念就是在一分钟的时间段落之间,所发出的声音节拍的数量,这个数量的单位便是BPM。
BPM为每分钟节拍数,是全曲速度标记,为独立在曲谱外的速度标准,一般以一个四分音符为一拍,60BPM为一分钟演奏均匀60个四分音符(或等效的音符组合)。一般记一个四分音符为一拍,一拍即为在当前BPM下的一个四分音符。60BPM对应的曲目速度为一分钟均匀演奏60个四分音符(或等效音符组合),即一个四分音符(或等效音符组合)的时值应为1秒,而对应提供演奏者现实的演奏速度。

练琴时的节拍器。



【自定义乐曲1】
先用一种简单的方法,用下的代码。

music.play(['C4:4'])

[mw_shl_code=python,true]from mpython import *
import music  

music.set_tempo(ticks=4, bpm=120)  
music.play(['C4:4'])[/mw_shl_code]

运行一下,听出来了吧,是中音do.

【乐理知识小仓库】

每个音符表示为一串字符是这样的:
NOTE[octave][:duration]

每一个音符都有一个名称NOTE(比如C或F),音阶(向Micropython传递音符音调高低)和周期(音调的持续时间)。

音阶[octave]由数字表示。0是最低阶,3代表低音阶,4代表中音阶,5代表高音阶,8是最高音阶。你应该不会用到8,除非你想魔音穿耳。

周期[:duration]也是由数字表示,数字越大持续时间越长。不同周期值之间互有联系,比如说周期4(1拍)的持续时间是周期2(1/2拍)的两倍。
如果你调用周期R,Micropython会在指定周期内不发声。

A#表示的是A右边的黑键。

如果一个音符和前面的音符音阶、周期(节拍)一样,只用一个字母表示。

在上面分析基础上,我们可以用列表来写音乐了。

【小练习】
用列表,演奏 1 2 3 4 5 6 7 和高音1,均为1拍。
请在英文输入状态下输入,‘   ’内为一个音符,不同音符用,隔开。
【掌控】mpython_掌控是个音乐家(new)图2
运行一下程序,很赞哦。

【编程练习:小星星】


小星星,C调。
再看下图片:


[mw_shl_code=python,true]from mpython import *
import music  

music.set_tempo(ticks=4, bpm=120)  
music.play(['c4:4','c','g','g','a','a','g4:8','f4:4','f','e','e','d','d','c4:8',
    'g4:4','g','f','f','e','e','d4:8','g4:4','g','f','f','e','e','d4:8',
    'c4:4','c','g','g','a','a','g4:8','f4:4','f','e','e','d','d','c4:8'])[/mw_shl_code]

试听一下,可以吧。

但是我们通常不这样写,而是定义一个列表。

[mw_shl_code=python,true]from mpython import *
import music  

notes = ['c4:4','c','g','g','a','a','g4:8','f4:4','f','e','e','d','d','c4:8',
    'g4:4','g','f','f','e','e','d4:8','g4:4','g','f','f','e','e','d4:8',
    'c4:4','c','g','g','a','a','g4:8','f4:4','f','e','e','d','d','c4:8']
   
music.set_tempo(ticks=4, bpm=120)  
music.play(notes)[/mw_shl_code]

【编程练习:两只老虎】

这个是E调,就是中音E相当于1,你可以试试写代码哈。

我们找一个C调的吧。

运行,试听一下,如果有错的地方,再改到正确为止。

自定义音乐,是不是非常简单啊。

【拓展练习】
找一首自己喜欢的曲子,写成代码吧。

更多乐曲库及转化请阅读另一个教程,https://mc.dfrobot.com.cn/thread-272339-1-1.html

rzegkly  版主

发表于 2018-12-1 16:03:17

掌控板图形和代码结合,赞:))
回复

使用道具 举报

rzyzzxw  版主
 楼主|

发表于 2018-12-1 18:47:49

rzegkly 发表于 2018-12-1 16:03
掌控板图形和代码结合,赞

有了这一段时间的理解,重新再走一遍,让课程更充实。
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail