0

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

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

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

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

4

1 回答 1

2

您可能想看看这个问题:来自 MIDI 持续时间的实际音符持续时间

讨论了从 MIDI 文件中提取音符的可能方法。

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

识别出音符后,识别和弦仍然很棘手。假设您有 3 个音符:C、E、G “同时”发生(即在小节的同一点被确定为声音)。他们什么时候被认为是C大调和弦?

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

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

于 2010-06-01T13:03:01.017 回答