我怎么能一起演奏两种声音?

时间:2015-09-23 02:36:12

标签: java audio

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

1 个答案:

答案 0 :(得分:0)

大部分内容都是使用java.sound.sampled库实现的。专注于Clip的功能。 This site使用样本和MIDI文件提供了一些非常好的样板。它甚至有一个游戏的例子。

无论如何,基于StackOverflow的javasound page,下面是一次播放两个Clip s的粗略示例:

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!");
        }
    });
}

更新

如果你绝对必须使用单个输入流,你可以尝试MixingAudioInputStream