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