微机“音乐曲集”的设计方法

Author: 中国科学院地理所 徐永晶 Date: 1992-09-04

        1.音乐音符编码方式
        长期来,不少人在探讨微机上音符的编码方式(简称音码),但一直没有重大突破。找出实用性强的音码,对于计算机应用及教学是很有意义的事情。
        我们的音码设计方案可根据不同需要随机应变,而且易于掌握。简言之就是:将乐谱(简谱)中音符对应系统的音频值,以合理的数字或字符串来替代,形成音码;选择合适的延迟(delay)时间对应于音乐节拍并编码。举例列表如下:
        简谱音符 … 1 2 3 4 5 6 7
        音频值   … 131 147 165 175 196 220 247
        音码     … -1 -2 -3 -4 -5 -6 -7
        1 2 3 4 5 6 7 1 …
        262 294 330 349 392 440 494 523 …
        1 2 3 4 5 6 7 11 …
        以此类推:若音符为1~7,则音码为-1m;若音符为1~7,则音码为1m,其中m=1,2,3,4,5,6,7,与8进制类似。关于音乐的节拍:如果选定1/16拍所对应的延迟时间为C秒,则节拍的编码表就是:
        节拍数 1/16 1/8 1/4 1/2 1 …
        节拍编码 1C 2C 3C 4C 5C …
        2.“歌曲集”的程序设计
        我们在IBM PC/AT机上,利用Turbo PASCAL的声音和时间控制功能(SOUND,DELAY)进行了实验,取得良好的效果。下面简单介绍一下“歌曲集”和程序设计:
        在此我们采用了比较先进的“状态化”设计法,即把程序整体看成由一系列状态、子状态构成。结合本题,可以分为如下状态和步骤:
        初始化状态一建立歌曲目录索引文件。在程序运行开始,首先显示此文件内容以便用户查询。当用户通过菜单选择某一歌曲后,程序立即到该曲音码文件中搜索音码;音码文件格式按上节规则组织,即一个音码一个节拍编码……循环往复至曲终,以上两文件由EDIT或WS等来建立。
        执行状态__在从目录索引文件和音码文件获得指定曲目信息后,将其音码和节拍与相对应的音频值和延迟时间匹配,调用声音和时间延迟控制功能函数顺序输出音码及节拍序列,即奏出乐曲。
        3.结论
        现在我们的曲集中已有《音乐之声》、《游击队歌》、《新年快乐》等曲目,另外,若加入新曲目只要修改索引文件、建立音码文件即可,十分方便。通过初步实验,证明本项目的设计方案是可行的。为微机“音乐小辞典”的设计奠定了重要的基础。