间奏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):

选择808低音音色。
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