Scratch进阶——玩转音乐

网友投稿 2018-04-15 16:48

如果你关注了我的公众号(请点击顶上蓝色文字链接),就会注意到前一篇文章提及了Scratch这门有趣的编程语言(麻省理工出品,值得信赖https://cdn.china-scratch.com/Public/Home/images/grey.gif)。不过那篇的介绍蜻蜓点水一般,这一篇呢,我将借助一个具体的案例,一步步演示怎么玩转Scratch(为了好懂,原谅我把大家想象成小孩子,所有行文全用大白话)。

Music,Please!

https://cdn.china-scratch.com/timg/180417/164U14530-1.jpg

附带一点点乐理知识:

https://cdn.china-scratch.com/timg/180417/164U23338-2.jpg

有了前面的准备,现在可以打开Scratch编辑器(程序下载安装的办法见前文),一步步实现文章题目中的愿景了。

首先,我们点击scratch左下角背景编辑区从背景库中选择一副中意的背景图:

https://cdn.china-scratch.com/timg/180417/164U2A64-3.jpg

接着,我们进入scratch左下角角色编辑区把捣蛋的小猫赶走https://cdn.china-scratch.com/Public/Home/images/grey.gif,选择与主旨相符的题材:

https://cdn.china-scratch.com/timg/180417/164U363N-5.jpg

然后呢?我们想让前面选中的题材随着音乐律动,所以需要在脚本里加入动作控制(左边的球顺时针旋转即scratch中的右转,右边的球逆时针旋转即scratch中的左转):

https://cdn.china-scratch.com/timg/180417/164U41109-6.jpg

铺垫了这么多,该最后一步了,设法让音乐响起来https://cdn.china-scratch.com/Public/Home/images/grey.gif

先根据最前面的乐谱,整理好对应的scratch音符:

https://cdn.china-scratch.com/timg/180417/164U43C2-8.jpg

等不及了,我们简单粗暴就上:

https://cdn.china-scratch.com/timg/180417/164U5H00-9.jpg

但是,太粗鄙了。这首曲子还不长,拖几下积木就OK了。如果换一首长点的曲子,那不累死人啦。所以,我们的程序应该换用精致一点的做法。

考虑引入两个scratch列表。一个用来存储音符(见下面中的“音符列表”),一个用来存储对应的节拍(见下图中的“节拍列表”)。休止符呢,就用0表示。接下来我们选择使用一个重复积木,音符列表的项目数就是重复的次数。第一次读取音符列表的第一项,如果该项为0,就使用休止符积木,否则就使用弹奏积木,然后再读取下一项,如此反复,直到处理完整个音符列表。要实现这个效果,我们还得引入一个变量控制读取的位置(见下图中的变量“i”)。进入重复积木前把该变量设定为1,每执行一次重复积木内所有积木的处理,该变量增加1。好啦,附上程序代码图:

https://cdn.china-scratch.com/timg/180417/164U61X6-10.jpg

点击音乐播放积木组合,试听一下效果,还不错。

最后我们让程序更酷一点,依次用scratch中的21种乐器弹奏乐曲。为了达到这个效果,得引入了另一个重复积木和变量(作用是控制每次播放音乐说使用的乐器,见下图中的变量“n”)。再在开头引入启动积木,结尾引入停止全部积木,附上最终版程序图:

https://cdn.china-scratch.com/timg/180417/164U62292-11.jpg

到此为止,一个相对比较让人满意的音乐播放程序就大功告成了。

可以说,经此一役,我们基本熟悉了scratch的操作。那么,赶紧打开电脑,启动scratch,把我讲的从头至尾学着操作一番吧!https://cdn.china-scratch.com/Public/Home/images/grey.gif

当然,还有一些更高级的玩法。待我下次讲解。


附注:

1)scratch里的列表是可以导入外部数据的。导入之前只需把数据项整理到一个文本文件里,以行做分隔,每行表示一个数据项,保存备用。

https://cdn.china-scratch.com/timg/180417/164UG245-13.jpg

2)整理音符的时候,可以在excel里方便的处理。细节见下图:

https://cdn.china-scratch.com/timg/180417/164UV194-14.jpg

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com