数字时代的东方音乐
上QQ阅读APP看书,第一时间看更新

古琴减字谱音高信息计算机自动处理原理

引言

中国的古琴音乐作为中华民族传统音乐宝库中的精品,千百年来以它独具魅力的艺术表现形式,博大的文化内涵,深刻地反映了我国历史长河中不同时期不同阶层人民的思想感情和广泛的社会生活现实。现存琴谱自陈隋至清末达150余种,其中包括同曲目不同谱本的琴曲达3000余首。对这笔浩瀚的、我们引以为豪的宝贵的民族文化遗产的发掘、整理,当然也构成了当代中国民族音乐研究的重要一环。然而,一方面由于现存琴谱数量浩繁,另一方面由于古琴减字谱本质上是一种以记录演奏符号为主的指法谱,并不直观地反映音高和节奏,能够认识、使用或研究这种谱式的音乐工作者极为有限,“以致除少数琴师外,无人敢于问津”王光祈.翻译琴谱之研究.上海:中华书局,1931:导言.,所以直至目前对现存3000多首琴谱的全面的研究工作一直未得到有效的展开。

显然,如果将现存减字谱琴曲的音高和节奏信息全部翻译成目前通行的谱式加以对照,并将众多谱存琴曲的特点加以统计、归纳和分析,对于我们进行古琴音乐和中国音乐史的研究,以及对琴家的打谱工作都是极为有益的。实际上从清代张鞠田、祝桐君、张鹤等人在他们所编的琴谱中加入工尺谱甚至简谱进行对照,到近代中国民族音乐学的先驱王光祈撰写《翻译琴谱之研究》,一直到1949年后陆续出版的许多经过琴家打谱的同五线谱对照的琴曲谱集,都体现了大量有识之士在普及和翻译曾在《红楼梦》中被贾宝玉称为“天书”的古琴减字谱方面所做的不懈努力。近年来,李民雄先生曾呼吁应立即组织一批专门人员来进行古琴减字谱的译谱和打谱工作,以加快古琴音乐发掘和研究的进程,并从理论上对这项工作的可行性进行探讨和研究。李民雄.古琴打谱浅谈.音乐艺术,1982(4):7-13;1983(1):42-53.陈应时先生也认为,“古代琴谱对于音位的记录比较明确,所以把古代琴谱翻译出来,至少可以帮助我们研究琴曲所用的音阶、调式、旋法、曲式结构和演奏手法等方面,故进行这方面的工作很有必要”陈应时.琴律学:157. [上海音乐学院油印教材]。然而面对数量如此浩繁的琴曲,完全靠人工来进行这项工作应该说依然是相当枯燥和繁重的。而在这方面,电子计算机这一现代化的研究工具极大地显示出其快捷方便的优越性,完全可以用来代替人工大显身手。于是从自动翻译音高这一实用目的出发,自1989年下半年起,在上海交通大学计算机音乐研究室的配合下,我们开始了这项利用计算机研究古琴音乐的工作。1990年7月实现了古琴减字谱音高的自动翻译,并作为“音乐信息系统”的组成部分进行了正式鉴定。计算机与信息系统在沪研制成功.文汇报,1990-07-05.在此之后我们又成功开发了具有多种检索、统计分析功能的减字谱计算机分析软件,并建立了相应的文件库。喻辉.古琴减字谱分析软件及其应用前景//首届计算机音乐演示、研讨会论文集,上海交通大学计算机系,1992.同时该软件还在古琴音乐的研究中,帮助我们对《神奇秘谱》中琴曲的音律研究取得了初步结果,喻辉.《神奇秘谱》琴律探微.黄钟,1993(1-2):58-64;1994(1):16-22.计算机翻译的音高译谱也给有关琴家提供了进行打谱尝试的条件。在此之前中科院计算所的陈长林教授也曾在减字谱的计算机谱字复原方面进行了研究尝试陈长林.计算机在古琴音乐研究中的初步应用.电脑学报,1989(7):525-533.,同时我们这项研究也得到了陈先生的鼓励和帮助。目前开发的减字谱分析软件的基础功能是减字谱音高信息的自动处理即音高自动翻译。本文所要讨论的也主要是涉及这一部分功能的程序设计原理和过程。至于谱字复原和其他分析程序方面的设计原理,笔者拟于以后另文阐述。

我们将各种事物发出的消息、情报、指令、资料和信号中所包含的表征该事物的内容称为信息。对于减字谱来说,它在谱面上所发出的信息除了演奏指法信息外,还有音高信息和少量节奏信息。节奏信息主要体现在部分复合指法符号中,而音高信息对于我们来说却是最主要、最明显和最实用的信息。计算机对减字谱音高进行自动翻译,实际上也就是对其音高信息进行自动处理的过程。它主要包括信息的输入、处理和输出三个阶段,而前两个阶段尤其关键。故本文分三个部分着重介绍这两个阶段的设计原理和过程。

一、减字谱编码设计

要解决减字谱音高信息的自动处理即音高翻译问题,首先必须将减字谱输入计算机。在目前计算机对于汉字字模的直接识别尚处于研究试验阶段的状况下,我们对减字谱的输入暂时还只能采用键盘输入的方式。采用这种输入方式就必须首先为减字谱设计一套专用的计算机编码。

减字谱编码的设计也是减字谱音高信息自动处理的一个重要组成部分。由于减字谱同方块字在结构上有某些近似之处,在设计编码的过程中,笔者首先考虑仿用某些现有的汉字编码方式。

目前已经推出的汉字编码方案数量已达700种以上。按其编码的依据可分为字形码、字音码、形音混合码和联想式码等种类。其中上海电工仪器研究所支秉彝和上海电气成套自动化研究所钱锋设计推出的“见字识码”方案对笔者颇有启发。因为减字谱编码的设计首先必须做到操作方便,简单易学,也就是说要使输入者尽量能够见谱识码。“见字识码”汉字编码方案的基本性质是一种形符、音符混合码,其原则是将一个汉字尽可能依其拓朴结构拆成四个字符组成的字符串,以每个字符的汉语拼音的第一个罗马字母(共四个字母)来作为一个汉字的编码。如下例:

这正好同减字谱主谱字的读谱方法接近,减字谱的主谱字也正好分为左手指法、右手指法、弦名和徽名四个部分。如谱字“ ”,读为“大九勾七”,直接套用“见字识码”的方法,该谱字的编码就为“D9G7”。但如果对这种编码方式不加修改,照搬采用的话又会出现以下三个矛盾。一是重码问题,如以“D”打头的减字谱指法符号就有“大”“丁”“豆”等。二是音高信息混乱,如“七”既可能是徽位的名称即七徽,也可能是弦序的名称即七弦。徽位和弦序是计算机翻译音高时的主要依据,必须在输入代码时就加以严格区别,以便于计算机识别。三是某些谱字本身就是作为一个整字运用的,读谱时不再拆成字符,这与前面所述主谱字的读法有区别,也同“见字识码”必须将每个汉字分为四个字符的原则有悖,如“上”“下”“弗”“合”等。

在解决了以上矛盾的基础上经过反复推敲,笔者以北京古琴研究会编印的《古指法考》中所列200多个指法符号为依据,拟定了一套减字谱计算机编码。这套编码是将减字谱谱字的“音”“形”“意”三个方面结合起来,以“音”为基础,以不损失原谱信息,尽量减少每个谱字输入时的击键次数和避免重码为原则进行设计的。这套编码与上述“见字识码”等普通的汉字编码方法相比有以下几个特点。一、由于全部谱字指法符号不超过300个,较容易区分和记忆,主谱字的偏旁和作为整字的指法符号结合起来统一进行编码,即有些代码仅为一个谱字的偏旁,有些代码是代表一个汉字,这样可以大大加快输入速度。二、为了避免重码,谱字的代码并不等长,代码以两个字母为主,有些符号也采用三个或一个字母的编码。对于琴谱中一些出现较频繁的符号如左手指名符号“大”“亻”“中”“名”等尽量采用一个字母的编码,以达到减少击键次数之目的。三、将谱字中某些“意”的因素考虑进编码中。为了将表示徽位和弦序的数字的不同意义加以严格区别,编码规定所有表示弦序的数字前都加上“0”,而前面没有加“0”的数字即为徽位的名称。这样就为计算机分析减字谱音高信息进而翻译音高以及谱字的复原提供了基础。下面为一些常用谱字符号代码的举例:

右手指法:

左手指法:

其他谱字:

二、徽位的音高参数及音位表

许多现存历代琴谱以及1949年后出版的《古琴初阶》《民族乐队乐器法》等书中,都附有正调定弦的按音和泛音音位图来为人们标示每条弦每个徽位上的具体音高。然而古琴正调外尚有30多种外调定弦方式,如果为每一琴调不同固定音高的定弦都设计一张音位表来解决音高翻译问题,显然有使用繁复之弊。李民雄先生曾设计过一张七个不同音高散音的古琴按音和泛音音位表,中国汉字编码研究会.汉字编码方案汇编.北京:科学技术文献出版社,1980.在使用这张表时,当散音遇有升降半音或八度变化时,表中徽位的音高也随即做相应变化,这样可方便人工查阅减字谱的音高。

笔者在设计计算机软件的过程中,从计算机程序编制从简的要求出发,对古琴音位表的问题重新进行了考虑,在吸取上述音位表优点的基础上,根据徽位的音高参数重新设计了一张更为简化的音位表以方便计算机自动翻译音高。所谓徽位的音高参数是指徽位上按音和泛音距散音音高的音程距离,它以小二度为单位进行递加。在任何一条弦上这个参数都是不变的,计算机在明确某个主谱字散音音高后,再在其上方加上对应徽位的音高参数就可以确定它的音高。下面即为笔者所设计的应用于计算机程序中的古琴按音音位表(见表1)和泛音音位表(见表2)。

表1 古琴按音音位表

表2 古琴泛音音位表

散音的音高参数为“零”。

将以上各徽位和散音的音高参数首先输入计算机中,在输入琴曲时再根据每首乐曲的琴调即定弦为每条弦的空弦音高赋值。这样,计算机在运行中只要明确了某条弦某徽位在泛音还是在按音中发音,就会将该弦空弦的赋值音高加上与其对应的徽位的音高参数而算出谱字的音高。比如某条弦赋值音高为“C”,在该弦上演奏音高参数为5的十徽按音时,计算机会在C上加上5个小二度而得到F的音高。

三、音高翻译程序流程图的设计

完成了减字谱计算机编码和带有音高参数的音位表的设计后,我们就进入了实质性的减字谱音高信息处理即音高翻译的程序设计阶段了。

我们知道,在软件工作中,人们一般先设计出合理的流程图(或称框图)来进行程序的设计和确定程序的结构。流程图是对程序方案形象、直观的描述。只有设计出正确的流程图,程序的编制和运行才能合理、可靠。减字谱音高翻译程序流程图的设计首先要求我们正确归纳出减字谱谱字序进时音高表达的内逻辑,从而能够给程序的运行以明确无误的指令。减字谱形式的琴谱并不完全是由完整谱字(同时包括弦序和徽位)的连续进行构成的,乐谱中经常有各种省略徽位、弦序的情况。如下面一段谱字(引自《神奇秘谱·华胥引》):

上例中,下面标以“ ”的谱字仅标出弦名,该弦名同前面谱字中的徽名相对应。下面标以“”的谱字仅标出徽名,但却是同其前面谱字的弦名相对应的。

这样,就产生了有了徽名如何找与其相对应的弦名,有了弦名如何找与其对应的徽名,以及到底是徽名在前还是弦名在前的问题。这对于能识谱的琴家或音乐学家来说并不成为一个问题。然而要使计算机能够自动识别,人们就必须绘出明确无误的指令,使其在任何情况下都能够对上述问题予以准确无误的判断。经过对减字谱记谱方式的深入分析后,我们发现了它的一些内在规律。如虽然一个弦名后面可对应几个徽名,一个徽名后面也可以对应几个弦名,但任何琴曲总是先出现徽名(包括散音),接着出现对应的弦名。任何徽名只要紧跟其后的仍是徽名,它对应的弦名就在其前面,否则便同其后的弦名再对应一次。根据这些规律,笔者设计了下面的音高翻译程序流程图(见图1)。

图1 音高翻译程序流程图

图1中x、y、w、q均为减字谱的音高信息。减字谱的音高信息主要由定弦、弦序和徽位三大要素组成,其中定弦在乐谱输入时已经明确并对每条弦的具体音高赋值。谱面上的音高信息主要反映为弦序和徽位,其中徽位名(包括散音)由x代表,弦序名由y代表,xl和yl分别代表徽位的音高参数和所在弦散音的赋值。z代表所计算出的音高,所有减字谱形式的乐谱首先出现的是含有音高参数的徽位名或者散音,其后必定出现徽位所在的弦名,经过计算可以得出第一个谱字的音高,然而在其后面就有可能出现两种不同情况。第一种情况是不出现音高信息,那么程序结束。大多数情况下是第二种情况,即出现音高信息。这个音高信息既可能是弦名,也可能是徽名,前者如“六五”的六弦等,后者如“上九上八”的九徽等。如果是弦名的话,即同前一徽名对应。将前一弦名y换成当前的弦名w,算出音高。如果是徽名的话,情况就比较复杂,必须再看其后为弦名、徽名或是否出现音高信息。如果其后不再出现音高信息或者是徽名的话,如“上九上八”的九徽,与该徽名对应的是前一弦名,于是将前一徽名x同当前徽名w调换,即将前例的十徽换成九徽再同七弦对应算出音高。如果其后出现弦名的话,如“ ”,就将这个九徽同后一弦即六弦对应算出音高。如此不断循环直至谱中不再出现音高信息。

以上流程图所概括的仅是减字谱高音翻译程序最基本的原理,实际上,在程序运行过程中还会遇到许多要求程序做进一步调整的符号,如“ dq”为演奏当前弦的散音,“ dz”表示弦名重复一次,“ ”与“ ”之间使用泛音音位表等,具体的流程图也更加复杂。限于文章篇幅,这里就不做赘述了。

在当代新技术革命浪潮的冲击下,利用电子计算机来对目前留存的数千首中国古谱进行定量研究的前景应该说是广阔的。计算机古谱研究首先必须解决音高自动翻译的问题。从目前该软件的使用情况来看,它能够正确翻译出减字谱谱面上予以明确记载的音高,证明我们在程序的音高信息自动处理部分的设计思路是有效、合理的。然而,也应该承认,由于古琴减字谱本身存在着一个不断完善的历史过程,历代琴谱刊印者也有对许多细节符号的运用不够统一和规范的问题,该软件在音高翻译方面也存在一些需要进一步完善的地方。如在徽分出现以前明代琴谱中的徽间音,其音高参数并不固定,只大约记载“八、九徽间”“七、八徽间”等。再比如“立zhn”这个符号表示在两个本位音之间出现一个其上方的装饰音,但这个装饰音具体距本位音几度音程也是不明确的。这些都是古琴减字谱音高信息自动处理研究中尚待进一步深入的地方。而这些问题的彻底解决,也有待于计算机在诸如调式自动识别等难题研究上的进一步突破和我们主观上的进一步努力以及更多的同仁对这项工作更积极的参与、配合和支援。

该软件的研制在具体的程序编制和计算机技术方面得到了上海交大计算机音乐研究室朱火光老师的通力协助,特此致谢。


原载于《交响》1993年第3期。