各音阶调号中,对升降号变化规律的一种解释

less than 1 minute read

大约六月份的时候博客因为没备案被封掉了,折腾了一个多月终于备好,不过腾讯云的服务还是相当贴心的。
我还是有空花时间多写一些东西吧,因为我确实在很多方面有自己的爱好和想法,不写出来,恐怕就没人知道了。
前几天看乐理书,一个老生常谈的知识是把所有的大调调号给列出来,一共有14个(其实等你看到小调调号时,你会发现14个小调调号也是这里看到的14个。。升降号完全相同的大调和小调互称为关系调)。

 

然后书中讲到有这样一个规律:仅看上图中全是升号的调号。最后一个升号所对应音高,再升半音,就是这个调号的名称。如第二个调号中,最后一个升号对应C#,再升半音就是D。所以第二个大调就是D大调。

我不止觉得这个神奇,更重要的是发现了这么一个事实:原来调号中变音的顺序是有讲究的!比如A大调(图中第五个)的变音顺序只能写为图中的:F, C, G, D, A。

为什么要严格限制这个顺序呢,稍想一下就会知道,调号从左到右越来越复杂,显然右边的调号是从左边的调号变化出来的。是如何按照一个统一的生成方式,如此有规律地(即每次只增加一个升号)把7个调号全找出来的呢?我做了一些尝试。

为了便于用算法表示这个生成过程,我采取了另一种对音阶的描述方式。
总思想是:把每个音视为数轴上的点,把音程关系视为线段。线段的长度用半音数表示。
大调自然音阶中,相邻两音所隔的半音数组成的列表如下:
# "B A = …"  表示中,A为标识符,B为数据类型
OrderedList MajorList = [2,2,1,2,2,2,1]
加升号和降号的操作,在此表示中,实质上是将二元列表t(t为MajorList中某相邻的两个元素构成的子列表)的两个元素的数值在两者之间进行转移:
• 把[1,2]变为[2,1],实为加升号的操作
• 把[2,1]变为[1,2],实为加降号的操作
例如,将F音加升号的操作,会把MajorList改变成如下:
OrderedList GMajorList = [2,2,2,1,2,2,1]
原始音阶对应的MajorList,表明了对八度的一种划分。在此MajorList的基础上,加上各种合适的升降号操作,可构成新的List,这是对八度的另一种划分。
划分是连续的,任一划分对应的有限长的列表,可以往两方向进行延拓,构成无限长的列表,例如:
UnlimitedOrderedList MajorList_unlimit =  [2,2,1,2,2,2,1,2,2,1,2,2,2,1,…]
UnlimitedOrderedList GMajorList_unlimit = [2,2,2,1,2,2,1,2,2,2,1,2,2,1,…]
如果在延拓后的列表中查找子列表,若发现MajorList: [2,2,1,2,2,2,1]是子列表
那么即可认为该列表对应的八度划分,可以从某个音开始,构成一个大调音阶。例如,我们发现:
GMajorList_unlimit[4:10] = [2,2,1,2,2,2,1]
故GMajorList列表所对应的八度划分,可以从第五个音开始,构成大调音阶,也就是G大调。
我们姑且把这个例子叫做C->G的变通:
[2,2,1,2,2,2,1] -> [2,2,2,1,2,2,1]
于是:升号越来越多,可以用迭代来解释。每次加升号都类似把C调变通为G调的过程。分析一下可以得出,每次所改变的音依次为:G, D, A, E, B, F#, C#。每次都是加升号,反映到原音阶里也同样是加升号。这一段讲的略简略,但我觉得我前面几段已经把想法说的比较清楚了,顺着思路应该可以自己想明白,嗯,主要是我懒得写下去了。。
其实还可以想一想如何解释:显然生成规律没有变,第八个以后的调号也是如此生成的,为什么前面7个调号之前一直是升号,而从第八个开始突然一下子变成全降?之后我也会继续想这个问题。

Tags:

Updated: