JAR に保存されているサウンドバンクがある場合、リソースの読み込みを使用してそのサウンドバンクをアプリケーションに読み込むにはどうすればよいですか?
できるだけ多くの MIDI プログラムを jar ファイルに統合しようとしていますが、最後に追加する必要があるのは、使用しているサウンドバンク ファイルです。これは、ユーザーがサウンドバンクをインストールしていないためです。それを jar ファイルに入れてから、Class クラスの getResource() でロードしようとしていますが、有効であることがわかっているサウンドバンクで InvalidMidiDataException を取得しています。
コードは次のとおりです。これは、シンセサイザー オブジェクトのコンストラクターにあります。
try {
synth = MidiSystem.getSynthesizer();
channels = synth.getChannels();
instrument = MidiSystem.getSoundbank(this.getClass().getResource("img/soundbank-mid.gm")).getInstruments();
currentInstrument = instrument[0];
synth.loadInstrument(currentInstrument);
synth.open();
} catch (InvalidMidiDataException ex) {
System.out.println("FAIL");
instrument = synth.getAvailableInstruments();
currentInstrument = instrument[0];
synth.loadInstrument(currentInstrument);
try {
synth.open();
} catch (MidiUnavailableException ex1) {
Logger.getLogger(MIDISynth.class.getName()).log(Level.SEVERE, null, ex1);
}
} catch (IOException ex) {
Logger.getLogger(MIDISynth.class.getName()).log(Level.SEVERE, null, ex);
} catch (MidiUnavailableException ex) {
Logger.getLogger(MIDISynth.class.getName()).log(Level.SEVERE, null, ex);
}