【发布时间】:2018-12-25 12:49:46
【问题描述】:
我试图为 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)。
有人知道我的程序为什么会这样吗?
【问题讨论】:
标签: java midi javasound soundfont