马上就六一了,虽然不愿意承认,但是老夫好像已经没有资格再蹭这个节日了,真心“栓Q”岁月给我带来的摧残,真的是老了才理解了SHE的那首歌:

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(1)

不想长大

有没有跟着一起哼出来?

也不知道是不是疫情的原因,总是感觉今年的六一格外的隆重,可能压抑很久的人们更希望看到孩子们的笑脸吧!

于是我也“ 心bèi ”“ 血bī ” “ 来wú ” “ 潮nài ”帮孩子们准备点节目。

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(2)


好了,废话有点多,认真看完这篇教程,不管会不会乐器懂不懂乐理的娃儿,都能演奏出动听的歌曲,甚至可以让全班的娃儿们通过不同的乐器分工来合奏,演出一场别开生面的音乐会。

听起来是不是很“niubility”,那接下来咱们就正式进入实战环节。我们以《种太阳》为例如下:

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(3)

我们先找到一份简谱,当然你也可以找五线谱(只要你认识就行,反正我不懂~~傲娇),有了谱子之后我们要做一件最基本的事情就是确认谱子是几几拍,至于什么升降调,我不管,你行你来。具体的拍数我就不做过多的赘述了,相信上过音乐课的同学应该都懂。接下来咱们就开始进入编程阶段。

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(4)

正常来讲我们利用这种最简单的演奏音符模块一个一个去拼接,也可以完成演奏,但是很明显工作量非常的庞大,程序很长,非常难于检查。那么我们今天就利用SCRATCH里面的列表来实现乐曲的演奏。

首先,我们需要制作相应的列表内容,我们在电脑上新建3个TXT文件,分别命名"主旋律""MIDI音符""MIDI按键",这三个文本主要方便我们导入列表使用,并且可以一劳永逸,也可以用于别的乐曲的编写,具体写法如下:

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(5)

我们用"6"" ""空格"三个单位来表示乐谱中的6,利用".""1""空格"三个单位来表示高音1,用"7"".""空格"表示低音7,以此类推,将每个音符需要演奏的节拍写在后面(记得全谱抄写),这样我们的主旋律就完成了。

接下来就是完成我们的MIDI音符:

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(6)

好!到这里我们的工作就已经完成一半了,继续努力,接下来我们完成每个音符的对应按键的文档。在scratch中每个音符都有对应的按键,比如下图,1(Do)对应的就是60号的按键,升1对应的就是61号按键:

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(7)

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(8)

按照这样的规律,我们将从低音到高音所有音符的按键编写出来,如下图

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(9)

至此,所有准备工作我们都已经完成了,接下来我们回到SCRATCH里面来新建3个列表用于导入我们上面所编写的信息。

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(10)

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(11)

右键单击列表进行导入,将我们所有的内容分别导入到3个列表内,以作备用。

接下来就是如何利用列表,将我们的音符和MIDI按键进行一一对应了。其实这个操作类似代码编程里面的文本操作,涉及文本查找和取出等功能,这么说比较晦涩,我们用模块来进行实际演示。

首先我们需要提取主旋律的前3个字符用来对应按键:

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(12)

举例,对照种太阳的主旋律,我们取出来的是".3 ",注意3后面有空格。

那么取出来以后我们要怎么使用呢?别急,取出来以后,我们需要取对应MIDI音符中的项目数,如图:

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(13)

由于MIDI音符和MIDI按键都是一一对应的,我们只要取到了MIDI的项目数,也就相当于取得了MIDI按键的项目数,进而可以取得MIDI按键的内容,如下:

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(14)

至此我们就完成了按键的取出,我们就可以把这一坨放进演奏里面进行演奏了,当然我们的音阶取出也是同样的道理,如下:

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(15)

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(16)

至此,我们就可以完成第一个音符的演奏了,那么接下来就变得非常简单,我们只需要建立一个变量,让我们的音符按照顺序演奏下去即可,如图:

用scratch编写一款简单游戏 scratch编程-钢琴版种太阳(17)

到此,我们就完成了一首乐曲的演奏,这里面还有很多细节,比如空拍,升降,和旋等等的处理,特别是和旋,一定要和主旋律的节拍对应,不拍就成了乱弹琴。希望大家可以自己去摸索,因为毕竟抄来的东西没有营养,当然,我的办法可能不是最好的,因为每个人的想法都不一样,我只是给大家提供一个思路,方便学习。


最后的最后,祝不管是不是小朋友的朋友节日快乐!就算六一不快乐,那端午也要快乐!顺便求一波点赞,关注,在下不胜感激!

,