JFugue:加载的MIDI文件不能使用正确的乐器播放

时间:2014-02-03 08:55:12

标签: java midi jfugue

我使用以下代码加载和播放带有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消息,解析器无法识别? 关于歌曲如何使用曲目和频道或其他已知限制或必要的初始化步骤,是否有任何先决条件?

1 个答案:

答案 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();
        }
    }
}
相关问题