2014-01-29 33 views
2

我正在使用外部soundfont播放MusicStrings,並且所有內容都在查找。當我使用player.saveMidi(等等)時,文件會保存在原始MIDI soundfont中。jFugue保存MIDI文件,同時還包括加載樂器

Soundbank soundbank = MidiSystem.getSoundbank(new File("SGM-V2.01.sf2")); 
Synthesizer synth = MidiSystem.getSynthesizer(); 
synth.open(); 
synth.loadAllInstruments(soundbank); 
Player player = new Player(synth); 
Pattern pattern = new Pattern("C5majw C5majw C5majw"); 
player.play(pattern); // works fine with external soundbank 
player.saveMidi(pattern, filename); //Doesn't save with external soundbank instruments 

是否有任何解決方法或內置功能支持此功能?

謝謝!

回答

1

請記住,MIDI是一組音樂指令。無論您將音庫加載到Java程序中,還是將其另存爲MIDI,都只能保存音樂指令。 (通過「音樂指令」,我的意思是諸如「NOTE ON」或「INSTRUMENT CHANGE」之類的東西,但不是實際的音樂聲音數據)

這聽起來像你想要做的是使用聲音將你的音樂轉換成WAV文件來自您已加載的soundbank。爲此,您需要使用以下Midi2WavRenderer:http://www.jfugue.org/code/Midi2WavRenderer.java

+1

另一種解決方案是更改midi播放器應用程序使用的音庫。這可能需要選擇一個合適的,可配置的MIDI播放器。 – Dave