我一直在拋出一個異常。 當我嘗試製作一個新的Sequencer對象時,我不斷收到javax.sound.midi.MidiUnavailableException:Audio Device Unavailable異常。 所以,這裏是代碼:MidiSystem.getSequencer()返回音頻設備不可用
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文件,沒關係」聽起來像是你有它工作?你什麼意思? 您應該刪除「編譯器錯誤」標籤。這是一個典型的運行時錯誤。 – aioobe 2010-04-26 18:46:54
我現在可以用另一個程序播放MIDI文件,比如膽怯,但我無法讓這段代碼正常工作。它總是告訴我,'音頻設計是不可能的'。 我試圖以root身份運行它,同樣的錯誤。試圖殺死所有使用我的聲卡的進程,仍然有這個錯誤。 – ksemeks 2010-04-26 19:06:15