audio - 从 MIDI 中提取音符开始

标签 audio midi

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

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

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

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

最佳答案

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

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

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

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

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

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

    关于audio - 从 MIDI 中提取音符开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2928475/

    相关文章:

    audio - 使用Red5媒体服务器播放音频

    android - 在不首先打开文件的情况下在 Android 上生成 FileDescriptor

    java - 向 Java Sound 的 SysexMessage 发送大于 127 的字节时出现问题

    javascript - html5 音频在元素存在之前绑定(bind) timeupdate

    java - 在 Android 应用程序中输入 EditText 时播放声音

    java - 如何将从音轨 1 提取的速度应用到 MIDI 文件的其他音轨?

    python - 在 Python 上阅读钢琴音符

    ios - 更改 MusicSequence 中的拍号

    audio - 提取MFCC系数而无需对数?

    iphone - 音乐播放器只播放一首轨道