第5章 音阶、调性与旋律

第5章 音阶、调性与旋律

音阶是逐个演奏的音符模式,按音高上升或下降的顺序排列。大多数音阶使用钢琴键盘上12个可能音符的某个子集跨越一个八度。当音阶完成八度时,模式重新开始。与音阶相似,除了音符的顺序无关紧要,并且它们包含音阶中的所有音符,无论你从哪个八度开始。调就像模板,帮助我们选择和我们知道会听起来很好的音符和和弦。调为音乐提供和声和旋律结构。

5.1 半音阶

音阶的构建块是半音和全音。半音是音乐中常用的最小音程,是音高和钢琴键盘上相邻两个音符之间的距离。全音由两个半音组成。

最基本的音阶是半音阶。在这个音阶中,每个音符正好比前一个音符高半音。这个音阶可以从任何音符开始,并在12个音符中跨越一个八度。从钢琴键盘上的C开始,我们将有以下音符:

C C♯ D D♯ E F F♯ G G♯ A A♯ B

或者,使用MIDI(音乐设备数字接口)音符编号,我们也可以写:

48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59

在TunePad中使用循环演奏半音阶很容易:

# 从48循环到60(但不包括60)
for note in range(48, 60):
    playNote(note)

如果我们想从不同的根音开始演奏半音阶,我们可以只更改上面range函数中的数字。

5.2 大调音阶和小调音阶

也许西方音乐中最重要的音阶是大调和小调音阶。这些音阶每个使用八度中12个可能音符中的7个。有12个大调音阶和12个小调音阶,每个可能的起始音高一个。在第七个音符之后,下一个音符将是第一个音符——或主音——高一个八度。音阶以其主音和性质命名,就像和弦命名一样。从音符D开始的大调音阶将被称为D大调。

大调音阶通常被描述为愉快和快乐(像大调和弦)。大调音阶由以下音程组成:

全音、全音、半音、全音、全音、全音、半音

从C开始的大调音阶将具有以下音符,如图5.1所示。

C大调音阶的全音和半音音程。
音符名称 C D E F G A B C
MIDI编号 48 50 52 53 55 57 59 60
音程 全音 全音 半音 全音 全音 全音 半音

小调音阶也每个八度使用七个音符,但顺序与大调音阶不同。这种音程的差异导致了音阶的不同情感内涵。小调音阶通常被描述为悲伤、忧郁和遥远。从C开始的小调音阶将具有以下音符:

音符名称 C D E♭ F G A♭ B♭ C
MIDI编号 48 50 51 53 55 56 58 60
音程 全音 半音 全音 全音 半音 全音 全音

大调和小调音阶都是调式的例子。调式只是排序音阶音程的不同方式。

5.3 五声音阶

五声音阶是大调和小调音阶音符的子集。五声音阶中有五个音符。这些音阶没有半音音程,这导致音符之间的不和谐较少。许多常见的旋律基于五声音阶,特别是在民谣和流行音乐中。《Amazing Grace》的旋律是五声音阶,Ed Sheeran的《Shape of You》也是。

既有大调五声音阶也有小调五声音阶。大调五声音阶通过省略大调音阶的第四和第七个音符创建。小调五声音阶省略小调音阶的第二和第六个音符。你可以通过仅演奏钢琴键盘的黑键来尝试五声音阶的声音,它形成F♯大调五声音阶或D♯小调五声音阶(图5.2)。

F♯大调五声音阶仅使用键盘的黑键。D♯小调五声音阶以D♯开始,也仅使用黑键。

C大调五声音阶

音符名称 C D E G A C
MIDI编号 48 50 52 55 57 60
音程 全音 全音 小三度 全音 小三度

C小调五声音阶

音符名称 C E♭ F G B♭ C
MIDI编号 48 51 53 55 58 60
音程 小三度 全音 全音 小三度 全音

C大调五声音阶(上)和F♯大调五声音阶(下)。

5.4 在TunePad中构建音阶

在TunePad中构建音阶类似于构建和弦。因为音阶只是音程(音符之间的间隔)的模式,我们可以创建短函数来生成音阶。每个大调音阶都有相同的音程模式,小调音阶也是如此。唯一改变的是起始音符。要在TunePad中生成音阶,我们需要做的就是决定从哪个音符开始,然后将模式应用于这个起始音符。

用计算机代码思考音乐的优势之一是,我们不必记住构成不同调的无尽音阶和音符与和弦的组合。专业音乐家训练多年,学习如何演奏不同的音阶,而不必思考,以便他们可以流畅地从一个调切换到另一个调。这是使即兴音乐家如此令人印象深刻的部分原因。演奏独奏意味着准确知道可以演奏哪些音符和和弦,以及这些音符和和弦如何与表演作品的流派或主题相关。

这是一个关于在TunePad中用Python代码生成音阶的快速示例:

def majorScale(tonic):
    intervals = [ 0, 2, 4, 5, 7, 9, 11 ]
    return [ i + tonic for i in intervals ]

上面的示例使用了称为列表推导式的新的Python概念。列表推导式是在Python中创建列表的简写方式。第2行使用列表推导式创建一个由间隔列表中的每个元素添加到主音值组成的新列表:

[ i + tonic for i in intervals ]

这等同于写:

result = [ ]
for i in intervals:
    result.append(i + tonic)

第二个版本使用列表推导式写起来比第一个版本稍微麻烦一些,但使用任何一个版本都可以。

5.4.1 大调音阶

  • 音程:[ 0, 2, 4, 5, 7, 9, 11]
  • 符号:C major, CMaj, CM, C
  • 使用列表推导式的Python函数
def majorScale(tonic):
    intervals = [ 0, 2, 4, 5, 7, 9, 11 ]
    return [ i + tonic for i in intervals ]

这是使用循环而不是列表推导式的替代Python函数:

def majorScale(tonic):
    intervals = [ 0, 2, 4, 5, 7, 9, 11 ]
    scale = [ ]
    for i in intervals:
        scale.append(i + tonic)
    return scale

这是第三个变体,没有循环也没有列表推导式:

def majorScale(tonic):
    return [ tonic, tonic + 2, tonic + 4, tonic + 5,
            tonic + 7, tonic + 9, tonic + 11 ]

5.4.2 小调音阶

  • 音程:[ 0, 2, 3, 5, 7, 8, 10 ]
  • 符号:C minor, Cmin, Cm
  • Python函数
def minorScale(tonic):
    intervals = [ 0, 2, 3, 5, 7, 8, 10 ]
    return [ i + tonic for i in intervals ]

5.4.3 大调五声音阶

  • 音程:[ 0, 2, 4, 7, 9 ]
  • Python函数
def majorPentScale(tonic):
    intervals = [ 0, 2, 4, 7, 9 ]
    return [ i + tonic for i in intervals ]

5.4.4 小调五声音阶

  • 音程:[ 0, 3, 5, 7, 10 ]
  • Python函数
def minorPentScale(tonic):
    intervals = [ 0, 3, 5, 7, 10 ]
    return [ i + tonic for i in intervals ]

5.4.5 半音阶

  • 音程:[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
  • Python函数
def chromaticScale(tonic):
    intervals = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
    return [ i + tonic for i in intervals ]

在此处尝试这些函数:https://tunepad.com/examples/build-scales

5.5 在TunePad中演奏音阶

现在我们已经看到如何构建音阶,我们可以使用上一节的函数来演奏音乐。与和弦不同,音阶的音符通常不会一起演奏。演奏音阶的最基本方法是一次演奏一个音符,按上升顺序。我们必须以某种方式单独访问列表的每个元素,并将其传递给playNote(图5.3)。

带有值和索引的列表的表示。

可以使用其在列表中的位置访问每个元素——称为索引。在编码中,列表的第一个元素在索引0;列表的第二个元素在索引1;第三个在索引2;依此类推。在Python中,你还可以访问索引-1处的列表的最后一个元素。访问列表的各个元素被称为索引。在代码中,我们通过使用方括号和索引号来做到这一点。我们还可以使用此技术更改列表中各个元素的值。

notes = [ 60, 62, 64 ]
notes[2] = 66 # 将值64替换为66
playNote( notes[0] )
playNote( notes[1] )
playNote( notes[2] )

在第1行,我们定义了一个名为notes的新列表,它有三个值。在第2行,我们将索引2处的值替换为新值66。在第3行到第5行,我们一次演奏列表的每个音符。对于初学者来说,计算机编程最令人困惑的部分之一是列表从索引0开始,结束于索引比列表长度小1。然而,通过一点练习,这会变得越来越不令人困惑。

注意:如果你尝试使用不存在的索引索引到列表中,Python将停止运行,并抱怨IndexError。因为索引从零开始,有效索引是从0到列表长度减1。

另一种遍历列表的方法是使用for循环。以前,当我们看到循环时,我们使用它们连续多次执行完全相同的操作。回忆for循环的语法:

for var in range(start, stop):

我们可以将for循环的range(start, stop)部分替换为列表。这将对列表中的每个元素执行循环的主体一次。这里有一个称为”循环变量”的特殊变量,每次循环重复时,它都被设置为列表中每个连续元素的值。在上面的代码中,var是循环变量,但你可以使用任何有效的Python变量名。例如,这是一个演奏从音符60开始的大调音阶的所有音符的循环。

for note in majorScale(60):
    playNote(note)

在这个例子中,note是我们的循环变量。对于循环的每次迭代,它都被设置为音阶中的下一个音符。在此处尝试:https://tunepad.com/examples/play-scales

5.6 其他类型的音阶

还有许多其他类型的音阶,但大调和小调音阶的变体在流行音乐中最常见。我们在此不涵盖的其他音阶包括教堂调式集、全音音阶、减音阶和有限转调调式。

以上我们讨论了西方音乐中常见的音阶,但音符集合的概念是跨文化的。阿拉伯maqam(或ماقم)是传统阿拉伯音乐中的旋律调式系统,用于作曲和即兴创作。在印度古典音乐中,Raga是旋律调式和动机的集合,每个都意味着独特的个性或情感。印度尼西亚的甘美兰音乐由Pathet组织,这是一个音符层次系统,其中不同的音符具有突出性。西方作曲家经常借用——或在某些情况下,窃取——这些音阶用于他们自己的音乐。这在音乐行业内引发了许多挪用和剥削的问题。音乐行业有着边缘化群体的长期历史,同时也从文化传统中获利,而没有适当补偿或承认音乐来源。

5.7 调

在创作音乐时,似乎有无尽的音乐可供选择。调是缩小选择什么音符的问题的一种方法。调是大多数音乐的基础组织框架,并编码旋律和和声结构和规则。知道这些规则(以及如何打破它们)帮助我们创作听众可以轻松理解和欣赏的音乐。

调的概念与音阶的概念密切相关。调由组成具有相同名称的音阶的所有八度中的所有音符组成。例如,C大调中的音符与所有八度中C大调音阶中的音符相同。但是,虽然音阶通常按音高上升或下降的顺序演奏,但调中音符的顺序无关紧要。作为给定调的一部分的音符被称为自然音,而不属于该调的剩余音符被称为变化音。

数百年前,不同的调曾经与不同的情感相关联,所以作曲家会选择强化他们作品情绪的特定调。这是因为由于调音系统,每个调中的音程略有不同;不同的调实际上彼此在听觉上是不同的。在现代,每个调由完全相同的音程组成。

5.8 五度圈

调根据五度圈组织。五度圈本质上是一种音程模式。顺时针绕圈移动是将主音从前一个调提高五度。这作为音阶的第七个音符添加一个升号(或♯)音符。或者,逆时针移动将主音提高四度,通常被称为四度圈。这作为音阶的第四个音符添加一个降号音符(图5.4)。

五度圈排列音乐调。

共享所有相同音符的大调和小调调被认为是关系调。对于小调音阶,关系大调音阶在第三个音符开始;对于大调音阶,关系小调在第六个音符开始。C大调的关系小调是A小调,A小调的关系大调是C大调。

在四度或五度圈上相邻的调——例如,D大调和G大调——共享几乎所有相同的音符,并被认为是关系密切的。给定调的关系大调或小调也被认为是关系密切的。通常,当歌曲改变调——也称为转调——它会转到其中一个关系密切的调。因为关系密切的调共享大多数相同的音符,转调到这些调之一对听众来说不那么刺耳。

5.9 旋律

旋律是我们聆听的大部分音乐的中心组成部分。这是歌曲中困扰你的部分。优秀旋律创作的很多内容都是直觉和练习,但了解一点理论可以帮助你开始。旋律有两个基本参数:音高和节奏。这些元素同等重要,但在本节中,我们将主要看音高。

在创作旋律时,理解你在调、音阶和和声和弦进程的限制内工作是很好的起点。我们可以使用歌曲的和声来提供结构脚手架。通常,旋律将和声中的和弦音放在小节的强拍上(第一和第三拍)。这些音与和声一致,意味着它们听起来令人愉快。最简单的旋律可能只坚持这些和弦音。在下面的示例中,我们只演奏C大调和D小调的和弦音:

# 在C大调上
playNote(55, 0.75)
playNote(55, 0.25)
playNote(52, 1)
playNote(48, 0.5)
rest(1.5)

# 在D小调上
playNote(57, 0.75)
playNote(57, 0.25)
playNote(53, 1)
playNote(50, 0.5)

在此处跟随这些示例:https://tunepad.com/examples/simple-melody

不和谐也是旋律创作中的强大工具。这可以增加兴趣和变化,有时对听众产生强烈的情感影响。没有不和谐的旋律,只演奏和弦音,变得无聊。利用不和谐的一种方法是添加音符在我们的和弦音之间填充我们的旋律。我们可以根据歌曲的调选择与音阶对应的音符。在下面的示例中,我们现在填充每个小节最后两个音符之间的空间:

# 在C大调上
playNote(55, 0.75)
playNote(55, 0.25)
playNote(52, 0.5)
playNote(50, 0.5) # 经过音
playNote(48, 0.5)
rest(1.5)

# 在D小调上
playNote(57, 0.75)
playNote(57, 0.25)
playNote(53, 0.5)
playNote(52, 0.5) # 经过音
playNote(50, 0.5)

创作旋律时要考虑的事情是轮廓。轮廓描述了旋律采取的形状:音高中自然的上升和下降。旋律可以要么逐步移动到相邻音符,要么跳到更远的音符。这种运动可以降低或提高音高。这意味着我们有四种旋律可能采取的运动类型,每种都有不同的内涵。例如,我们可能会听到以大幅度跳跃开始的旋律作为更情绪化的。你可以期望大多数旋律在大约一个八度到一个八度半的范围内。在下面的示例中,我们将结合跳跃到和弦音和经过音的想法:

# 在C大调上
playNote(55, 1)
playNote(64, 1.5) # 大幅度跳跃
playNote(60, 1.5)

# 在D小调上
playNote(57, 1)
playNote(65, 1.5) # 大幅度跳跃
playNote(67, 1) # 经过音
playNote(69, 0.5)

如果我们将轮廓和音高内容视为垂直现象,我们可以将旋律形式视为水平结构。我们可以将旋律分解为称为乐句的部件。如果旋律是段落,那么乐句就像音乐句子。它们是完整的思想,被标点并组合以形成更完整和连贯的思想。乐句通常持续2、4或8小节。这些乐句组合形成更大的结构,成为整体歌曲形式。我们将在第9章中更多探索这一点。

重复和变化的原理彼此对立。在创作旋律时,通常需要有足够的重复,以便听众有东西可以抓住。但重复太多,旋律变得无聊。 catchy旋律是在这两个力量之间取得平衡的结果。

建立关于旋律创作的直觉的一种方法是分析你喜欢并想要模仿的艺术家的旋律。你从分析现有旋律中培养的关键倾听技能直接适用于创作你自己的旋律。实验和即兴创作是建立这种直觉的其他好方法。你可以尝试敲击节奏作为旋律的基础,或在钢琴或其他乐器上玩耍。

尝试在我们的自动旋律生成器中玩耍:https://tunepad.com/examples/melody-gen