用Java混合声音?

时间:2009-04-09 05:59:13

标签: java audio clip

如果在同一时间发出许多其他声音,我如何在任何给定时间多次播放相同的声音?现在我有一个“剪辑”播放但它不会与自身重叠。 (我听到一声子弹,声音结束然后再次播放)。我正在编写一个带有快速子弹发射系统的游戏,但我无法让声音很好地工作。当你每秒在屏幕上产生20+时,每半秒钟只能听到一个子弹,这听起来“不对”。

有任何帮助吗?指针? :d

3 个答案:

答案 0 :(得分:1)

这似乎回答了你的问题:

http://my.safaribooksonline.com/9781598634761/ch09lev1sec3

引用:

“换句话说,单个Clip对象不能与其自身混合,只能与其他声音混合。如果您使用短音效,此过程效果很好,但如果您的声音片段长度为一秒或更长,则听起来很奇怪。 [...]如果您想重复混合一个剪辑,有两个重要选项(另一个不太可能的选项): 1)将声音文件加载到多个Clip对象(例如数组)中,然后按顺序播放每个对象。每当您需要播放此特定声音时,只需遍历数组并找到已播放完毕的片段,然后再开始播放。“

因此原则上Java确实会混合,而不是在单个剪辑中。

答案 1 :(得分:1)

一次播放20个bullit剪辑可能会有点cpu密集。可能没事。我制作了一个风铃,曾经演奏了7个钟声,重叠(每个长约3或4秒),然后设置它每5秒钟播放约100个钟声。但该计划没有做任何其他事情。

使用Clips,要做到这一点,您需要制作多个副本,并且所有音频数据都将位于那里,占用RAM。如果它们真的很短,那就不是这样的牺牲。但是对于快速射击,大多数游戏使用的解决方案是切断声音并重新启动。你不必播放声音直到最后。

myClip.stop();
myClip.setFramePosition(0);
myClip.start();
随着每个暴涨开始。这是最常做的事情。它比重叠的Clip解决方案使用更少的CPU和更少的RAM。

答案 2 :(得分:0)

AudioClip可能就是你想要的东西 - 我在播放短.wav音效的游戏中使用它,它并不完美,但它在大多数情况下都能正常工作。