我试图为 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();
}
第一秒钟我可以清楚地听到我加载的声音字体,但在那之后不知何故,midi 以标准声音字体播放。我检查了javax.sound.midi
库支持 SF2 文件(synthesizer.isSoundBankSupported(soundfont)
返回 true)。
有人知道我的程序为什么会这样吗?