当前位置:
文档之家› 基于事件模型的MusicXML解析器
基于事件模型的MusicXML解析器
1
武汉科技学院计算机科学学院 2009 年毕业设计论文
1.2 发展状况
现在,有许多的音频文件格式,但是并不是所有的数据格式对音乐数据交换 有意义,因为这里我们谈到的音乐数据指的是电子乐音和电子乐谱。我们接触到 的大多数都是音频格式,记录声音是直接的或间接的记录声音的波形,直接的记 录波形的方式对音乐数据 的表示作用不大,几乎不大可能从波形中得到乐谱信 息,一段 8.8kHz 的高音质 CD 虽然完全重现了声音,但是那些 0 和 1 用来表示波 形的数据只是记录的混合后的波形数据,无法得到乐器,拍号,节奏等音乐特征 信息。间接的记录波形,从间接的数据中利用软件模拟出波形的方式,恰当的中 间数据更容易帮助分析乐谱, MIDI 是间接记录声音的方式,它在电子音乐交换 中具有重要地位, 在电子乐器交换中具有重要的地位。MIDI(musical instrument digital interface)[4-7] 是一种工业的电子乐器通讯协议, MIDI 不直接记录声 音波形,只传输音调和音乐强度数字信息,MIDI 文件的数据特点便于分析乐谱, 但乐谱分析往往不能正确还原乐谱,毕竟 MIDI 只记录了声音信息,乐谱的小节, 音乐符号具体的表现没有记录,一般的基于 MIDI 的解释都是基于音轨的分析方 法,同时各种软件开发商定制的文件格式辅助存储音乐符号信息,开发者的思想 直接影响乐谱信息。从音乐家在电子乐器视谱演奏,再从录制的 MIDI 中用各种 软件分析乐谱和原谱对照谱子很可能大相径庭,各不相同。早期的乐谱软件都是 基于 MIDI, 同时为了弥补对乐谱呈现的短处, 这些软件都会对 MIDI 进行在包装 , 设计数据结构辅助存贮乐谱信息,各种软件厂商缺乏统一,使得这些乐谱只能部 分的工作在桌面程序中,无法实现阵阵意义的网络音乐服务。笔者大量接触过著 名的 cakewalk 和 guitar pro 乐谱软件,它们就是分别自定义了文件格式 .wrk 和.gtp 用于辅助存贮乐谱信息,guitar pro 是功能强大的吉他谱软件,为了满 足吉他的特点,被包装的 MIDI 文件上有很多的细节处理,如:为了表现扫弦的 过程和方向,和弦各级音都按时间进行了散列,而在 cakewalk 中和弦被认为是 在同一时间点上产生的声音事件,当把 MIDI 文件从一种软件导出,再在另外一 种软件中导入时,乐谱完全不堪入目。 基于 MIDI 在乐谱交换上的不足,人们又开发了新的数据交换格式,这个时 期最具有代表性的是 NIFF[8](notation interchange file format), 它将 音乐
4
武汉科技学院计算机科学学院 2009 年毕简介 1996 年,万维网协会(或者叫 W3C,)开始设计一种可 扩展的标记语言, 使其能够将 SGML 的灵活性和强大功能与已经被广泛采用的 HTML 结合起来。这种后来变成 XML 的语言继承了 SGML 的规范,而且实际上就是 后者的一个子集。从 SGML 入手使得该设计小组能够将精力集中在简化已有的成 果上。SGML 已经提供了一种可以无限扩展的语言,它允许任何人能够根据自己 的需要加以扩充。XML 之所以要较 SGML 更为简化,很大程度上是出于易用 性的 考虑:人们对标记的读写过程应该使用现有的、简便通用的工具,同时,我们也 应当简化计算机对文档和数据交换的处理。由于有太多的可选功能, SGML 变得 过于复杂,以至于很难编写出针对这种语言的普通解释器,而 XML 的解释器则简 单得多。此外,XML 使得现有的 Internet 协议和软件更为协调,从而简化了数 据处理和传输。作为一个不错的 SGML 子集,XML 还保持了对现有的面向 SGML 的 系统的向下兼容性,这样,用 XML 标记过的数据就仍然可以在这些系统 中 使 用 , 为基于 SGML 的行业节省了大笔的改造费用,同时,与 Web 的结合也使得它们更 便于被访问。1998 年 2 月,XML1.0 成为了 W3C 的推荐标准。XML 是一种界定文 本数据的简便而标准的方法。它曾经被人称作“Web 上的 ASCII 码”。它具有开 放性,XML 能够在不同的用户和程序之间交换数据,而不论其平台如何。它的自 描述的特性使其对于 B2B 和企业内部网解决方案来说是一种有效的选择。 无需事 先协调,我们就可以在程序之间共享数据。XML 的数据描述机制意味着它将成为 一种在 Internet 上共享信息的强大途径。 1.3.4 AWT/Swing 简介 Java 的基础类(JFC)是开发图形用户界面的 API 集。Java 的基础类包括以下 API:抽象窗口工具包(版本 1.1 及以后的版本);2D API;Swing 组件; ;可 访 问 性 API。 抽象窗口工具包(Abstract Window Toolkit,AWT)是 Java 开发用户界面最 初的工具包。AWT 是建立 JFC 的主要基础。
3
武汉科技学院计算机科学学院 2009 年毕业设计论文
不是数字的音频波形,而是音乐代码或称电子乐谱。电视晚会的音乐编导可以用 MIDI 功能辅助音乐创作,或按 MI-DI 标准生成音乐数据传播媒介,或直接进行 乐曲演奏。 MIDI 文件是一种描述性的“音乐语言”, 它将所要演奏的乐曲信息用字节进 行描述。譬如在某一时刻,使用什么乐器,以什么音符开始,以什么音调结束, 加以什么伴奏等等,也就是说 MIDI 文件本身并不包含波形数据,所以 MIDI 文件 非常小巧。 MIDI 要形成电脑音乐必须通过合成。 早期的 ISA 声卡普遍使用的是 FM 合成, 即“频率调变”。它运用声音振荡的原理对 MIDI 进行合成处理,由于技术本身 的局限,效果很难令人满意。而现在的声卡大都采用的是波表合成了,它首先将 各种真实乐器所能发出的所有声音(包括各个音域、声调)进行取样,存储为一 个波表文件。 在播放时, 根据 MIDI 文件记录的乐曲信息向波表发出指令, 从“表 格”中逐一找出对应的声音信息,经过合成、加工后回放出来。由于它采用的是 真实乐器的采样,所以 效果自然要好于 FM。一般波表的乐器声音信息都以 44.1KHz、16Bit 的精度录制,以达到最真实的回放效果。理论上,波表容量越 大合成效果越好。根据取样文件放置位置和由专用微处理器或 CPU 来处理的不 同,波表合成又常被分为软波表和硬波表。 1.3.2 Java 对象化的 MIDI 声音是多媒体技术的基础,声音可以创造意境,触发遐想,当与虚拟图像相 结合时,更加可以让整个世界充满幻觉。 Sun 公司的 JAVA 媒体技术开发小组开 发了 Java Sound 1.0 API[9]并将其包含于下一版本的 JAVA 开发工具库中。 在 JAVA2 平台出现之前,JAVA 语言只能处理电话音质的声音,以单声道 8KHZ 的采 样频率存储为 μ-law AU 文件。 JAVA2 平台增加了对 AIFF,WAV 以及三种 MIDI 文件类型的支持。所支持的三种 MIDI 文件格式为 MIDI 文件类型 0、MIDI 文件类 型 1、以及 RMF。 应用程序接口 API1.0 版提供了一个易于使用的工具集,使程 序员可以访问底层的合成与演奏引擎,从而扩展了 JAVA 声音的应用。其中两个 重要的领域是创建数字化音频以及乐器指令数字化接口 MIDI。由于提供了大量 的底层支持功能,所以程序员能输入输出声音,控制 MIDI 设备,并能查询系统
武汉科技学院计算机科学学院 2009 年毕业设计论文
1 导论
1.1 研究背景
随着 Internet 的飞速发展, 很多的软件开始从桌面应用程序走向了网络化, 人们希望能更充分的利用网络实现数据共享和传输。 在很多的领域已经有了统一 的标准,但是在音乐领域的研究和实现现状并不乐观,还有很多的难题。现在世 界上虽然有着众多的音乐数据格式和五花八门的音乐软件, 但是这些电脑音乐程 序无法实现共享。 使用多样化的音乐数据格式的音乐软件而不得不去学习各种不 一样的音乐数据对每个用户来说是个巨大的麻烦。 长久以来,人们一直在尝试创造一种新型的音乐数据交换格式, MusicXML 就是在这种背景下诞生,MusicXML[1-3]采用 XML 技术描述音乐。现在 XML 是数据 交换上最为广泛使用的一种数据格式,在这种趋势下,以 XML 为技术基础,发展 出一种新型的音乐数据格式称之为 MusicXML。它的设计目的是为了音乐数据的 分析与截取。MusicXML 是一种存贮乐谱的数据格式,包含了常见的西方乐谱信 息以及描述信息,如:作者,谱号,调号,小节,音高,音长,旋律,节奏,和 弦,圆滑音等。 现在对 MusicXML 新型数据格式的研究和应用可以分为两种,一种是整体的 从 MusicXML 中分析乐谱的特征,从音乐数据中获得其特征值后,可以更为有效 的进行音乐分析和查询,并提供更多样化的网络音乐服务,这是因为 MusicXML 是纯文本的数据格 式,所有的 数据直截了 当,便于数 学分析。一 种是利用 MusicXML 开放的数据格式作为存储格式,从 XML 文件上重建电子乐音和电子乐 谱,或在可视化环境中编辑乐谱,直接采用 MusicXML 存储。MusicXML 的应用前 景十分可观。 我们小组是研究和实现利用 MusicXML 还原乐谱和乐音,我在文章中将详细 阐述乐音部分的设计实现。
2
武汉科技学院计算机科学学院 2009 年毕业设计论文
数据分解为列表、数据块和标签,而且格式有很大的伸缩性,既可以只简单的表 示音高和节拍时间, 也可以精确的表示乐谱的布局, 还可以嵌入一些图片和 MIDI 信息。但是,NIFF 使用图像格式表示音乐信息,在 NIFF 中所有的音乐元素信息 的表示都是从图像上获得,要根据符号的位置和样式确定所在声部,小节,五线 谱位置等等。在 NIFF 中没有基本的音乐的特征表现,做任何的分析都要给予图 像的识别,这使得它很难得到支持,就想 ISO 七层协议一样,尽管很全面很科学 的划分,但是缺乏商业驱动的标准很难生存。而且 NIFF 严格完整的二进制信息 不能随意截取,也无法真正的实现网络音乐服务。NIFF 只在少数软件给出支持, 这期间,我们只能看到在少数音乐作曲软件中也就多了 NIFF 下拉选选项,没有 人愿意完全支持它和依赖它。 随着网络上 XML 在数据交换的兴起,给予 XML 的各个领域的应用不断出现。 2001XML 互联 网 进程 大 会 上 , Michael 发表 了 论文 《 An Internet-Friendly Format for Sheet Music》引起了大家的注意,早在 2000 年 10 月,MusicXML 就推出了 0.1 版本, MusicXML 一经推出就 赢得了 大量的 商业软 件的支 持, sharpeye music reader,dolet for finale 等著名音乐软件,但遗憾的是国内 还没有出现此类应用。现在 MusicXML 已经发展到 2.0 版本,凭借诸多优势,以 及它的不断发展和完善,它已经成为音乐数据交换的一种标准格式。