JavaX MIDI - Воспроизведение MIDI-файла с пользовательским звуковым шрифтом - PullRequest
0 голосов
/ 25 декабря 2018


Я пытался реализовать 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).
Кто-нибудь знает, почему моя программа ведет себя так?

...