北太天元助你作曲: 使用十二音矩阵创建十二音旋律
2023年8月20日,我参加了交叉学科大会,有幸听到了许琛老师的报告。

我在这里与大家分享一点如何用十二音技术作曲。

下面我们介绍了使用十二音矩阵创作十二音旋律的过程,并且在北太天元的帮助下可以快速完成。这项技术是由阿诺德·勋伯格于1921年开发的,其目的是创作十二个音高中的每一个都能被同等听到的音乐。这种技巧可以防止强调任何一个音符,从而避免任何关键感或音调感。
学习了这一技巧后,你将能够在不强调任何特定音调的情况下快速为作品创作旋律。借助北太天元,创建十二音矩阵轻而易举,只需五分钟即可完成。从这个矩阵中写出旋律需要对乐谱有基本的理解。
要创建十二音矩阵,你需要能够加会使用北太天元的内置函数mod,
mod 函数是获得除后的余数(取模运算)。
b = mod(a, m) 返回 a 除以 m 后的余数,其中 a 是被除数,m 是除数。
例如:
>> mod(-3,12)
会得到 9,
>> mod(16, 12)
会得到 4.
我们的任务创建一个12x12的矩阵, 矩阵的元素是1-12之间的数字。
>> A = zeros(12) ; % 创建一个全是零元素的矩阵
第一步:在最上面一行写数字
将从1到12的整数中的每一个写在网格的顶行上,使每个数字只出现一次。
>> A(1,:) = randperm(12,12); % 这是随机生成了第一行, 1-12的一个随机排列
>> A(1,:) = [ 3 1 9 5 4 6 8 7 12 10 11 2] ; %也可以指定第一行
数字的顺序可以是完全任意的,也可以是精心策划的。这些数字之间的音程将成为旋律音高之间的半步数。有了这些知识,你可以将数字以预定的间隔放在这个矩阵的第一行,以获得音乐效果。我已将数字放在最上面一行,如图所示。

步骤2:填充第一列
虽然第一行中的注释可以按照您选择的任何顺序书写,但第一列完全取决于第一行,因此您不应以与为第一行选择数字相同的方式为该列选择数字。
首先确定顶行的前两个元素之间的差异。在下面的例子中,前两个元素之间的差是-2,因为1-3=-2。
顶行的前两个元素之间的差的对立面应该是第一列的前两种元素之间的差值。例如,由于第一行的前两个元素之间的差是-2,所以第一列的前两个子元素之间的差值应该是+2。这是通过在第一个元素上添加2来实现的。由于3+2=5,所以第二个元素是5。
对随后的每组相邻图元执行相同的过程。继续下面的例子,观察9和1之间的差是+8。因此,第一列的第二个元素和第三个元素之间的差应该是-8。5减去8得到-3。请注意,-3不在1和12之间。每当遇到不在1和12之间的结果时,根据需要将该数字加上或减去12,使结果在1和12中。在这种情况下,-3+12=9,因此9显示为第一列的第三个元素。
我们可以用下面的北太天元代码实现上面的操作,
>> for j = 2:12
A(j,1) = mod( A(j-1,1) - (A(1,j)-A(1,j-1) ), 12 ) ;
if A(j,1) == 0
A(j,1) = 12;
end
end
完成的第一行和第一列的矩阵A如下

步骤4:填写剩余行
剩余的行应该以与填充第二行相同的方式完成。
确定未完成的最低行的第一个元素与该行正上方行的第一元素之间的差异。此差异应在该行的其余部分复制。回到我们的例子,我们可以观察到9和5之间的差是4,因此第三行的每个元素应该比它上面的单元格中的元素大4。
for j=2:12
for k=2:12
A(j,k) = A(j,k-1) + A(1,k) - A(1,k-1);
A(j,k) = mod( A(j,k), 12);
if A(j,k) == 0
A(j,k) = 12;
end
end
end
每一行都以这种方式完成,得到的完整矩阵如下所示。

您可以看到从1到12的每个数字在每行和每列中只出现一次。
你还可以看到沿着从矩阵左上角到右下角的对角线进行查看。每个单元格中的数字应该相同。在我们的例子中,情况就是这样;数字3出现在对角线的每个单元格中。
第五步:把数字翻译成音高
现在矩阵已经完成,您可以选择几行或几列,并将它们“翻译”为音乐。根据该列表,每个数字对应于一个特定的音高。
C 1
C#/Db 2
D 3
D#/Eb 4
E 5
F 6
F#/Gb 7
G 8
G#/Ab 9
A 10
A#/Bb 11
B 12
从矩阵中选择一行或多列,并将它们转换为间距。可以从左到右或从右到左读取行,也可以从上到下或从下到上读取列。
回到我们的例子,第七行(从左到右)被选为旋律的前半部分。第十列,从下到上读,被选为旋律的后半部分。行和列的翻译如下。
第7行:
10 8 4 12 11 3 2 7 5 6 9
A G D#B Bb C D Db Gb E F Ab
第10列:
11 2 3 1 6 5 7 9 8 4 12 10
Bb C#D C F E Gb Ab G Eb B A
第六步:创作音乐
这个需要学会五线谱,就是下面这个样子的东西

另外,tone(音调)的高低和声音振动的频率有关,可以看下图

用音高做一首旋律。确保你不会改变音高顺序,因为改变音高顺序会破坏创建矩阵的目的。
回想一下,在步骤5中生成的音高如下:
A G D#B Bb C D Db Gb E F Ab
Bb C#D C F E Gb Ab G Eb B A
我们已经完成了我们的例子,用这些音高写音乐。
以任何你喜欢的方式选择你的时间特征、节奏和动态。请注意,使用调号是不必要的,因为你的旋律没有任何调号感或调性感。20世纪的作曲家以创作特定的动态、发音和节奏标记而闻名,所以你也可以通过具体组合这些因素来模仿这种风格。 我们已经在我们这个例子中做到了这一点。
我们完成的旋律将是无调性的,并与阿诺德·勋伯格和其他20世纪作曲家所采用的方法相一致。
附上北太天元用到的所有代码 musicEx1.m
% 北太天元 作曲 musicEx1.m
A = zeros(12);
A(1,:) = [3 1 9 5 4 6 8 7 12 10 11 2];
for j = 2:12
A(j,1) = mod( A(j-1,1) - (A(1,j)-A(1,j-1) ), 12 ) ;
if A(j,1) == 0
A(j,1) = 12;
end
end
for j=2:12
for k=2:12
A(j,k) = A(j,k-1) + A(1,k) - A(1,k-1);
A(j,k) = mod( A(j,k), 12);
if A(j,k) == 0
A(j,k) = 12;
end
end
end
A
