我使用以下代码加载和播放带有JFugue的MIDI文件:
import java.io.File;
import org.jfugue.Pattern;
import org.jfugue.Player;
public class PlayMidiFromFile {
public static void main(final String[] args) {
try {
final Player player = new Player();
final Pattern pattern = player.loadMidi(new File("sample.mid"));
player.play(pattern);
} catch (final Exception e) {
e.printStackTrace();
}
}
}
使用ChordPulse生成file,其他程序播放效果正常。
它包含多个曲目,每个曲目都有不同的乐器,但播放器仅使用钢琴,而某些曲目似乎缺失。
如何解决这个问题?是否有某些MIDI消息,解析器无法识别? 关于歌曲如何使用曲目和频道或其他已知限制或必要的初始化步骤,是否有任何先决条件?
答案 0 :(得分:2)
大号部分仍由钢琴演奏,但除此之外,测试版5中的MIDI支持显然得到了改进。
上述代码段的更新(反映API更改):
import java.io.File;
import org.jfugue.midi.MidiFileManager;
import org.jfugue.pattern.Pattern;
import org.jfugue.player.Player;
public class PlayMidiFromFile {
public static void main(final String[] args) {
try {
final Player player = new Player();
final Pattern pattern = MidiFileManager.loadPatternFromMidi(new File("sample.mid"));
player.play(pattern);
} catch (final Exception e) {
e.printStackTrace();
}
}
}