简介:Skyline算法是由Uitdenbogern于1999年所提出[1]。它能提取出最高音轮廓作为整个音乐的旋律。该算法可以从多轨midi音乐中提取出音乐高音轮廓的单音旋律。
算法:
a)如果有多个音符在同一时间开始,那么保留音高最高的音符,清除其他音符。
b)开始时间不同的音符,如果有持续时间重叠的,那么令开始时间在前的音符持续时间缩短,使其结束时间等于开始时间在后的音符的开始时间。
优缺点:适用于多数音乐。因为有论文证明多数音乐的主旋律都存在于最高音。若主旋律存在于低音,则无法提取。
原理:保留平均音高最高的通道,同时删除了最高音音符之外的其他全部音符[2]。该算法根据midi文件的标准结构,独立地检测每一个通道,对每一个通道使用Skyline算法进行处理,以获得该通道的旋律。旋律平均音高最高的通道将被选中作为提取出的旋律。
优缺点:在计算过程中,无论持续时间的长短,全部音符被赋予相同的权值。这种算法的缺点在于,可能会选取到高音伴奏的通道,从而完全提取错误,或者当主旋律分散到不同的通道时,则无法完整提取旋律。
原理:保留每个通道的最高音音符,并选择具有最高熵的通道。首先对每个独立的通道应用Skyline算法,然后选择具有最高一阶预测熵的通道作为旋律。
原理:使用一种启发式的方法,把每一个通道分割成段,并选择最高熵的部分。这种方法使用时间和音高邻近信息来把音乐分割成段,轮流分析来自每一个通道的音符,并把它们分配到适当的部分。如果当前的音符与现存部分里的其他音符时间相同,那么就创建一个新的部分;否则,这种音符被分配到与其在音高上最相近的部分,决定的依据是用该音符与每个部分中最新接收到的音符进行音高对比。
缺点:如果多个音符精确地在同一时间发生,那么这个方法可能会以无法预期的方式分配音符。
原理:由Chai在2000年所提出[3]。该算法引入了一个时间重叠参数,从音高最小的note开始比较,看其对于复调音乐的贡献程度。若该音从开始到结束,超过50%是持续复调的,该音不被当作主旋律。能够比经典的Skyline提取出更纯净的旋律。
改良的Skyline算法
原理:由Shan在02年提出[4]。通过一些措施删除掉乐器的通道,然后选取出具有最大音量的通道。因为旋律的音量通常是最大的,而且不经常性地切换通道。对所选取出的通道,如果多个音符同时发生,则选取音高最高的。
原理:这种算法由Ozcan提出[5]。结合了Skyline与通道选择算法优点的新算法。它的目标是选择出包含旋律的k个通道,再进一步提取旋律。
a)直接删除通道10(打击乐),直接作为噪声删除掉;
b)对全部的通道应用Skyline算法;
c)把MIDI音符表示成12个半音,计算所有的音高模12的值。这样以后,每个通道的音高柱状图变成12维空间中的一个点。
为确定最佳k值,可以使用两个方法:顶端排序或聚类方法。
顶端排序的方法是基于每一个通道的平均音高与整体平均音高的欧几里德距离来进行排序,排在最前面的三个通道将被选择出来作为包含旋律的通道来进行进一步的提取。
聚类的方法是首先根据欧几里德距离,把通道分成不同的类,然后选择每一类中最好的通道。这种方法可以把与平均音高的欧拉距离比较远却包含有旋律的通道选择出来
08年Liu等人提出了基于旋律相似性的主旋律提取方法,准确率较高[6]。法通过计算同一首歌的不同MIDI文件的相似性来识别其主旋律通道。通常情况下,对于同一首歌的不同MIDI文件,每一个文件都包含一些可以被视为主旋律的主要通道。因此,可以下载同一首歌的多个不同MIDI文件,然后根据旋律相似性理论计算两个MIDI文件的相似性。每一个文件可以看成最多含有16个通道的矢量,因此可以得到它们的相似性矩阵,并通过分析这些相似性矩阵来决定每一个MIDI文件的主旋律通道。
步骤:
a)表示MIDI文件;
b)计算旋律相似性并获得相似性矩阵;
c)处理五种特殊情况(对阵矩阵、空音轨、低音伴奏、和弦伴奏、过短音轨)
d)如果相似性矩阵不对称,则识别出作为主旋律的通道,否则继续循环,遍历每一个MIDI文件。
选择:看到的最好使用最佳K通道算法。如果一首曲子有多个midi文件,可以考虑根据旋律相似性来做。
主旨:Skyline算法是基石。总结来说就是:去掉打击乐轨,(根据音高、音量、熵、对于复调音乐的贡献程度)找到最合适的一个或者多个midi通道,使用Skyline算法提取出主旋律。
[1] Uitdenbogerd A, Zobel J. Melodic matching techniques for large music databases[C]//Proceedings of the seventh ACM international conference on Multimedia (Part 1). ACM, 1999: 57-66.
[2] Isikhan C, Ozcan G. A survey of melody extraction techniques for music information retrieval[C]//Proceedings of 4th Conference on Interdisciplinary Musicology (SIM’08), Thessaloniki, Greece. 2008.
[3] Chai W, Vercoe B. Melody retrieval on the web[C]//Multimedia Computing and Networking 2002. International Society for Optics and Photonics, 2001, 4673: 226-242.
[4] Shan M K, Kuo F F. Music style mining and classification by melody[J]. IEICE TRANSACTIONS on Information and Systems, 2003, 86(3): 655-659.
[5] Ozcan G, Isikhan C, Alpkocak A. Melody extraction on MIDI music files[C]//Multimedia, Seventh IEEE International Symposium on. Ieee, 2005: 8 pp.
[6] Li L, Junwei C, Lei W, et al. Melody extraction from polyphonic MIDI files based on melody similarity[C]//Information Science and Engineering, 2008. ISISE’08. International Symposium on. IEEE, 2008, 2: 232-235.
博主你好,请问这些算法有开源的实现吗?我找了一下,好像只有skyline有比较粗糙的实现。