从MIDI中提取音符

时间:2010-05-28 11:17:25

标签: audio midi

我需要从复音中提取音乐特征(音符细节 - >音高,持续时间,节奏,响度,音符开始时间)(高音和低音有2个乐谱 - 低音也可能有和弦)MIDI文件。我正在使用jMusic API从MIDI文件中提取这些细节。我的方法是通过每个分数,分成部分,然后是短语,最后记录并提取细节。

通过我的方法,它首先读取所有高音音符然后读低音音符 - 但是没有捕获和弦(即只有一个和弦的音符被拍摄),我无法识别从哪个点开始的低音音符。 所以我尝试的是获得音符开始(即音符的开始时间) - 因为乐曲开头的高音和低音音符的开始时间应该是相同的 - 但是我无法使用音符开始提取jMusic API。对于每个音符,它显示0.0。

有什么方法可以识别音符的声音(高音或低音)吗?还有和弦的所有音符? MIDI中存储的每个音符的声音或音符是如何开始的?每个MIDI文件有不同之处吗?

非常感谢任何见解。提前致谢

1 个答案:

答案 0 :(得分:2)

您可能想看一下这个问题:Actual note duration from MIDI duration

讨论了从midi文件中提取笔记的可能方法。

考虑一个MIDI文件可以分割在多个轨道上(“1型”midifile)。

一旦识别出音符,识别和弦仍然会很棘手。假设您有3个音符:C,E,G“同时”发生(即已被识别为在测量中的同一点处发出声音)。他们什么时候被认为是C大调和弦?

  • 在同一频道播放
  • 由同一乐器演奏(即使在不同频道)
  • 即使出现在不同的曲目上,也会在同一频道播放

Midifile格式非常简单(甚至可能太简单!!)我建议您在这里查看其描述:http://duskblue.org/proj/toymidi/midiformat.pdf