我正在使用外部声音来播放MusicStrings,一切正常。当我使用player.saveMidi(等等)时,文件将保存为原始的MIDI soundfont。
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
是否有支持此功能的变通方法或内置功能?
谢谢!
答案 0 :(得分:1)
请记住,MIDI是一组音乐指令。无论您是否将声音库加载到Java程序中,当您另存为MIDI时,您只能保存音乐指令。 (通过"音乐指令",我的意思是"注意"或"乐器更改"但不是实际的音乐声音数据)
听起来你想要做的就是使用你加载的音库中的声音将你的音乐渲染成WAV文件。为此,您需要使用此处提供的Midi2WavRenderer:http://www.jfugue.org/code/Midi2WavRenderer.java