Java MidiSystem.start()不发声

Java MidiSystem.start()不发声,java,audio,Java,Audio,我是java新手,我正在创建一个测试应用程序,演示如何创建声音。我有这个测试代码: public class MiniMiniMusicApp { public MiniMiniMusicApp(){ } public void play(){ try{ Sequencer player = MidiSystem.getSequencer(); player.open(); S

我是java新手,我正在创建一个测试应用程序,演示如何创建声音。我有这个测试代码:

public class MiniMiniMusicApp {

    public MiniMiniMusicApp(){

    }

    public void play(){
        try{
            Sequencer player = MidiSystem.getSequencer();
            player.open();

            Sequence seq = new Sequence(Sequence.PPQ, 4);

            Track track = seq.createTrack();

            ShortMessage a = new ShortMessage();
            a.setMessage(144,1,20,100);
            MidiEvent noteOn = new MidiEvent(a, 1);
            track.add(noteOn);

            ShortMessage b = new ShortMessage();
            a.setMessage(128, 1, 44, 100);
            MidiEvent noteOff = new MidiEvent(b, 3);
            track.add(noteOn);

            Track[] t = seq.getTracks();
            player.setSequence(seq);

            player.start();

            System.out.println("Done");
        }
        catch (Exception ex){
            System.out.println("Ooops something went wrong");
            ex.printStackTrace();
        }
    }
}

我听不到任何声音。我在某个地方读到我需要一个soundbank,所以我从下载了豪华版,并将其复制到C:\Program File\Java\jdk1.7.0\u 45\jre\lib创建了一个名为audio的文件夹,并在其中复制了soundbank.gm。我在这里遗漏了什么?

我没有足够的代表对这个问题发表评论,但你是想说这句话吗

track.add(noteOn);
进去两次

你也打电话吗

a.setMessage(...)
两次

还有一些奇怪的事情正在发生,比如创建一个从未使用过的数组等等


我建议清理一下你的代码。

伙计,我怎么没注意到。。。就这样,谢谢你!这里有一些建议:)