Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我怎样才能同时演奏两种声音?_Java_Audio - Fatal编程技术网

Java 我怎样才能同时演奏两种声音?

Java 我怎样才能同时演奏两种声音?,java,audio,Java,Audio,我正在用java编写一个游戏项目,我想实现这样的东西:当一个对象开始移动时,它会产生一些声音效果,当另一个对象在第一个对象停止之前开始移动时,它也会产生一些声音效果。第二个对象开始移动后,第一个对象停止移动前,我如何合并两个对象的声音而不是单独播放它们?大部分这将使用库实现。将重点放在的功能上。使用示例和MIDI文件提供了一些非常好的样板文件。它甚至有一个游戏的例子 无论如何,基于StackOverflow的,下面是一个同时播放两个剪辑的粗略示例: public static void main

我正在用java编写一个游戏项目,我想实现这样的东西:当一个对象开始移动时,它会产生一些声音效果,当另一个对象在第一个对象停止之前开始移动时,它也会产生一些声音效果。第二个对象开始移动后,第一个对象停止移动前,我如何合并两个对象的声音而不是单独播放它们?

大部分这将使用库实现。将重点放在的功能上。使用示例和MIDI文件提供了一些非常好的样板文件。它甚至有一个游戏的例子

无论如何,基于StackOverflow的,下面是一个同时播放两个
剪辑的粗略示例:

public static void main(String... args) throws Exception {
    URL url1 = new URL("http://www.websitewithsomewav/noise1.wav");
    Clip clip1 = AudioSystem.getClip();
    AudioInputStream stream1 = AudioSystem.getAudioInputStream(url1);
    clip1.open(stream1);

    URL url2 = new URL("http://www.websitewithsomewav/noise2.wav");
    Clip clip2 = AudioSystem.getClip();
    AudioInputStream stream2 = AudioSystem.getAudioInputStream(url2);
    clip2.open(ais2);

    clip1.loop(Clip.LOOP_CONTINUOUSLY);
    clip2.loop(Clip.LOOP_CONTINUOUSLY);
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            // A GUI element to prevent the Clip's daemon Thread
            // from terminating at the end of the main()
        JOptionPane.showMessageDialog(null, "Close to exit!");
        }
    });
}
更新
如果您绝对必须使用单个输入流,您可以尝试

谢谢,尽管我的期望是:1。clip1在clip22之前开始。当clip2启动时,它与clip1合并。我们播放一些新的东西,比如clip3,它是clip1和clip2的组合我不确定为什么这是必要的--听起来像是一个潜在的--但是我已经用一个API更新了答案,让你可以合并流。我自己也没试过,但可能正是你想要的。