音律入门
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); } }
运行结果如下所示
可见,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); } }
得到结果如下
其中第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 |