乐理的一些随笔
Eznibuil
·
2025-03-22 07:25:47
·
算法·理论
绝不是因为上了《石钟山记》。
不妨以弦长丈量音符。拿纯律比较十二平均律。
众所周知,毕达哥拉斯提出,比例越简洁,两个音的和声听起来越自然悦耳。
比方说,纯五度就是 \frac32 倍的弦长。
但问题来了,如果要升调的话,比例就变了,很不好。
于是想到了一种新方法:把一个八度十二等分,变成以 2^\frac1{12} 为公比的等比数列。
这种方法就适合升调,但反过来比例就对不上了。
此谓鱼与熊掌不可得兼。
比如大三度,理论 12\log_2\frac54=3.863 ,实际上 2^\frac4{12}=1.260 ,误差就有点大。
列出表格:
\frac98$|$\frac54$|$\frac43$|$\frac32$|$\frac53$|$\frac{15}8
:-:|:-:|:-:|:-:|:-:|:-:
2.039$|$3.863$|$4.980$|$7.020$|$8.844$|$10.883
1.122$|$1.260$|$1.335$|$1.498$|$1.682$|$1.888
可见,绝对误差有时能达到 0.156 之大,所以十二平均律听上去就没有纯律那么和谐,不转调的情况下纯律是更好的选择。
那倘若以 Stern-Brocot Tree 拟合一下有理数呢?
-
1
2?
3
4!?
5!
6
7?
8!
9!
10
11!
<
\frac{17}{16}
\frac98
\frac65
\frac43
\frac32
\frac32
\frac32
\frac21
\frac21
\frac21
\frac21
>
\frac{18}{17}
\frac{55}{49}
\frac{19}{16}
\frac54
\frac43
\frac75
\frac32
\frac53
\frac74
\frac{15}8
<
\frac{89}{84}
\frac{25}{21}
\frac{29}{23}
\frac{17}{12}
\frac85
\frac{37}{22}
\frac95
\frac{17}9
>
\frac{44}{37}
\frac{34}{27}
\frac{41}{29}
\frac{19}{12}
\frac{16}9
\frac{168}{89}
<
\frac{63}{50}
\frac{99}{70}
\frac{27}{17}
\frac{41}{23}
\frac{185}{98}
>
\frac{100}{63}
\frac{57}{32}
<
\frac{98}{55}
可以看见纯律中的比例均出现了,因此可以胡扯为什么是“十二”平均律而不是其他的数字。12 是最小的可以让纯律中比例均出现的,更大的有 23、24、31、32 等。但是 23 和 31 这种质数明显也不方便,所以 12 就是最好的了,但是其实吧,24 确实还行。附 23、24、31、32 的表格:
-
1
2
3
4!
5
6
7?
8!
9?
10!
11
12
13?
14!
15
16?
17!
18
19
20
21!
22
<
\frac{33}{32}
\frac{17}{16}
\frac{11}{10}
\frac87
\frac76
\frac65
\frac54
\frac43
\frac43
\frac32
\frac32
\frac32
\frac32
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
>
\frac{34}{33}
\frac{12}{11}
\frac98
\frac{43}{37}
\frac{16}{13}
\frac54
\frac{17}{13}
\frac43
\frac43
\frac{10}7
\frac{34}{23}
\frac32
\frac32
\frac32
\frac53
\frac53
\frac74
\frac95
\frac{15}8
\frac{31}{16}
<
\frac{101}{98}
\frac{23}{21}
\frac{44}{39}
\frac{50}{43}
\frac{21}{17}
\frac{14}{11}
\frac{21}{16}
\frac{23}{17}
\frac75
\frac{23}{16}
\frac{37}{25}
\frac{29}{19}
\frac85
\frac53
\frac74
\frac{16}9
\frac{11}6
\frac{17}9
\frac{33}{17}
>
\frac{81}{74}
\frac{80}{61}
\frac{50}{37}
\frac{39}{28}
\frac{33}{23}
\frac{145}{98}
\frac{32}{21}
\frac{11}7
\frac85
\frac{12}7
\frac{39}{22}
\frac{42}{23}
\frac{32}{17}
<
\frac{73}{54}
\frac{56}{39}
\frac{61}{40}
\frac{13}8
\frac{31}{18}
\frac{53}{29}
\frac{145}{77}
>
\frac{123}{91}
\frac{34}{21}
\frac{43}{25}
\frac{95}{52}
\frac{177}{94}
<
\frac{115}{71}
\frac{148}{81}
>
\frac{149}{92}
-
1
2
3
4?
5
6
7?
8!
9?
10!
11
12
13
14?
15!
16
17?
18!
19
20
21
22!
23
<
\frac{35}{34}
\frac{17}{16}
\frac{12}{11}
\frac98
\frac76
\frac65
\frac54
\frac43
\frac43
\frac32
\frac32
\frac32
\frac32
\frac32
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
>
\frac{18}{17}
\frac{55}{49}
\frac{15}{13}
\frac{19}{16}
\frac{11}9
\frac54
\frac97
\frac43
\frac43
\frac75
\frac{16}{11}
\frac32
\frac32
\frac32
\frac53
\frac53
\frac74
\frac{11}6
\frac{15}8
\frac{33}{17}
<
\frac{89}{84}
\frac{52}{45}
\frac{25}{21}
\frac{71}{58}
\frac{29}{23}
\frac{13}{10}
\frac{11}8
\frac{17}{12}
\frac{115}{79}
\frac{17}{11}
\frac85
\frac53
\frac{37}{22}
\frac74
\frac95
\frac{17}9
\frac{35}{18}
>
\frac{44}{37}
\frac{34}{27}
\frac{35}{27}
\frac{41}{29}
\frac{37}{24}
\frac{19}{12}
\frac{13}8
\frac{19}{11}
\frac{16}9
\frac{168}{89}
\frac{68}{35}
<
\frac{63}{50}
\frac{83}{64}
\frac{99}{70}
\frac{91}{59}
\frac{27}{17}
\frac{18}{11}
\frac{26}{15}
\frac{41}{23}
\frac{185}{98}
>
\frac{128}{83}
\frac{100}{63}
\frac{49}{30}
\frac{45}{26}
\frac{57}{32}
<
\frac{67}{41}
\frac{98}{55}
>
\frac{116}{71}
-
1
2
3
4
5?
6
7
8
9?
10!
11
12?
13!
14
15
16
17
18?
19!
20
21
22?
23!
24
25
26
27
28?
29
30
<
\frac{45}{44}
\frac{22}{21}
\frac{15}{14}
\frac{11}{10}
\frac98
\frac76
\frac65
\frac65
\frac54
\frac43
\frac43
\frac43
\frac32
\frac32
\frac32
\frac32
\frac32
\frac32
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
>
\frac{23}{22}
\frac{31}{29}
\frac{12}{11}
\frac{19}{17}
\frac87
\frac76
\frac{55}{46}
\frac{11}9
\frac54
\frac54
\frac{17}{13}
\frac43
\frac43
\frac43
\frac{10}7
\frac{19}{13}
\frac32
\frac32
\frac32
\frac32
\frac53
\frac53
\frac53
\frac74
\frac95
\frac{13}7
\frac{21}{11}
\frac{43}{22}
<
\frac{77}{72}
\frac{35}{32}
\frac{85}{76}
\frac{69}{59}
\frac{116}{97}
\frac97
\frac{111}{83}
\frac{11}8
\frac75
\frac{123}{86}
\frac{117}{80}
\frac{26}{17}
\frac{11}7
\frac85
\frac53
\frac{92}{55}
\frac{12}7
\frac74
\frac95
\frac{11}6
\frac{15}8
\frac{44}{23}
\frac{45}{23}
>
\frac{104}{93}
\frac{23}{18}
\frac{15}{11}
\frac{133}{93}
\frac{25}{16}
\frac{13}8
\frac{97}{58}
\frac{53}{31}
\frac{25}{14}
\frac{64}{35}
\frac{43}{23}
\frac{153}{80}
\frac{88}{45}
<
\frac{55}{43}
\frac{26}{19}
\frac{61}{39}
\frac{18}{11}
\frac{65}{38}
\frac{34}{19}
\frac{139}{76}
\frac{101}{54}
\frac{133}{68}
>
\frac{78}{61}
\frac{67}{49}
\frac{157}{96}
\frac{118}{69}
\frac{59}{33}
<
\frac{93}{68}
\frac{93}{52}
-
1
2
3
4
5?
6
7
8
9
10?
11!
12
13?
14!
15
16
17
18?
19!
20
21
22
23?
24!
25
26
27
28
29?
30
31
<
\frac{46}{45}
\frac{23}{22}
\frac{15}{14}
\frac{12}{11}
\frac98
\frac87
\frac76
\frac65
\frac54
\frac54
\frac43
\frac43
\frac43
\frac32
\frac32
\frac32
\frac32
\frac32
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
\frac21
>
\frac{47}{46}
\frac{24}{23}
\frac{16}{15}
\frac{10}9
\frac{33}{29}
\frac{64}{55}
\frac{19}{16}
\frac65
\frac{36}{29}
\frac54
\frac97
\frac{53}{40}
\frac43
\frac43
\frac75
\frac{13}9
\frac{31}{21}
\frac32
\frac32
\frac32
\frac32
\frac32
\frac53
\frac53
\frac74
\frac74
\frac{11}6
\frac{13}7
\frac{21}{11}
\frac{45}{23}
<
\frac{47}{45}
\frac{29}{26}
\frac{41}{36}
\frac{25}{21}
\frac{11}9
\frac{77}{62}
\frac{14}{11}
\frac{13}{10}
\frac{110}{83}
\frac{19}{14}
\frac75
\frac{17}{12}
\frac{96}{65}
\frac{80}{53}
\frac{17}{11}
\frac85
\frac53
\frac53
\frac{37}{22}
\frac74
\frac{65}{37}
\frac95
\frac{15}8
\frac{23}{12}
\frac{92}{47}
>
\frac{39}{35}
\frac{44}{37}
\frac{17}{14}
\frac{19}{15}
\frac{35}{27}
\frac{23}{17}
\frac{11}8
\frac{41}{29}
\frac{83}{55}
\frac{37}{24}
\frac{11}7
\frac85
\frac{23}{14}
\frac{12}7
\frac{72}{41}
\frac{61}{34}
\frac{90}{47}
\frac{137}{70}
<
\frac{79}{65}
\frac{33}{26}
\frac{83}{64}
\frac{42}{31}
\frac{18}{13}
\frac{99}{70}
\frac{91}{59}
\frac{41}{26}
\frac{29}{18}
\frac{28}{17}
\frac{55}{32}
\frac{70}{39}
\frac{113}{59}
>
\frac{96}{79}
\frac{65}{48}
\frac{137}{99}
\frac{128}{83}
\frac{52}{33}
\frac{124}{77}
\frac{51}{31}
<
\frac{153}{95}
\frac{79}{48}
感觉好像没人像我这样思考过,别人都是什么十九平均律之类的。毕竟我这种思考方法反了,逻辑上就不通,但结果是很有趣的。
生成上述表格的代码(上面的是手动修过的,毕竟也不想把代码整太麻烦):
z=int(input())
t=[(9,8),(5,4),(4,3),(3,2),(5,3),(15,8)]
def g(a,b):
print('|$\\frac'+('{'+str(a)+'}'if a>9 else str(a))+('{'+str(b)+'}'if b>9 else str(b))+'$'if b<100 else'|',end='')
if(a,b)in t:t.remove((a,b));return 1
return 0
def f(x,s,r,a,b,c,d):
if min(a,b,c,d)>100:print('|',end='');return 0
if s==0:return g(c,d)if r else g(a,b)
return f(x,s-r,0,a,b,a+c,b+d)if pow(2,x)*pow(b+d,z)<pow(a+c,z)else f(x,s-1+r,1,a+c,b+d,c,d)
h=0
print('-',end='')
for j in range(1,z):print(f'|{j}',end='')
print('\n:-:',end='')
for j in range(1,z):print('|:-:',end='')
print('\n',end='')
for i in range(2,12):
print('$>$'if i%2 else'$<$',end='')
for j in range(1,z):h=h+f(j,i,1,0,1,1,0)
print()
print(h)