间奏3:旋律与列表
间奏3:旋律与列表
在本间奏中,我们将编写由艺术家和YouTuber Kyle Exum创作的贝多芬《致爱丽丝》混音版(Bassthoven, 2020)的短小段落。因为这首歌有更复杂的旋律,我们将学习如何演奏以Python列表形式写出的音符序列。我们将在下一章详细讨论列表,但现在,你可以将它们视为在单个变量中保存多个音符的方式。
步骤1:变量
创建一个新的键盘乐器,并为我们的不同音符名称添加一些变量。
A = 69 # 将变量A设置为69
B = 71
C = 72
D = 74
E = 76
Eb = 75 # 降E
Gs = 68 # 升G
_ = None最后一行有点奇怪。它定义了一个名为 _ 的变量。
- 在Python中,下划线
_字符是有效的变量名。 - 我们将此变量设置为一个称为None的特殊值。
- 使用此值调用playNote与休止符相同。它不演奏任何东西。
步骤2:乐句
- 对于这首歌,我们将定义四个音乐乐句,它们重复以构成旋律。
- 每个乐句都有自己的变量。
- 每个变量将按应演奏的顺序保存音符列表。
- 你可以通过在方括号内包含变量来创建Python列表(请参见下面的代码)。
- 我们使用下划线字符
_表示不演奏任何东西。 - 有时我们从音符中减去12。这意味着演奏低一个八度的音符。
# 整个过程中重复的四个基本乐句
p1 = [ E, Eb, E, Eb, E, B, D, C, A, _, _, _ ]
p2 = [ A, C - 12, E - 12, A, B, _, _, _ ]
p3 = [ B, E - 12, Gs, B, C, _, _, _, C, _, _, _ ]
p4 = [ B, E - 12, C, B, A, _, _, _, A, _, _, _ ]步骤3:演奏乐句
现在我们定义了变量,我们可以开始演奏旋律。一种方法是使用Python for循环遍历每个音符。Python的一个很酷的事情是,我们可以使用加号(+)将列表连接在一起。这就是一切放在一起的样子。还不用担心理解所有细节。我们将在接下来的章节中讨论所有这些概念。
_ = None
A = 69
B = 71
C = 72
D = 74
E = 76
Eb = E - 1 # 降E
Gs = A - 1 # 升G
# 整个过程中重复的四个基本乐句
p1 = [ E, Eb, E, Eb, E, B, D, C, A, _, _, _ ]
p2 = [ A, C - 12, E - 12, A, B, _, _, _ ]
p3 = [ B, E - 12, Gs, B, C, _, _, _, C, _, _, _ ]
p4 = [ B, E - 12, C, B, A, _, _, _, A, _, _, _ ]
p5 = [ A,_,_,_,A,_,_,_,A,_, _, _, A, _, _, _ ]
for note in p1 + p5 + p2 + p3 + p1 + p2 + p4:
playNote(note, beats = 0.5)
for note in p1 + p2 + p3 + p1 + p2 + p4:
playNote(note, beats = 0.5)步骤4:低音!
将低音添加到你的项目中,并将音色更改为808低音。你可以复制下面的代码以获取低音模式(图3.8):

rest(12)
for i in range(4):
playNote(21)
rest(2)
playNote(21)
rest(1)
playNote(16, beats = 0.5)
rest(1)
playNote(16, beats = 0.5)
rest(1)
playNote(21)
rest(2)
playNote(21)
rest(1)
playNote(28, beats = 0.5)
rest(1)
playNote(16, beats = 0.5)
rest(1)步骤5:鼓
最后,让我们层叠一个与旋律配合良好的简单鼓模式。创建一个新的鼓乐器并添加此代码。
for i in range(16):
playNote(0)
playNote(2, beats = 0.5)
playNote(2, beats = 0.5)
playNote(10)
playNote(0)你可以在线尝试此项目:https://tunepad.com/interlude/bassthoven