Java で MIDI ファイルを再生するのに問題があります。私が得たのは、MidiUnavailableException (MIDI OUT transmitter not available)
再生しようとしたときです。私のコードは標準です:
try {
midiseq = MidiSystem.getSequencer();
midiseq.open();
midiseq.setSequence(MidiSystem.getSequence(sound1));
midiseq.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
midiseq.start();
} catch (Exception e) {e.printStackTrace();}
midiseq
ですSequencer
。sound1
ですInputStream
。
このコードは他のいくつかのコンピューターで動作し、コマンド プロンプトから起動したときだけでなく、Eclipse でも動作し、JAR ファイルで使用した場合でも動作します。より安定した Java midi アプリケーションをダウンロードしましたが、同じ例外がスローされました。
Eclipse は問題なく実行できるため、ハードウェアの問題ではありません。また、他のコンピューターで正しく実行されるため、コーディングの問題でもありません。この 1 行のコードでも、次の例外がスローされます。
javax.sound.midi.MidiSystem.getSequencer();
前もって感謝します。
編集: 私のオペレーティング システムは Windows Vista です。この質問をする前に、最新の JRE と JDK (1.6.0_13 だと思います) をダウンロードしました。
編集:コード:
ClassLoader.getSystemClassLoader().loadClass("com.sun.media.sound.RealTimeSequencer");
System.out.println( "Sequencer class loaded" );// Otherwise ClassNotFoundException
「シーケンサークラスがロードされました」と出力します。
しかし、このコード:
try{
System.out.println(javax.sound.midi.MidiSystem.getSequencer());
System.exit(0);
} catch(Exception e) {
throw new RuntimeException(e);
}
System.exit(1);
を投げるMidiUnavailableException.
また、このコード:
MidiDevice.Info[] devices = MidiSystem.getMidiDeviceInfo();
if (devices.length == 0) {
System.out.println("No MIDI devices found");
} else {
for (MidiDevice.Info dev : devices) {
System.out.println(dev);
}
}
私にこれを与える:
マイクロソフト MIDI マッパー Microsoft GS ウェーブテーブル シンセ リアルタイム シーケンサー Java サウンド シンセサイザー