Excel在民族律制学方面的应用

2020-09-12 14:04王维涛
科技风 2020年23期

王维涛

摘 要: 世界各民族都有各自的音乐传统,学习世界各民族的音乐,一定会涉及民族律制的学习。受限于民族乐器及诸多原因,会给学习者带来一定的困难。依据拙文《Excel在音律学习方面的应用》提供的方法,或许能给学习者带来一些帮助。

关键词: 民族律制;四分之三音体系;Shruti

我们来看我们民族的三分损益律制。缪天瑞先生在《律学》(增订版)中论述,古代中国使用的十二律(三分损益律)中的黄钟律,在各历史时期均有不同,大概在如今使用音名的c#1至a1之间。若依据考古晚周的尺,其长度约合今日公制230886厘米。 使用这种尺的九寸为长度,以三分为内径,制作开管律管,其发音频率约为693.5赫兹,可得古代的黄钟的高度,接近如今普遍使用十二平均律的f2音高。在建立的音分值与音高频率表中,修改0音分值对应的频率值为693.5赫兹,重新计算表中音分值与音高频率对应值,以黄钟0分音、大吕114分音、太簇204分音、夹钟318分音、姑洗408分音、仲吕522分音、蕤宾612分音、林钟702分音、夷则816分音、南吕906分音、无射1020分音、应钟1110分音编写代码,可模拟古代十二律吕的音高音响。

Declare Function APIBeep Lib "kernel32" Alias "Beep"(ByVal dwFreq As Long,ByVal dwDuration As Long)As Long

Public Sub array_get_value_shi_er_lv()

Dim cent_frequ(1201,2)As Single '数组

Dim i,j As Integer '循环变量

Sheets(1).Activate

For i=0 To 1200 '数组赋值

For j=0 To 1

cent_frequ(i,j)=Sheets(1).Cells(i+1,j+1).Value

Next

Next

APIBeep cent_frequ(0,1),2000   ‘ 黄钟

APIBeep cent_frequ(114,1),2000  ‘ 大吕

APIBeep cent_frequ(204,1),2000  ‘ 太簇

APIBeep cent_frequ(318,1),2000  ‘ 夹钟

APIBeep cent_frequ(408,1),2000  ‘ 姑洗

APIBeep cent_frequ(522,1),2000  ‘ 仲吕

APIBeep cent_frequ(612,1),2000  ‘ 蕤宾

APIBeep cent_frequ(702,1),2000  ‘ 林钟

APIBeep cent_frequ(816,1),2000 ‘ 夷则

APIBeep cent_frequ(906,1),2000  ‘ 南吕

APIBeep cent_frequ(1020,1),2000  ‘ 无射

APIBeep cent_frequ(1110,1),2000  ‘ 应鐘

End Sub

若用上述制作律管数据,制作一端闭管律管,其发音频率约为346.75赫兹(《中国音乐史》王光祈),也可得古代的黄钟的高度(低八度值),接近如今普遍使用十二平均律的f1音高。在音分值与音高频率表中,修改0音分值对应的频率值为346.75赫兹,重新计算表中音分值与音高频率对应值,或使用原音分值与音高频率表中的值,修改代码中APIBeep函数调用的频率参数值,除2,以实现对一端闭管律管,古代黄钟音高高度的模拟。

使用以0音分值对应的频率值为346.75赫兹,重新计算表中音分值与音高频率对应值,十二律的五声音阶音分值,0,204,408,702,906,(宫、商、角、徵、羽),十二律的七声音阶音分值,0,204,408,612,702,906,1110,(宫、商、角、变徵、徵、羽、变宫)。

我们来看阿拉伯民族的乐制,四分之三音体系是其民族音乐的主要特征。阿拉伯民族分布区域广大(中亚、西亚、北非等地),从古至今其乐制也在不断演变,我们以近代阿拉伯人米哈伊尔米沙卡(Mikhail Mishaqa 1800-1888外交官、内科医生、历史学家、音乐理论家)的二十四平均律为基础给出模拟音高音响代码(Maalouf,Shireen(2003)."Mikhā'il Mishāqa:Virtual Founder of the Twenty-Four Equal Quartertone Scale",Journal of the American Oriental Society,Vol.123,No.4.(October-December 2003),pp.835-40.),代码数据,以0分音对应中央 C=261.626赫兹重新计算音分值与音高频率对应值。

Declare Function APIBeep Lib "kernel32" Alias "Beep"(ByVal dwFreq As Long,ByVal dwDuration As Long)As Long

Public Sub array_get_value_24et()

Dim cent_frequ(1201,2)As Single '数组

Dim i,j As Integer '循环变量

Sheets(1).Activate

For i=0 To 1200 '數组赋值

For j=0 To 1

cent_frequ(i,j)=Sheets(1).Cells(i+1,j+1).Value

Next

Next

APIBeep cent_frequ(0,1),2000

APIBeep cent_frequ(50,1),2000

APIBeep cent_frequ(100,1),2000

APIBeep cent_frequ(150,1),2000

APIBeep cent_frequ(200,1),2000

APIBeep cent_frequ(250,1),2000

APIBeep cent_frequ(300,1),2000

APIBeep cent_frequ(350,1),2000

APIBeep cent_frequ(400,1),2000

APIBeep cent_frequ(450,1),2000

APIBeep cent_frequ(500,1),2000

APIBeep cent_frequ(550,1),2000

APIBeep cent_frequ(600,1),2000

APIBeep cent_frequ(650,1),2000

APIBeep cent_frequ(700,1),2000

APIBeep cent_frequ(750,1),2000

APIBeep cent_frequ(800,1),2000

APIBeep cent_frequ(850,1),2000

APIBeep cent_frequ(900,1),2000

APIBeep cent_frequ(950,1),2000

APIBeep cent_frequ(1000,1),2000

APIBeep cent_frequ(1050,1),2000

APIBeep cent_frequ(1100,1),2000

APIBeep cent_frequ(1150,1),2000

APIBeep cent_frequ(1200,1),2000

End Sub

包含四分之三音程的阿拉伯木卡姆(maqma)音阶示例

巴亚蒂(bayati)D E  F G A B C D

(200,350,500,700,900,1000,1200,200)括号内为音分值

拉斯特(rast)CDE  FGAB C上行(ascending)

(0,200,350,500,700,900,1050,1200)括号内为音分值

CB AGF E  D C 下行(descending)

(1200,1100,900,700,500,350,200,0)括号内为音分值

我们来看南亚地区的印度传统音乐,斯鲁蒂(Shruti or s ' ruti 梵语)是印度传统音乐的重要概念。印度教古老的吠陀经(Vedic texts or Vedas)经文集中指出,斯鲁蒂为人的听觉能感知分辨到得或歌手、乐器能发出得最小音高的音程。印度古典文艺理论家,婆罗多(Bharata 公元前200至公元200),在Nātya-s ' āstra(戏剧论)论集中描述,在每个八度内,讨论识别二十二个斯鲁蒂(Shruti)和七个斯瓦拉(swara)。

这里给出目前通用的二十二个斯鲁蒂名称及音分值,Chandovatī 0;Dayāvatī 90;Ranjanī 112;Ratikā 182;Raudrī 203;Krodhā 294;Vajrikā 316;Prasārinī 386;Prīti 407;Mārjanī 498;Kshiti 519;Raktā 590;Sandīpanī 612;lāpinī 702;Madantī 792;Rohinī 814;Ramyā 884;Ugrā 906;Ksobhinī 996;Tīvrā 1017;Kumudvatī 1088;Mandā 1110;Chandovatī 1200。

编写模拟八度内二十二个斯鲁蒂音高音响代码,代码数据,以0分音对应中央 C=261.626赫兹重新计算音分值与音高频率对应值。

Declare Function APIBeep Lib "kernel32" Alias "Beep"(ByVal dwFreq As Long,ByVal dwDuration As Long)As Long

Public Sub array_get_value_22shruti()

Dim cent_frequ(1201,2)As Single '数组

Dim i,j As Integer '循环变量

Sheets(1).Activate

For i=0 To 1200 '数组赋值

For j =0 To 1

cent_frequ(i,j)=Sheets(1).Cells(i+1,j+1).Value

Next

Next

APIBeep cent_frequ(0,1),2000

APIBeep cent_frequ(90,1),2000

APIBeep cent_frequ(112,1),2000

APIBeep cent_frequ(182,1),2000

APIBeep cent_frequ(203,1),2000

APIBeep cent_frequ(294,1),2000

APIBeep cent_frequ(316,1),2000

APIBeep cent_frequ(386,1),2000

APIBeep cent_frequ(407,1),2000

APIBeep cent_frequ(498,1),2000

APIBeep cent_frequ(519,1),2000

APIBeep cent_frequ(590,1),2000

APIBeep cent_frequ(612,1),2000

APIBeep cent_frequ(702,1),2000

APIBeep cent_frequ(792,1),2000

APIBeep cent_frequ(814,1),2000

APIBeep cent_frequ(884,1),2000

APIBeep cent_frequ(906,1),2000

APIBeep cent_frequ(996,1),2000

APIBeep cent_frequ(1017,1),2000

APIBeep cent_frequ(1088,1),2000

APIBeep cent_frequ(1110,1),2000

APIBeep cent_frequ(1200,1),2000

End Sub

印度民族傳统音乐中二种基本音阶:

萨音阶(shadja-grama):

Sa(4,0) Ri(3,182) Ga(2,294) Ma(4,498) Pa(4,702) Da(3,884) Ni(2,996) 括号内数值为音之间的斯鲁蒂数及音的音分值。

玛音阶(madhyama-grama):

Sa(4,0) Ri(3,182) Ga(2,294) Ma(4,498) Pa(3,612) Da(4,884) Ni(2,996) 括号内数值为音之间的斯鲁蒂数及音的音分值。

世界其他地区各民族的乐制,可参照上述方法进行分析学习。

参考文献:

[1]缪天瑞.律学[M].北京:人民音乐出版社,1996.

[2]王光祈.中國音樂史[M].上海:三联书店,2014.

[3]Maalouf S.Mikhail Mishaqa:Virtual Founder of the Twenty-Four Equal Quartertone Scale[J].Journal of the American Oriental Society,2003,123(4):835.

[4]Kak S.The Idea of 22Srutis[J] .Louisiana State University, 2001.