9

我正在寻找最真实的方式来播放滚动球的声音。目前我正在使用一个 Wav 样本,只要球在移动,我就会一遍又一遍地播放——这感觉不太对劲。

我一直在考虑完全合成声音,我对此知之甚少(几乎一无所知),我将不胜感激任何关于合成由特定材料制成的球的声音的教程/研究材料/样本在表面上滚动另一种材料的。此外,如果这个想法完全错误,请提出另一种方法。

谢谢!

4

6 回答 6

8

我猜想通过对声音进行动态频率调整,使播放频率与球的速度成正比,您将获得最大的收益。我不知道您使用哪种类型的声音库,但大多数会支持这种类型的一些变体。

例如,在FMOD中,您可以使用 Channel::setFrequency 方法。理想情况下,您将根据 WAV 的原始采样频率 (Fo)、球的当前速度 (Vc) 以及默认 WAV 听起来正确的球的“理想”速度 (Vi) 来计算所需的播放频率。一般是这样的:

F = Fo * ( Vc / Vi )

随着球离“理想”速度越来越远,这将趋于崩溃。您可能希望有几个不同的 WAV,它们适用于您在某些阈值速度下切换到的不同速度范围。在每个 WAV 的括号内,您将进行相同类型的频率调整。

另一个注意事项:这可能不是每一帧都值得做的事情。我猜每秒这样做超过 20 次会浪费时间。

附录:像这样的回放频率缩放也可以用于模拟多普勒效应。调整好播放频率后,您将根据球相对于“听众”(相机)的速度执行另一个频率比例。

于 2009-08-24T23:29:38.173 回答
6

您是否尝试过向前播放声音,然后向后播放,然后循环播放?我以图形方式使用这个技巧来创建重复模式。我对声音不太了解,但它可能有用吗?

于 2009-08-24T23:02:34.623 回答
5

一种方法可能是分析滚球的声音,并将其分解成其分量波形。然后你就可以用合成波生成你自己的 wav 文件。
您应该能够对声音样本使用 FFT 来执行此操作。

一个缺点是声音可能听起来是合成的——你必须添加噪音等以使其听起来更真实。让它听起来足够真实可能是最难的部分。

于 2009-08-24T23:03:32.547 回答
3

我认为你不需要麻烦来合成它。听起来很难令人信服。

根据您的场景,您可以向前/向后循环声音并模拟多普勒效应,应用低通滤波器和/或改变它的音高。

顺便说一句,freesoung.org是一个免费样品的好地方。它们不是专业录制的,但它们是操作的良好起点。另一方面,如果你能以便宜的价格找到它们, sound idea有一些很棒的样本 CD(它们实际上是行业标准)。你只需要搜索哪个有滚动球的声音。

于 2009-08-24T23:12:10.267 回答
3

我真的很喜欢这篇 SIGGRAPH 论文中描述的方法:

http://www.cs.ubc.ca/~kvdoel/publications/foleyautomatic.pdf

它描述了在锅中合成摇滚乐的声音(不,真的:)。这个想法是使用模态合成(即卷积脉冲响应),结果可以非常有说服力。

这是论文附带的视频演示链接:

http://www.cs.ubc.ca/~kvdoel/publications/foleyautomatic.mpeg

这是 JASS 库(由其中一位作者编写)的链接,用于为视频创建声音:

http://www.cs.ubc.ca/~kvdoel/jass/jass.html

我不确定你是否可以让它在智能手机上运行,​​但是通过足够有效的卷积例程/近似值,你可能会做一些有趣的事情......

于 2010-02-19T12:12:25.723 回答
2

我的问题是“为什么?” - 你觉得这有什么好处,还是只是为了好玩?您的问题意味着您对正在使用的 wav 不满意,但我坚信合成自己的 wav 听起来会差很多。

如果您的 wav 样本听起来不正确,我建议您尝试寻找另一个样本。合成声音并不容易,而且听起来永远不会像您的样本那样逼真。

实时合成可能需要更多资源用于处理和计算。您很可能最终将合成的声音预渲染为 wav 文件并执行播放。

如果您想模拟不同材料的声音,那么您可以使用一些 DSP,甚至可以使用一些简单的技巧,例如减慢或加快 wav 播放速度。最简单的方法是在另一个应用程序中预渲染这些文件,并为每次使用存储一个文件副本。

于 2009-08-24T23:30:56.953 回答