Mac OSX中的Java Midi破碎了吗?

Ben*_*Ben 5 java macos midi

我正在尝试在浏览器中播放midi,并且一直在使用可在PC上运行良好的Java Applet.它在OSX上非常不可靠,所以我写了一个简单的测试用例,它表现出同样的问题:

import javax.sound.midi.*;
import java.io.InputStream;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class MidiPlayer {

  public static void main(String[] args) {
      try {
          Sequencer sequencer = MidiSystem.getSequencer();
          if (sequencer == null)
              throw new MidiUnavailableException();
          sequencer.open();
          FileInputStream is = new FileInputStream("sample.mid");
          Sequence mySeq = MidiSystem.getSequence(is);
          sequencer.setSequence(mySeq);
          sequencer.start();
      } catch (Exception e) {
          e.printStackTrace();
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

听起来偶尔的消息会被丢弃.就像一个音符不会发射,随机音符将永远挂起.这是OSX中的已知问题吗?看起来Java似乎没有从Apple获得足够的爱.

如果有人有更好的解决方案在浏览器中播放Midi,我全都耳朵!

And*_*son 3

来自mmj - Mac OS X 上的 java Midi

Apple 的 java Midi 实现显得有点三心二意。它不认为状态字节 >= 0xF0 的 MIDI 数据有效(即不适用于 sysex、MIDI 时钟、时间码等),忽略 Midi 事件上的时间戳,设备名称将默认为仅端口名称(没有提示)该端口所属的设备)并且可能还缺少其他类似的东西。

OS X 上的 MIDI 情况似乎很糟糕,尽管该 API 是作为替代品提供的。