使用MidiSystem.getSequencer的MidiUnavailableException

时间:2011-06-28 04:02:06

标签: java audio midi

我不小心回答了这个问题,搞砸了这个: MidiUnavailableException in Java?

所以,我再次问这个问题。它与上面的相关。

尝试使用时出现异常:

MidiSystem.getSequencer()

我的代码显示以下内容:

com.sun.media.sound.RealTimeSequencer@1ded0fd

我已经尝试了上一个问题中的所有建议。有谁知道如何解决这个问题?

我正在使用jdk 1.6.0_25-b06和Ubuntu 11.04安装了所有当前更新。我没有安装JMF。已加载sequencer类。我在jre下的audio目录中有soundbank.gm。我已经尝试在sound.properties文件中启用和禁用行。我已经尝试重新启动计算机,以确保没有其他应用程序正在使用音响系统。

我得到以下异常:

javax.sound.midi.MidiUnavailableException at
javax.sound.midi.MidiSystem.getDefaultDeviceWrapper(MidiSystem.java:1078) at
javax.sound.midi.MidiSystem.getReceiver(MidiSystem.java:240) at
javax.sound.midi.MidiSystem.getSequencer(MidiSystem.java:442) at 
javax.sound.midi.MidiSystem.getSequencer(MidiSystem.java:348) at 
playmidi.PlayMidi.main(PlayMidi.java:57) Caused by: 
java.lang.IllegalArgumentException: Requested device not installed at 
javax.sound.midi.MidiSystem.getDefaultDevice(MidiSystem.java:1130) at 
javax.sound.midi.MidiSystem.getDefaultDeviceWrapper(MidiSystem.java:1076) ... 4 more

有趣的是,其他应用程序(Banshee,RhythmBox等)可以在我的机器上播放midi文件。我猜他们有自己的软件序列器(不确定)。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

让我们安装alsa-oss。您可以使用以“aoss”开头的命令运行程序,如:

aoss java -jar XXX

如果你使用eclipse,你也可以用aoss运行它。比你的代码工作正常。我为它创建了一个别名,用于符号链接:

alias eclipse='LIBOVERLAY_SCROLLBAR=0 aoss eclipse-indigo &'

(LIBOVERLAY_SCROLLBAR是另一个bug的解决方案。有一些jvm 2或3/10小时的随机崩溃。)

另一个解决方案是当您从存储库安装内置java时,它也可以正常工作