论文部分内容阅读
音乐作为表达情感艺术的一种载体,有着悠久的历史。随着物质文化生活水平的提高以及科技的发展,人们已经不再局限于用耳朵去听音乐,还希望通过多种方式去感受音乐的旋律节奏。这个对作曲以及音乐特征的提取都带来的挑战,因此需要一种新的方法来进行乐曲的创作及演绎,而这里面都涉及到了对音乐特征的提取。然而如何有效的提取主旋律一直是一个挑战,也是本文研究的主要内容。本文基于以上背景,对MIDI文件的音乐特征进行提取。人们感受到的音乐特征主要为音高、音长、主旋律等。本文先对MIDI文件进行了基本音符的音高音长的提取,改进了进行主旋律提取的轮廓线算法,并改进了基于轮廓线算法的多元化聚类算法。之后,对改进的轮廓线算法进行了FPGA实现。本文对需要用到的基本乐理知识进行了简述,并对MIDI文件的格式进行了研究分析。通过对文件头中的Meta事件分析得到某些已经标注好的MIDI文件的主旋律音轨号,以及节拍等信息,便于后面进行的主旋律提取算法验证。通过对MIDI文件格式中每一个由十六进制数表示的状态字节和数据字节进行解析,得到每一个音符的音高、音速、音色等信息。对可变长度编码的delta-time进行计算,提取出音符的起始时间及持续时间,将MIDI文件转换为下一步主旋律提取所需要的音符特征矩阵。主旋律提取算法中,对常用的轮廓线算法进行改进,去除第十通道的鼓音轨和经过轮廓线算法后持续时间过短的音符,并去除持续时间超过1/3音轨总持续时间的背景音,提高算法识别的准确度。在此基础上改进了多元化聚类的方法,对相似的音轨进行分类,再从每一类中选取最佳音轨作为主旋律音轨。通过Matlab对算法进行仿真,验证了算法的正确性以及主旋律提取的准确度。接下来基于FPGA对改进的轮廓线算法进行了设计,成功实现了对MIDI音乐文件主旋律的提取,进行了板级调试,并将电路的最终结果与Matlab的结果进行比较,验证了电路功能的正确性。