java播放midi不同于软件?

java播放midi不同于软件?,java,audio,midi,Java,Audio,Midi,我编写了一个加载和播放midi的简单代码: public class SoundBase { Sequencer sequencer; public SoundBase() throws Exception{ sequencer = MidiSystem.getSequencer(); sequencer.open(); Sequence sequence = MidiSystem.getSequence(new File("a

我编写了一个加载和播放midi的简单代码:

public class SoundBase {
    Sequencer sequencer;

    public SoundBase() throws Exception{
        sequencer = MidiSystem.getSequencer();
        sequencer.open();

        Sequence sequence = MidiSystem.getSequence(new File("audio/chno0902.mid"));
        sequencer.setSequence(sequence);
//      sequencer.getTransmitter().setReceiver(new MyReceiver());
        sequencer.start();
    }

    public static void main(String[] args) throws Exception {
        new SoundBase();
    }

    @Override 
    protected void finalize() throws Throwable { 
        if (sequencer != null) 
            sequencer.close(); 
        super.finalize(); 
    } 
}
然而,从这段代码中播放的midi与我在下载的网站预览中听到的完全不同: 与我安装的GarageBand(MacOSX)软件播放器也不同。 我是做错了什么还是忘记了什么?
谢谢

midi文件不包含乐器的实际声音(波形),而只包含单个音符的参数(乐器、音高、长度等)。这就是为什么它比WAV或MP3小得多。缺点是,它在不同的平台上听起来可能不同,根据乐器的实现方式,我发现我可以在/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/audio中添加一个soundbank,我已经下载并放在那里了,但是当我加载它时,我出现了以下错误javax.sound.midi.invalidMiddataException:无法从流中获取soundbankjavax.sound.midi.MidiSystem.getSoundbank(MidiSystem.java:604)在SoundBankTest.LoadSoundBankTest(SoundBankTest.java:34)在SoundBankTest.main(SoundBankTest.java:72)Java8从2001年起就有这个bug吗?