没读过扫盲文《微分音音乐理论术语翻译与简介》的请先去读那一篇。理由的话,读和没读,君试试就知道区别了。

这一篇就是要讲那一篇没讲的、比较难的、有一堆数学式子的、搞音乐的也没必要知道的部分。那有小朋友可能要问了,笔者为什么会知道呢?那是因为笔者不仅仅是个搞音乐的嘛。

知道这个的用处就是有助于寻找自己心仪的调音、开发新调音,以及在调音中寻求美学体验。目录

1. 滕尼—欧氏调音与其变体

1.1. 滕尼—欧氏调音

1.2. 纯八度滕尼—欧氏调音

1.3. 傅比尼调音

2. 滕尼—欧氏调律量度

2.1. 滕尼—欧氏复杂度

2.2. 滕尼—欧氏误差

2.3. 滕尼—欧氏简单坏度

2.4. 滕尼—欧氏对数修正坏度

1. 滕尼—欧氏调音与其变体

1.1. 滕尼—欧氏调音

滕尼—欧氏调音(下文中滕尼—欧氏都简称为TE)是规则调律的一种调音方法,能够最小化各质数频率比的加权误差的平方和。现在已知一个抽象调律,例如说已知映射表,或者已知调和了哪些音差,具体如何调呢?每个生程要多大才好呢?TE调音提供了一种优化调音的解决方案。

首先我们重新审视一下映射表。我们用

表示标准形式的映射表。


调律有一系列生程。之前已经说过,秩为

的调律就有

个生程。我们用

表示生程的行向量。


我们的调音目标是一系列质数频率比,它们的对数是调音空间中的一组基,称为纯律点(just intonation points,下文称JIP),我们用

表示,即


其中

是一个常数。如果

,则

的单位为纯八度;如果

,则

的单位为音分。

TE调音要求每个质数频率比有相同的权重,为此要将JIP单位化。定义TE调音的加权矩阵


换句话说就是对序数为j的质数频率比

的权重。

为加权基中的映射,即

。令

为加权JIP,即

。如果

的单位是纯八度,那么在这种加权的情况下,

就是一个全1的向量。

时,关于生程

有超定方程组


意思是序数为

(

)的质数频率比

在该调律中要等于各序数为

(

)的生程

步之和。

TE调音定义了对这个超定方程组的一个最小二乘问题。

最小二乘问题可以用摩尔—彭罗斯广义逆矩阵的方法求解。用

表示矩阵

的广义逆,则


解出来的

就是TE生程(TE generators),即TE调音所用的生程。

用TE生程

与加权映射表

或非加权映射表

相乘,分别得到对应的TE调音表(TE tuning map)

,即


表示各质数频率比的实际调音结果。

下面以七限魔术调律(magic temperament)为例说明求TE调音的过程。已知七限魔术调律的映射表为


JIP也是已知的。令单位为纯八度,写出



分别对

加权。由

,得到



,得到



上面写出加权的过程是为了展示原理,只求TE调音的话这个全1的向量显然可以直接用。

求出

的广义逆



求出TE生程



求出TE调音表



以上就得到了七限魔术调律的TE调音。它是以纯八度为单位的。我们可以化成音分:


这就说明要最小化七限魔术调律的误差,2个生程的大小分别是1201.082分和380.695分;4个质数频率比2/1、3/1、5/1、7/1分别调到了1201.082分、1903.476分、2782.860分、3367.259分。

1.2. 纯八度滕尼—欧氏调音

对TE调音进行等比例缩放,使得纯八度成为纯的,就是纯八度TE调音。

非常简单。TE调音表

里面的第一个元素

就是对2/1的调音结果。因此,求出TE生程和TE调音表之后分别除以

即可。用

分别表示纯八度TE调音的TE生程、加权TE调音表、非加权TE调音表,则


七限魔术调律的纯八度TE调音结果是


说明2个生程的大小分别是1200.000分和380.352分;4个质数频率比2/1、3/1、5/1、7/1分别调到了1200.000分、1901.760分、2782.352分、3364.224分。

纯八度TE调音比TE调音更容易实现,采用它可以使一些问题变的直观简单,但误差会变大。

1.3. 傅比尼调音

傅比尼调音跟TE调音一样,但是不加权,直接解


傅比尼调音由于没有将JIP单位化,结果偏重高的质数频率比。因此TE调音通常比傅比尼调音更合理,除非认为和声限越高的音程就该容忍越低的误差。但傅比尼调音有一个特点,就是它的结果都是有理数,可以作为调律的一种特征表示。

2. 滕尼—欧氏调律量度

滕尼—欧氏调律量度(下文称TE调律量度)是对抽象调律的一套量化方法和评价标准,包括三个量:TE复杂度、TE误差和TE简单坏度。其关系是:


2.1. 滕尼—欧氏复杂度

TE复杂度是表示调律复杂程度的量度。求TE复杂度的方法有两种,一是通过外映射,二是直接通过映射表。外映射本身的价值是作为调律的一种特征表示,同时外映射的范具有表征调律的复杂度的意义。

求外映射的方法可以简单到一句话:对于和声限序数

、秩

的调律,已知映射表

,则其外映射

的第

个元素

等于

的第

组合的列拼成的矩阵的行列式。

展开来说的话是这样。首先我们定义组合迭代函数

,就是Python官方

库的

函数做的事情——给出

以下正整数里面取

个元素的所有组合的集合序列。这个集合序列中共有

的组合数

个集合,且每个集合都有

个元素。设有

的矩阵

个元素的集合

;定义列切片函数

为取

的第

列拼成的矩阵。因为

个元素,所以这个矩阵为

的方阵,必然存在行列式。对于和声限序数为

、秩为

的调律,已知映射表

,记集合序列

,则其外映射

个元素,第

个元素

满足


其中

表示取矩阵的行列式。

但对于求TE复杂度,我们要用加权外映射

。做法就是先给映射表加权,即


最后对加权外映射

取二阶范,得到的就是一种TE复杂度——

复杂度。用

表示复杂度,则


通过外映射求复杂度实际上是比较麻烦的方法。用格拉姆矩阵的方法从映射表直接求复杂度要简单的多:


TE复杂度除了

复杂度以外还有两种。金·沃德·史密斯(Gene Ward Smith)提出了方均根复杂度;格拉汉姆·布里德(Graham Breed)提出了单位化方均根复杂度。这里分别称为布氏和史氏方均根复杂度。

要计算方均根复杂度,我们首先定义一种范,称为方均根范(RMS norm)。向量的方均根范就是它各元素的方均根。它跟二阶范有很密切的联系——它等于二阶范除以元素数的方根。

史氏方均根复杂度就是对外映射取方均根范:


或者从映射表直接求:


布氏方均根复杂度,从映射表直接求就会非常优雅,用外映射却会非常迷惑。它采用这种定义:


关于分母上的

,笔者理解为数外映射的元素的时候把正交基也都算上,这样正好有

个元素(但布里德本人否定这种理解)。

从映射表直接求:


这个式子里面

根本没出现。但实际上,矩阵每次进行相乘的时候都取平均,

的方阵的行列式就是原来的

总之TE复杂度存在着三种定义:一种

复杂度和两种方均根复杂度。它们的结果是不同的,但在相同秩、相同纯律子群的情况下,它们的比值都是常数,所以选择其中任意一种都可以比较出TE复杂度。

特殊地,对于平均律,两种方均根复杂度都等于TE调音时这个平均律对纯八度的等分数。例如,十二平均律的复杂度就接近12,十九平均律的复杂度就接近19。

笔者倾向于使用布里德的定义,因为这个对人类的认知最友好。

2.2. 滕尼—欧氏误差

TE误差是调律在TE调音的情况下各质数频率比到JIP的方根差或方均根差。这同样存在着三种定义:L2误差、布氏和史氏方均根差。对于相同秩、相同纯律子群的调律,任意一种都可以用。但上面TE复杂度用的是哪种定义,这里TE误差也得用同一套。

用TE调音表减去JIP再取二阶范就是L2误差,即方根差。用

表示TE误差,则


用TE调音表减去JIP再取方均根范就是布氏方均根差。


最后是用

表示的史氏方均根差。它是先定义TE简单坏度再用关系反推出来的。笔者当然不会尝试解释它的TE简单坏度是怎么定义的,这里只给出公式。


2.3. 滕尼—欧氏简单坏度

TE简单坏度是调律在TE调音的情况下的相对误差。无论何种定义,TE简单坏度都等于对应的TE复杂度和TE误差的乘积。

2.4. 滕尼—欧氏对数修正坏度

TE对数修正坏度不属于TE调律量度的组成部分。它是对TE简单坏度的一种修正,理由是有人认为TE简单坏度十分偏向复杂的调律。TE对数修正坏度的计算:


其中

为TE对数修正坏度,

为TE简单坏度,

为TE复杂度。

TE对数修正坏度的一个重要性质是无下界性。虽然高复杂度的调律的TE对数修正坏度会远远高于TE简单坏度,但给定任意正值,一定存在TE对数修正坏度低于这个值的调律。

当然,笔者并不认同TE简单坏度偏向复杂的调律,更不用说「十分偏向」,所以也不认同随意使用TE对数修正坏度来评价调律。

以上。

雏鸣札D卷第二篇

版本稳定版0