【发布时间】:2010-04-26 17:49:21
【问题描述】:
我一直在不断地抛出异常。 当我尝试创建一个新的 Sequencer 对象时,我不断收到 javax.sound.midi.MidiUnavailableException: Audio Device Unavailable 异常。 所以,这里是代码:
import javax.sound.midi.*;
public class MiniMusicPlayer1
{
public static void main(String[] args)
{
try
{
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();
Sequence seq = new Sequence(Sequence.PPQ, 4);
Track track = seq.createTrack();
for (int i = 5; i < 61; i += 4)
{
track.add(makeEvent(144, 1, i, 100, i));
track.add(makeEvent(128, 1, i, 100, (i+2)));
}
sequencer.setSequence(seq);
sequencer.setTempoInBPM(220);
sequencer.start();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static MidiEvent makeEvent(int comd, int chan, int one, int two, int tick)
{
MidiEvent event = null;
try
{
ShortMessage a = new ShortMessage();
a.setMessage(comd, chan, one, two);
event = new MidiEvent(a, tick);
}
catch (Exception e)
{
e.printStackTrace();
}
return event;
}
}
这是完整的错误(编译时):
javax.sound.midi.MidiUnavailableException: Audio Device Unavailable
at com.sun.media.sound.MixerSynth.implOpen(MixerSynth.java:165)
at com.sun.media.sound.AbstractMidiDevice.doOpen(AbstractMidiDevice.java:144)
at com.sun.media.sound.AbstractMidiDevice.openInternal(AbstractMidiDevice.java:134)
at com.sun.media.sound.AbstractMidiDevice.getReceiverReferenceCounting(AbstractMidiDevice.java:339)
at javax.sound.midi.MidiSystem.getReceiver(MidiSystem.java:243)
at javax.sound.midi.MidiSystem.getSequencer(MidiSystem.java:442)
at javax.sound.midi.MidiSystem.getSequencer(MidiSystem.java:348)
at MiniMusicPlayer1.main(MiniMusicPlayer1.java:9)
首先我无法在我的电脑上播放 MIDI 文件,但后来我让它工作了,所以现在我可以播放 MIDI 文件了,没关系。 我什至尝试关闭使用我的声卡的每个进程,但错误仍然存在。 谁能帮帮我?
【问题讨论】:
-
“一开始我无法在我的电脑上播放 MIDI 文件,但后来我让它工作了,所以现在我可以播放 MIDI 文件了,没关系”听起来你能正常工作吗?你什么意思?您应该删除“编译器错误”标签。这是典型的运行时错误。
-
我现在可以用另一个程序播放 MIDI 文件,比如说胆怯,但我无法让这个代码工作。它总是告诉我“音频设计不可用”。我试图以root身份运行它,同样的错误。试图杀死所有使用我的声卡的进程,仍然得到这个错误。
标签: java sequence midi runtime-error