3

我使用以下代码通过 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 生成的,并且使用其他程序播放效果很好。

它包含多个曲目,每个曲目都有不同的乐器,但播放器仅对所有曲目使用钢琴,并且似乎缺少一些曲目。

如何解决这个问题?是否存在解析器无法识别的某些 MIDI 消息?关于歌曲如何使用曲目和频道或其他已知限制或必要的初始化步骤是否有任何先决条件?

4

1 回答 1

2

大号部分仍然由钢琴演奏,但除此之外,MIDI 支持在 beta 版本 5 中明显得到了改进。

上述代码段的更新(反映 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();
        }
    }
}
于 2014-02-03T19:16:39.900 回答