2014-01-29 2 views
2

외부 사운드 폰을 사용하여 MusicStrings를 재생하고 있으며 모든 것이 작동합니다. player.saveMidi (등)를 사용하면 파일은 원래의 MIDI 사운드 폰으로 저장됩니다.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 파일로 렌더링하는 것처럼 들립니다 당신이로드 한 사운드 뱅크로부터. 이렇게하려면 여기에서 사용할 수있는 Midi2WavRenderer를 사용하는 것이 좋습니다.

+1

다른 해결책은 midi-player 응용 프로그램에서 사용하는 사운드 뱅크를 변경하는 것입니다. 이를 위해서는 적절하고 구성 가능한 미디 플레이어를 선택해야 할 수 있습니다. – Dave