jFugue Сохранение MIDI-файлов, включая загруженные инструменты

Я использую внешний SoundFont для воспроизведения MusicStrings и все работает найти. Когда я использую player.saveMidi (и т. Д., И т. Д.), Файлы сохраняются с оригинальным звуковым шрифтом 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, доступный здесь: http://www.jfugue.org/code/Midi2WavRenderer.java

Другие вопросы по тегам