读MIDI文件

时间:2009-07-25 19:43:20

标签: java midi

使用多个曲目读取MIDI文件(按时间顺序排列)的最佳方法是什么? (Java)的

注意:我不想播放MIDI文件,只需阅读信息。

结合思想:

假设没有短于1/64音符的音符事件是否安全?或者我应该访问每个轨道并且只在所有其他刻度轨道之后移动到下一个刻度线

  • 假设没有midi事件短于1/64注释,并将当前位置滴答计数移动该修正增量。
  • 访问每个曲目并进入下一个最早的刻度

2 个答案:

答案 0 :(得分:3)

JFugue可以读取MIDI文件并按时间顺序对消息进行排序。

结果可以读作JFugue MusicStrings(例如,C-sharp,第5个八度,整个音符=“C#5w”),或者您可以编写自己的ParserListener并将其附加到MidiParser,这样您就可以输出自己的文字。

答案 1 :(得分:0)

在Java中,您可以使用以下内容读取midi文件:

try {
        Sequencer sequencer = MidiSystem.getSequencer();
        sequencer.setSequence(MidiSystem.getSequence(yourMidiFile));
        sequencer.open();
        sequencer.start();
        while(true) {
            if(sequencer.isRunning()) {
                try {
                    Thread.sleep(1000); // Check every second
                } catch(InterruptedException ignore) {
                    break;
                }
            } else {
                break;
            }
        }

} catch(Exception e) {
        System.out.println(e.toString());
} finally {
    // Close resources
    sequencer.stop();
    sequencer.close();
}

此代码应读取您的midi文件(即使有多个曲目)