完成这一部分工作需要将原始音符表转换为有序栈。有序栈的特点保证了虽然每个音符都有可能被反复插入,但是它插入的次数与整体栈规模无关,只与音符的复杂度有关。在音符复杂度一定的情况下,每个栈元素被反复操作的次数接近一个常量,故整体函数仍停留在nlog(n)级别,是可以接受的。
为了降低运算量,可以利用只含有一个和弦的共尾音符组和只含有一个音符的和弦统一各种符号间的比较,把3x3=9步比较合并为两步,降低了比较的代价,大大减少了代码量。另一个优化之处是利用了有序栈,把时间复杂度降低到nlog(n)。
图6展示了MIDI文件的显示效果,限于篇幅,本文对于多连音、倚音,装饰音等格式解析,在这里不做更详细的说明了。
4 总结与展望
本文讨论的电子乐谱阅读器嵌入式开发平台采用了基于Celeron-M的ECX平台,显示模块采用了Linux平台下的QT开发框架。实践证明,本文所讨论的解析方法是完全可行的,系统的运行速度也是令人满意的。
随着计算机与嵌入式系统的普及,人们的生活方式正在发生了巨大的变化,虽然本文提到的嵌入式乐谱阅读器还没有形成产品,但势必取代现有的纸质乐谱。另外,本系统目前只有阅读功能,还可以增加音乐播放功能,这样就可以进行五线谱的学习,对于正处于学习阶段的学生来说,是一个非常好的助手。
本文作者创新点:本文所作的研究弥补了乐谱数字化的最后一个环节——数字化阅读。尽管存在着各种打谱软件、作曲软件、播放软件,但演奏者目前还没有一个适合的阅读器。本文尝试将数字化乐谱通过嵌入式阅读设备显示给演奏者,替代传统笨重的纸质乐谱,极大的减轻了演奏者的负担。同时由于互联网上存在大量的MIDI格式的文件,但五线谱格式的文件很少而且格式不公开,需要配备价格昂贵的专业软件。而本系统可以直接将其转换为五线谱阅读,为使用者的学习工作提供了方便。
参考文献:
[1]袁慧梅,宋宇.基于CPLD的MIDI音乐播放器的设计[J].微计算机信息,2006,11:143-145
[2]《基本乐理》,李重光,高等教育出版社,2000年1月
[3]MIDITrans - A MIDI File Transform Language Roger T.HARTley,1998
[4]Standard MIDI File(SMF) Format ,MIDI Manufacturer's Association,1999
[5]MIDI Specification version1.0, MIDI Manufacturer's Association,1999
[6]General MIDI Level 1, MIDI Manufacturer's Association,1999
本文关键字:嵌入式 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术