乐理的一些随笔

· · 算法·理论

绝不是因为上了《石钟山记》。

不妨以弦长丈量音符。拿纯律比较十二平均律。

众所周知,毕达哥拉斯提出,比例越简洁,两个音的和声听起来越自然悦耳。

比方说,纯五度就是 \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)