音律入门

MIDI音符有128个,用0~127来表示,60表示中音C(也就是中音do).

一个音阶包含12个音符,分别用C,C#,D,D#,E,F,F#,G,G#,A,A#,B.

C,D,E,F,G,A,B表示do re mi fa so la xi,即1 2 3 4 5 6 7

音阶:频率为f和频率为2*f的两个音之间的音符构成的点集合叫做音阶.

对于一根长为x的琴弦,它的频率为f.则对于长度为x/2的琴弦,它的频率为2f.琴弦长度跟这根琴弦所发频率成反比.即:常数k0=f*x.

在长度为x的琴弦上,从0到x逐点固定,就会发出频率大于f的所有声音.但人们觉得频率为f的声音和频率为2f,3f,4f......的声音听起来有点像,这其实跟人的视觉是一个道理,人类的感官成像都是闭合的.比如紫光频率很高,人眼看紫光觉得和红光有点接近.这就是颜色闭环.光本没有颜色,光只有频率.颜色只是人眼的感知.光的频率是无限的,可以从0~无数大的频率,而人眼中的颜色是有限的,这就决定了颜色-频率之间的映射是多对一的满射.实际上颜色color=frequency%人眼的颜色长度.实际上,人眼对于光频率的描述,是通过红绿蓝三种感光细胞实现的.正是因为如此,人们才能够利用三原色红绿蓝来表示所有的光.

因为人耳成音闭合原理,人们着重研究一个声音周期,即从f到2f之间的变化,也就是长为x的琴弦到长为x/2的琴弦,琴弦缩短过程中,声音发生了哪些变化.人们对这段f到2f的频率变化研究了很长时间,提出了很多种音律:如五度相生律,十二平均律,完美律,纯律.这些音律就是根据频率给声音起名字,就像根据光的频率对光的颜色起名字一样.

五度相生律:我国的传统音律.它的生成方法叫做"三分损益法".下面描述三分损益法的原理:宫音为基本音,琴弦长度为1;徵音琴弦长度为2/3,这叫"三分损一";商音琴弦长度为徵音的4/3,这叫"三分益一";羽音琴弦长度为商音的2/3,这又是三分损一;角音琴弦长度为羽音的4/3,又是三分益一.如此反复交替执行"三分损一,三分益一",古人希望最终能够形成一个闭环,但是最后只是一个近似的闭环."三分损益法"是古代制作乐器的重要依据,它简单易行,明了直观."宫商角(jue,2声)徵(zhi,三声)羽"称为"五音",那么五音之间频率是怎样的呢?宫音频率为1;徵音弦长2/3,频率为3/2;商音弦长为8/9,频率为9/8;羽音弦长16/27,频率为27/16;角音弦长64/81,频率为81/64.如果在角音后面再来一个音,弦长为128/243,频率为243/128,古人认为这个数字跟2太像了,这样五音就构成了一个循环.实际上,三分损益法的本质就是以3/2为频率公比,在1和2之间进行插值.

x1=1

x2=x1*(3/2)=3/2

x3=x2*(3/2)=9/4,因为9/4>2进入了下一个周期,这样不好,因为频率为f和2f的两个声音等价,故x3=9/8

x4=x3*(3/2)=27/16

x5=x4*(3/2)=81/32,因为此数大于2,进入下一周期,所以折半,x5=81/64

x6=x5*(3/2)=243/128,此数约等于2,古人认为它回到了起点.

可以发现,通过三分损益法反复交替执行"三分损一,三分益一"得到的五音,频率构成公比为3/2的等比数列.数学原理就是:频率与弦长成反比,弦长交替变为原来的2/3和4/3,频率始终变为原来的3/2倍.五音的本质就是在频率1到频率2之间插值构成等比数列,公比为3/2.实际上公比应该是2的1/5才对.但是2的1/5约等于3/2.五音就像一把刻度尺,它不够精细,但也很好用.中国古代许多名曲民歌只用这五个音就唱的婉转动听,回荡百年.五音跟古代的五行有很大关系:

宫,五行属土,其音漫而缓,对应方位为"中",对应季节为"夏秋之交",对应五脏为脾,对应五官为唇.

徵,五行属火,其音雄以明,对应方位为"南",对应季节为夏,对应五脏为心,五官应舌.

商,五行属金,其音促以清,对应方位为"西",对应季节为秋,对应五脏为肺,五官应鼻.

羽,五行属水,其音沉以细,对应方位为"北",对应季节为冬,对应五脏为肾,五官应耳.

角,五行属木,其音呼以长,对应方位为"东",对应季节为春,对应五脏为肝,五官应眼.

三分损益法取的是三分之一点,也就是2/3处,人们发现弦长为2/3的音和弦长为1的音很和谐动听.那么弦长为3/4时呢?人们发现频率4/3跟频率为1的也很和谐,但是和谐程度比不上3/2的频率.于是人们转而求跟3/2频率和谐的音9/4(即9/8)......以上由3/2衍生出6个音加上次和谐的4/3频率音,构成七音.那么弦长为3/5和4/5时呢?比较不和谐,所以以后的音就榜上无名了.

1,do,宫

9/8,re,角

81/64,mi,羽

4/3,fa,变徵

3/2,so,商

27/16,la,徵

243/128,xi,变宫(因为这个音跟2很接近,而2也是宫音,故称变宫)

古人对声音的描述十分形象完美,比如变徵之音显得悲凉,徵音显得肃杀,羽音显得慷慨.在<史记>荆轲刺秦王易水送别时,对于声音的描述十分漂亮.

太子及宾客知其事者,皆白衣冠以送之。
至易水上,既祖,取道。高渐离击筑,荆轲和而歌,为变微之声,士皆垂泪涕泣。
又前而为歌曰:“风萧萧兮易水寒,壮士一去兮不复还!”复为慷慨羽声,士皆瞋目,发尽上指冠。於是荆轲遂就车而去,终已不顾。

不管什么音律,有一点是必要的,即插值构成等比数列.我们要寻找的就是2开x次方,这个x就是在[1,2)之间插入多少个点,也就是一个周期的长度.

上述解释都是让琴弦变短频率变高,实际上也可以进行另一种解释:琴弦变长,频率不断降低,声音越来越沉闷,知道变成次声波,变成频率为0,也就是琴弦太长了,长的都无法震动了.不仅仅局限于琴弦,任何一种柱状发声器,理想状态下都满足频率和长度成反比的规律.

人们认为三分损益法+偷来的两个变音构成的七个音符有点复杂,这对于乐器制作还是有点麻烦,比如羽音81/64,这需要长度64/81的琴弦,这样的琴弦有两种获取方法,方法一分成64份,方法二没法一步到位,必须通过三分损益法不断迭代才能获得.于是人们寻求一种简单方法.由此诞生了"纯律".

“纯律”的重点是让各个音尽量与主音和谐起来,也就是说让各个音和主音的频率比尽量简单。“纯律”的发明人是古希腊学者塔壬同(今意大利南部的塔兰托城)的亚理斯托森努斯(Aristoxenus of Tarentum)。(东方似乎没有人独立提出“纯律”的概念。)此人是亚理士多德的学生,约生活在公元前3世纪。他的学说的重点就是要靠耳朵,而不是靠数学来主导音乐。他的书籍留下来的只有残篇,不过可以证实的是他提出了所谓“自然音阶”。
自然音阶也有7个音,但和“五度相生律”的7声音阶有不小差别。7个自然音阶的频率分别是:1、9/8、5/4、4/3、3/2、5/3、15/8。确实简单多了吧?也确实好听多了。这么简单的比例,就是“纯律”。

为什么非要在1和2之间插入6个音符呢?因为(3/2)^x=2^y.这里的x就是音符的个数,当x=6时,243/128大约为2.现在的问题就是解决(3/2)^x=2^y.让这个方程尽量成立.这个方程等价于3^m=2^n.这为寻找更合适的插值个数提供了思路.

那么问题来了,求3^m=2^n的最佳解,最佳解的定义是(3^m)/2^n尽量接近1,而不是3^m-2^n尽量接近0.

    public static void main(String[] args) {
        int a2[] = new int[30];
        int a3[] = new int[30];
        a2[0] = a3[0] = 1;
        for (int i = 1; i < a2.length; i++) {
            a2[i] = a2[i - 1] * 2;
            a3[i] = a3[i - 1] * 3;
        }
        int j = 0;
        for (int i = 0; i < a2.length; i++) {
            while (a3[j] < a2[i])
                j++;
            if (a3[j] == a2[i]) {
                System.out.println(i + " " + j);
                continue;
            }
            double one = (double) a3[j] / a2[i],
                    two = (double) a2[i] / a3[j - 1];
            System.out.printf("%d %d %f
", i, j, one > two ? two : one);
        }
    }

运行结果如下所示

0 0
1 1 1.500000
2 2 1.333333
3 2 1.125000
4 3 1.687500
5 4 1.185185
6 4 1.265625
7 5 1.580247
8 6 1.053498
9 6 1.423828
10 7 1.404664
11 7 1.067871
12 8 1.601807
13 9 1.248590
14 9 1.201355
15 10 1.664787
16 11 1.109858
17 11 1.351524
18 12 1.479811
19 12 1.013643
20 13 1.520465
21 14 1.315387
22 14 1.140349
23 15 1.710523
24 16 1.169233
25 16 1.282892
26 17 1.558977
27 18 1.039318
28 18 1.443254
29 19 1.385758

可见,2^19约等于3^12,也就是我们得到的十二音符就是:

1,(3/2),(3/2)^2,(3/2)^3,...,(3/2)^10,(3/2)^11

(3/2)^12已经非常接近2^7了,就已经相当于另一个周期的开始了.

照此规律,我们计算一下按照三分损益法得到的十二音符频率

    public static void main(String[] args) {
        int up = 1, down = 1;
        for (int i = 1; i < 13; i++) {
            up *= 3;
            down *= 2;
            if (up > down * 2) {
                down *= 2;
            }
            System.out.printf("%d %d/%d
",i ,up, down);
        }
    }

得到结果如下

1 3/2
2 9/8
3 27/16
4 81/64
5 243/128
6 729/512
7 2187/2048
8 6561/4096
9 19683/16384
10 59049/32768
11 177147/131072
12 531441/524288

其中第12项约等于1,也就是新的起点.第11项约等于1.3515243530273438,这个数字跟4/3=1.3333很像,而4/3这个音历史悠久,所以第11项就被4/3给代替了.至此,三分损益法衍生出了十二音符.十二音符是五音的细化,是对声音频率更精确的刻画.一切音律都是尺子,五音尺子不够精确,十二音尺子比较精确.十二音音阶用字母表示为C,C#,D,D#,E,F,F#,G,G#,A,A#,B.

能不能把“五度相生律”的12声音阶再往前发展一下呢?可以的。12声音阶的依据就是(3/2)^12≈129.7,和2^7=128很接近,按照这个思路,继续找接近的值就可以了嘛。还有人真地找到了,此人就是我国西汉的著名学者京房(77 BC-47 BC)。他发现(3/2)^53≈2.151×10^9,和2^31≈2.147×10^9也很接近,于是提出了一个53音阶的新音律。要知道古人并没有我们的计算器,计算这样的高次幂问题对他们来说是相当麻烦的。当然,京房的新律并没有流行开,原因就是53个音阶也太麻烦了吧!开始学音乐的时候要记住这么多音符,谁还会有兴趣哦!但是这种努力是值得肯定的,也说明12声音阶也不完美,也确实需要改进。

三分损益法衍生的十二音符弊端在于有两种半音(如果把第11项音符用4/3替换,那就有了3中半音),半音指的是两个相邻音符频率之比,有1.06787109375和1.0534979423868314两中半音.两种半音带来的转调问题难以解决.

转调,转调的意思是将同一段旋律用两种音唱出来,这两种音像是在频率上平移一样.比如,我的声音在低音do到低音mi之间变化,你的声音在中音re到中音fa之间变化.这就相当于我的声音从低音do平移到中音re.在"三分损益法"衍生的十二音符中,因为有两个半音,这就导致无法进行平移,一旦平移人就能明显听出差异来.

明朝皇族世子朱载堉精通音律,长于算数,提出"十二均分律".既然把声音分成12份,为啥抱着3/2这个公比不松手?为啥不用2开12次方作为公比,那样多均匀.于是十二均分律诞生了.它们公比为2开12次方.

有了12个音符,人们定义两个音符之间的音数之差为音程.2个相邻音符之间的距离成为半音.两个半音构成一个音数.

纯八度: 音数为6的音程称为纯八度.

减八度:音数为5又二分之一的音程称为减八度.

增八度:音数为6又二分之一的音程成为增八度.

按照十二均分律,如何计算某个音符的频率呢?计算一下两音之间的音程,用等比数列计算公式就可以了.人们规定A4(也就是中音C的上行A音)的频率为440Hz.也就是MIDI中的69号音符的频率为440Hz,MIDI中编号为x的音符频率为y=440*2^((x-69)/12)Hz

MIDI音符对照表

C C# D D# E F F# G G# A A# B
0 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 32 33 34 35
36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69 70 71
72 73 74 75 76 77 78 79 80 81 82 83
84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99 100 101 102 103 104 105 106 107
108 109 110 111 112 113 114 115 116 117 118 119
120 121 122 123 124 125 126 127
原文地址:https://www.cnblogs.com/weiyinfu/p/5882649.html