scratch是一个非常小巧的青少年编程工具,自带程序编写语句,积木式语句非常直观、易用,可创作数学、科学、音乐、绘画等方面作品。本文用scratch“演奏”一首大家非常熟悉的《天空之城》,并向大家介绍一些基本乐理知识,以及scratch中消息、链表的使用。
目录
我们一起来“搭”一个音乐演奏程序:
scratch:《天空之城》
1、音乐基础
我们知道,音乐有四个基本构成要素:音的高低、音的长短、音的力度(强度)和音质(音色)。因此,将一首乐曲用程序“唱出来”,得从这四个方面分析。就教学目标而言,我们将重点分析音的高低和音的长短。
1.1 认识音符
1.1.1音符
“音”是音乐的“原子”,体现为“音符”。音符是表达高低音的一种符号,目前普遍用到的音符一共有七个,(音名)分别为C、D、E、F、G、A、B,简谱中与之对应的是1、2、3、4、5、6、7,读作“do、ruai、mi、fa、sou、la、xi(斗、瑞、咪、发、搜、拉、西)”。
1.1.2 音区
如图,在钢琴琴键上,“音”从左至右依次增高。
在上图中可以看到,一个音符会多次出现,我们把相邻的同名音符之间的间距称为一个8度。例如“1”和“1(·)”相差一个8度,即“1(·)”比“1”高8度。一个8度内的音符构成一个音组,音组与音组可以形成音区。我们把1、2、3、4、5、6、7所在音组称为中央音区,中央音区左边(下边有点)为低音区,右边(上边带点)为高音区。所有音区一起形成一个音域。
下面这个程序演示相邻的低、中、高音区。
音乐基础知识:音符简介
注意,为使演示效果最佳,程序已将三音区的同名音符作叠加处理,请仔细辨听声音高低。
1.1.3 音变
在钢琴琴键图中,一个音区既有白键也有黑键。那么相邻的白键或相邻的白、黑键是什么关系呢?
半音或全音关系。
以中音区为例,在“1”和“2”之间有一个黑键,键名为“#1 b2”,表示该音比“1”高半音,比“2”低半音。
一个白键和一个相邻的黑键之间相差“一个半音”(反之亦然),一个白键和另一个(看起来相邻的)白键相差“一个全音”。
还是以中音区为例,只有“3”“4”之间是半音,其他两两音符间都是全音。实际上还有一个特殊的跨音区半音:“7”和高一个8度的“1”。
在原音的基础上,我们可以变音,将标准音升高或降低。
1.1.4 scratch音符编码
在scratch眼中,音符如下面蓝色数字所示:
例如,对于简谱
可编码为:0 0 0 69 71 72 71 72 76 71 64 69 67 69 72 67 64
简谱中的“0”是休止符,表示“静默(不发音)”,一般表示占位,在scratch中同样用0表示。
那么如何处理变音?
仔细观察音符对应图,我们发现具有全音关系的两个音符(如“2”和“3”)对应的scratch音符值(62和64)相差2,而具有半音关系的两个音符(如“3”和“4”)对应的scratch音符值(64和65)相差1,而一个全音相当于两个半音,由此可知,半音对应1,升或降多少个半音,就加或减多少个1。
简谱:
编码:71 66 66 71 71 69 71。
1.2 认识节拍
演绎一首音乐时,需要表现的要素有很多。表达一个音符时,除了要表现音的高低之外,还要表现音的长短,这个时候就关系到一个重要概念,节拍。
1.2.1 音符时值与节拍
音符和该音符在演奏时呈现的时长结合在一起产生出不同时值类型音符,包括全音符、二分音符、四分音符、八分音符、十六分音符、三十二分音符等。如有下表:
“表示”下的音符“1”可为任意音符“x”,当“x”为“0”时得到各类音符对应的休止符。
音符时值指演绎一首乐曲时当前音符持续的时间。全音符定义音符时值的“基本单位”,其他音符时值在全音符基础上依次除以2得到,例如,一个全音符在时值上相当于二个二分音符时值。这样,不同时值类型音符间的关系就确定了。
在音符时值基础上形成节拍时值。一个节拍的时值是多少首先看拍号。上表拍号为4/4,表示以四分音符为一拍,一小节四拍。我们还可能遇到2/4、3/4、6/8这样的拍号,分别表示以四分音符为一拍,一小节2拍;以四分音符为一拍,一小节3拍;以八分音符为一拍,一小节六拍。总之,在拍号中,分母决定以哪个音符为一拍,分子决定一小节有多少拍。
一拍的时值是相对的,与节奏有关。当节奏为每分钟60拍时,一拍为一秒;当节奏为每分钟120拍时,一拍为半秒;当节奏为每分种240拍时,一拍为1/4秒,依此类推。当一拍时值确定后,根据拍号以及不同时值类型音符间的关系,音符时值就很容易确定了。例如,拍号1/8,节奏每分钟60拍,则一拍为1秒,一个四分音符为二拍二秒,一个二分音符为四拍四秒,全音符为八拍八秒。
音符和节拍时值不影响音符的表示。
1.2.2 附点音符
当音符右边出现一个小圆点“·”时,该音符叫附点音符。附点音符表示将时值延长至“·”前音符一半。例如,四分附点音符时值:1·=1+1,八分附点音符时值:1·=1+1。
1.2.3 减时线与增时线
一个音符下边出现的横线叫减时线,一道减时线表示将该音符时值减少一半,可以有多道减时线,如。
一个音符右边出现的横线叫增时线,一道增时线表示将该音符时值增加一拍(4/4),可以有多道增时线,如1 — — —。
1.2.4 连音线
如果符号“⌒”出现在同名音符上面则表示延音线,同一个音延续多个节拍,如下图“2”上的延音线。
如果符号“⌒”出现在多个音上面,则表示圆滑线,连接两个以上不同的音,要求多个音表现(唱、演奏)得连贯、圆滑,如上图第二个“⌒”所示。
1.2.5 scratch节拍编码
如图,