2016-07-18 6 views
2

MIDI 파일의 기본 soundfont를 내 soundfont로 바꾸려고합니다. 그러나 새 사운드 폰트는 기존 사운드 폰트를 대체하기보다는 기존 사운드 폰트의 위에 연주합니다. 내 코드 :Java에서 soundfont를 바꾸는 데 문제가 발생했습니다. 이전 soundfont는 여전히 남아 있습니다.

Synthesizer synthesizer = MidiSystem.getSynthesizer(); 
synthesizer.open(); 
synthesizer.unloadAllInstruments(synthesizer.getDefaultSoundbank()); 
synthesizer.loadAllInstruments(MidiSystem.getSoundbank(new File("Airhorn.sf2"))); 

Sequencer sequencer = MidiSystem.getSequencer(); 
sequencer.open(); 
sequencer.getTransmitter().setReceiver(synthesizer.getReceiver()); 

InputStream inputStream = new BufferedInputStream(new FileInputStream(new File("Test.mid"))); 
sequencer.setSequence(inputStream); 
sequencer.start(); 
+0

"맨 위"는 두 악기가 모두 소리가 나는 것을 의미합니까? 그리고이 자바 구현은 무엇입니까? –

+0

예 두 악기 모두 소리가납니다. 이것은 JDK에 제공된 기본 Java MIDI 구현을 사용하고 있습니다. – Anon10W1z

답변

0

당신은 당신의 시퀀서를 얻을 수 및 기본 장치에 연결 방지하기 위해

MidiSystem.getSequencer(false) 

를 사용할 수 있습니다. JDK 8, Windows 10에서 작업했습니다.