在实际播放之前打开Java剪辑文件?

在实际播放之前打开Java剪辑文件?,java,audio,load,jbutton,clip,Java,Audio,Load,Jbutton,Clip,我有一个按钮,按下时播放此代码: public void music() throws UnsupportedAudioFileException, IOException { try { URL url = this.getClass().getResource("/audio/InGame01.mid"); AudioInputStream audioIn = AudioSystem.getAudioInputStream(url);

我有一个按钮,按下时播放此代码:

public void music() throws UnsupportedAudioFileException, IOException {
    try {
        URL url = this.getClass().getResource("/audio/InGame01.mid");
        AudioInputStream audioIn = AudioSystem.getAudioInputStream(url);
        Clip clip = AudioSystem.getClip();
        clip.open(audioIn);
        clip.start();
    } catch (LineUnavailableException e) {
        e.printStackTrace();
    }

}
但是,不仅仅是声音延迟,我假设是因为它必须读取声音文件,然后播放,按钮也会冻结,直到它读取完声音片段。是否有一种简单的方法可以在按钮实际按下之前打开音频剪辑,使其已加载?我说的就是clip.openaudioIn

这就是调用该方法的位置按钮侦听器:

try {
                music();
            } catch (UnsupportedAudioFileException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }

那不是声音剪辑。这是一个midi文件,基本上只是一系列关于演奏什么乐器/音符的说明。你扔给扬声器的不仅仅是一些PCM样本。它本质上是一个播放一段音乐的程序。@MarcB好的,但是有没有办法从另一个类执行clip.openaudioIn?如果这不能解决问题,那么我怎样才能避免延误呢?至于延迟,请将其预加载到静默播放器中,以便在您真正需要它之前完成所有必要的设置?@MarcB好的,谢谢=