读MIDI文件

yxk*_*yxk 9 java midi

使用多个轨道读取MIDI文件(按时间顺序)的最佳方法是什么?(JAVA)

注意:我不想播放MIDI文件,只是阅读消息.

几个想法:

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

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

Ben*_*ine 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();
}
Run Code Online (Sandbox Code Playgroud)

此代码应该读取您的 MIDI 文件(即使有多个轨道)