【发布时间】:2012-11-24 15:22:07
【问题描述】:
我正在尝试在浏览器中播放 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();
}
}
}
听起来偶尔的消息被丢弃了。就像一个noteoff不会触发,一个随机的note会永远挂着。这是 OSX 中的一个已知问题吗?似乎 Java 现在没有从 Apple 那里得到足够的爱。
如果有人有更好的解决方案来在浏览器中播放 Midi,我会全力以赴!
【问题讨论】:
-
您能否使用可热链接的 MIDI 重现该问题?例如。我的media page 有 2 个低于 12Kb 的可用。
-
here's a sample file 我把我的 Mac 忘在了工作上;明天我测试完你的文件后回复你。这个问题似乎是随机发生的!我无法可靠地复制它。它至少每 30 秒左右发生一次。
-
Andrew,我已经能够使用您链接到的 EverLove 和 AftrMdnt 测试文件非常可靠地重现问题。如果没有合成器挂起,我不能播放超过 20 秒(音符挂起,也没有发送新的音符命令)。问题似乎是随机出现的。