3


Java プログラム用の MIDI プレーヤーを実装しようとしていました。javax.sound.midiということで図書館を利用し始めました。私Sequencerと私のSynthesizerそこにロードします:

private void playMidiFile() {

   Soundbank soundfont = MidiSystem.getSoundbank(Util.internalFile("FluidR3_GM.sf2").getInputStream());
   Sequencer sequencer = MidiSystem.getSequencer();
   Synthesizer synthesizer = MidiSystem.getSynthesizer();

   sequencer.open();
   synthesizer.open();
   synthesizer.loadAllInstruments(soundfont);

   sequencer.getTransmitter().setReceiver(synthesizer.getReceiver());
   sequencer.setSequence(Util.internalFile("MyMusic.mid").getInputStream());

   sequencer.start();
}

最初の 1 秒間は、ロードしたサウンドフォントをはっきりと聞くことができますが、その後、どういうわけか、標準のサウンドフォントで MIDI が再生されます。確認したところ、SF2 ファイルはjavax.sound.midiライブラリでサポートされています ( synthesizer.isSoundBankSupported(soundfont)true を返します)。
私のプログラムがこのように動作する理由を誰かが知っていますか?

4

2 に答える 2