Я пытался реализовать MIDI-плеер для Java-программы.Поэтому я начал использовать библиотеку 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();
}
В первую секунду я отчетливо слышу свой загруженный звуковой шрифт, но после этого миди каким-то образом воспроизводится со стандартным звуковым шрифтом.Я проверил, и файл SF2 поддерживается библиотекой javax.sound.midi
(synthesizer.isSoundBankSupported(soundfont)
возвращает true).
Кто-нибудь знает, почему моя программа ведет себя так?