爱人搞器乐,并且是钢琴调律师,时间长免不了朱赤墨黑,作为一个码农,也自然通了半点音律。
十分钟的音律概述,只出干货
音乐的核心就声音
声音是物体震动产生的空气波,人耳感觉到这个波,好的叫乐音,不好的叫噪音。不管好赖本质是个波。
波涉及的概念有频率波长振幅
频率与波长成反比,振幅越大声音响度越大。

我们拿比较好理解的有弦乐器举例
理想中的一根有张力的琴弦震动起来会发出一个单纯频率的声音,弦长固定张力越大频率越高,张力不变弦长越短频率越高。
我们改变张力或者弦长,就能改变震动频率。

钢琴是一种击弦类乐器有88个音,内部200多跟琴弦。

看图说话

下面取钢琴的一段音阶
琴键颜色: 白  黑  白  黑  白  白  黑  白  黑  白  黑  白  白 
音阶编号: 1   2   3   4   5   6   7   8   9   10  11  12  13
五线谱名:  C  #C   D  #D   E   F  #F   G  #G   A  #A   B   c
简谱音名:  1  #1   2  #2   3   4  #4   5  #5   6  #6   7   1'

注意简谱音是C调时的 1 2 3 4 5 6 7 1'(do re mi fa so la si do)

度的简述
钢琴也是承基于7声音阶,其键是7白5黑的规律循环排列
五线谱是只标记7声名称, ABCDEFG,另5个是在7个上附加符号来标记。线上和线间都可以用来定位音名,
音与音之间的度,是跨越五线谱线和间的个数。
度的大小增减是与琴键排列顺序有关的。

钢琴是平均律的,产生的比较晚,在平均律之前有什么律法呢?

我们从中国传统的三分损益 和 五度相生起说

三分损益包含“三分损一”、“三分益一”

即分别取发音琴弦长度的2/3和4/3
即可得到比当前音 高5度 和低4度的两个音

当前琴弦发音是1 ,三分损一取2/3的点摁住是可以得到5
从5的点再“三分益一”取4/3 我们可以得到比5低4度的2

举一反三
反过来操作一个音的弦长二分益一(长度是原来1.5倍)可以得到低五度的音
一个音的弦长四分损一(长度是原来3/4倍)可以得到高4度的音

以三分损益法推出
1 5 2 6 3 7 #4 #1' #5 #2' #6 4'
前五个
宫、 徵、商、羽、角就是这样经过两次损益就生成了

损益过程获得频率比公式

pf=1
for i in( 1 to n)
  jo=i%2
  jo==1?pf*=3/2:pf*=3/4代码

list33=[1,5,2,6,3,7,"#4" ,"#1'" ,"#5" ,"#2'", "#6", "4'"]
print(list33)
p33=[1,1,1,1,1,1,1,2,1,2,1,2]
def df31():
    pf=1
    z=1
    m=1
    for i in range(0 ,12):
        if i==0:
            print(1,1,1)
            continue
        jo=i%2

        if(jo==1):
            pf*=3/2
            z*=3
            m*=2
        else:
            pf*=3/4
            z *= 3
            m *= 4

        print(list33[i],z,m,pf,list_name[i],pf/p33[i])
df31()

[1, 5, 2, 6, 3, 7, '#4', "#1'", '#5', "#2'", '#6', "4'"]
1 1 1
5 3 2 1.5 5 1.5
2 9 8 1.125 2' 1.125
6 27 16 1.6875 6' 1.6875
3 81 64 1.265625 3 1.265625
7 243 128 1.8984375 7 1.8984375
#4 729 512 1.423828125 #4 1.423828125
#1' 2187 1024 2.1357421875 #1 1.06787109375
#5 6561 4096 1.601806640625 #5 1.601806640625
#2' 19683 8192 2.4027099609375 #2 1.20135498046875
#6 59049 32768 1.802032470703125 #6 1.802032470703125
4' 177147 65536 2.7030487060546875 4 1.3515243530273438

五度相生律
连续用2/3的比例往上取就好了
1 5 2'6'3" 7" #4'" #1"" #5"" #2'"" #6'"" 4"""

频率比公式
(3/2)^n
代码

list_name=["1", "5", "2'","6'","3", "7", "#4","#1", "#5", "#2","#6" ,"4"]
list55=["1", "5", "2'","6'","3\"", "7\"", "#4\"'","#1\"\"", "#5\"\"", "#2\"\"'","#6\"\"'" ,"4\"\"\""]


p55=[0,0,1,1,2,2,3,4,4,5,5,6]
p52=[1,1,2,2,4,4,8,16,16,32,32,64]
print(list55)
def df55(n):
    z,m=3**n,2**n
    print(list55[n],z,m,z/m,list_name[n],z/m/p52[n])


for i in range(0,12):
    df55(i)

['1', '5', "2'", "6'", '3"', '7"', '#4"\'', '#1""', '#5""', '#2""\'', '#6""\'', '4"""']
1 1 1 1.0 1 1.0
5 3 2 1.5 5 1.5
2' 9 4 2.25 2' 1.125
6' 27 8 3.375 6' 1.6875
3" 81 16 5.0625 3 1.265625
7" 243 32 7.59375 7 1.8984375
#4"' 729 64 11.390625 #4 1.423828125
#1"" 2187 128 17.0859375 #1 1.06787109375
#5"" 6561 256 25.62890625 #5 1.601806640625
#2""' 19683 512 38.443359375 #2 1.20135498046875
#6""' 59049 1024 57.6650390625 #6 1.802032470703125
4""" 177147 2048 86.49755859375 4 1.3515243530273438

从算法上来看五度相生和三分损益是一回事

明显的问题

15 26 37 41'之间是5度
得到4的频率比*3/2应该=2
数学上是不可能的,

显然循环算出的结果是不合适的。
4从1'的关系推导得到与1的频率比是4/3

152637和4就构成了五度相生的7声音阶

12声音阶频率
其频率分别是:F、2187/2048F、9/8F、19683/16384F、81/64F、4/3F、729/512F、3/2F、6561/4096F、27/16F、59049/32768F、243/128F

排序比率表

1 1 
 #1 1.06787109375
  2 1.125
 #2 1.20135498046875
  3 1.265625
  4 1.33333333333333
 #4 1.423828125
  5 1.5
 #5 1.601806640625
  6 1.6875
 #6 1.802032470703125
  7 1.8984375

单看7声音阶
音律根据是改变弦长

出现了81/64和243/128这样的比例,和谐度会差

从纯律上来找补

1351'音频率比例为4:5:6:8
音1的频率是1那么比率为1 : 5/4 : 3/2 : 2

2467四个音怎么算?
先看音4
很明显14音程与51'是一样的频率比是6:8,即3:4
1音频率是1,那么4就是4/3

也可以翻下去计算
低8度的4与1音程关系与1和5一致为5度,频率比是4:6即2:3
那么低4与1频率比就是2/3,再翻高8度乘以2得到4/3

2音可以先翻高8度,2',5和2'是5度,也是2:3,音5频率是3/2,那么2'就是(3/2)*(3/2)即(3/2)^2
翻下来除以2得到((3/2)^2)/2最终结果9/8

剩下67两个音
46 57 与13之间的音程关系一致,频率比4:5
音45的频率已知
通过关系可以算出
音6是4/3 * 5/4
音7是3/2 * 5/4
纯律的“自然音阶”频率比
F、9/8F、5/4F、4/3F、3/2F、5/3F、15/8F

从转调到平均律

调(diao)的问题,依据这些律制,定音的乐器调好之后,一旦转调,就不和谐了。从根本上限制了音乐中调性的空间

呼之欲出武林绝学之平均律

十二平均律,

首先发明它的是一位中国人,叫朱载堉(yù)是位王子,有兴趣的可以探讨探讨

如今钢琴上用的律法
一个八度分成12个半音音阶,
相邻两个音,高音与低音的频率比值统一为2^(1/12)。
十二平均律是由巴赫首先倡导在钢琴上使用的,钢琴上每个半音具有同等地位,因此这种音律在转调频繁的作品中很有优势。
2的开12次方1.0594630943592953

list_name2=[" 1" ,"#1" ," 2","#2" ," 3" ," 4" ,"#4" ," 5","#5" ," 6" ,"#6" ," 7" , "1'"]

for i in range(0 ,13):
    print(list_name2[i],2**(i/12))

 1 1.0
#1 1.0594630943592953
 2 1.122462048309373
#2 1.189207115002721
 3 1.2599210498948732
 4 1.3348398541700344
#4 1.4142135623730951
 5 1.4983070768766815
#5 1.5874010519681994
 6 1.681792830507429
#6 1.7817974362806785
 7 1.887748625363387
1' 2.0

平均律在算法上是最简的,数学上也是完美的。
在八度上,频率的比值1:2,

也有人指责其缺点是只有一个音是准的。其他的都不在调上。
我觉得还是利大于弊的。


乐队中不同类别的乐器之间的律法不同,声音完满协和是不可能的。
不必纠结各种数字的问题了,毕竟音乐是给人听的,人耳不是仪器,感觉对了就好,99%的人是不会注意到几个音分的差别的。
天地人和
演奏的大家讲究配合。
正如胡琴大家燕守平在京胡与乐队的表演时说过的一个字 ,靠! 拉琴与乐队的合作要往乐队靠一些。
这样才能更和谐更悦耳。