【问题标题】:Sound of a rolling ball滚球的声音
【发布时间】:2010-11-22 10:51:16
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 可能感觉不对,因为 wav 结尾的幅度与开头的幅度不匹配。在深入研究更复杂的领域之前,您可以尝试确保首先(使用淡入来启动声音)
  • 声音是短的连续采样,听起来“不错”,但我无法控制声音的性质与球的速度有关。很难形容:|
  • 真的不得不不同意超级用户的投票。我的意思是,为什么? Arul 不是在寻找播放声音的应用程序,而是在寻找一种方法来生成逼真的声音。
  • 球越快,您可以跳过的帧越多,因此在不改变音高的情况下听起来会更快。
  • 在投票结束前确实应该确认:“您是否费心阅读即将结束的问题?”。

标签: c sound-synthesis


【解决方案1】:

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

【讨论】:

  • 这实际上是一个不错的主意 - 本质上是一维平铺。
  • 后退的声音是不是和正常声音有质的区别?
  • 如果是短片,不会引起注意。这实际上是使循环声音无缝而不交叉淡化的好方法。
  • 这是否有效取决于声音。对于某些声音,即使是相对较短的源剪辑,它也非常明显。您的声音越接近真正的“噪音”,效果就越好。
  • 将向后版本的声音添加到自身并不能消除交叉淡入淡出的需要。不同频率范围内仍可能存在不连续性,从而导致爆音。
【解决方案2】:

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

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

【讨论】:

  • 我会研究一下,这种方法是否适合在资源相当有限的环境(智能手机)下实时使用?
  • 老实说 - 我不知道。如果知道球在已知条件下会发出某种声音,那么声音参数就是已知的。因此,您应该能够“缓存”足够多的合成声音,以便创建可循环播放的 wav 文件。我只记得我大学时代的 FFT,似乎是一个不错的方法。
  • 从 FFT 合成声音是合理的做法,但在这种情况下可能并非如此。滚动球的有趣之处在于频谱的瞬间变化。您可以使用整个处理器重新合成声音。特别是如果您使用变形加法合成。
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

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

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

    F = Fo * ( Vc / Vi )

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

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

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

    【讨论】:

    • 一个有趣的想法。更改低通滤波器的截止频率可能比更改声音的播放速度更好。
    • 那不会真正完成同样的事情。以不同速度滚动的声音不仅仅是频率扩展 - 它与声音的整体速度有关。想象一下通过低通滤波器运行汽车发动机的声音。无论您在哪里设置截止频率,发动机的“速度”(RPM)听起来都不会有任何不同。此外 - 实时播放频率调整更容易/更便宜。
    • 这最接近我当前的 +/- 工作实现,所以我接受这个答案。感谢大家的想法!
    【解决方案5】:

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

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

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

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

    【讨论】:

    • 有多种合成方法只占用处理器的一小部分。样本回放总是重复且明显的,所以我认为考虑合成可能性是个好主意。
    【解决方案6】:

    我非常喜欢这篇 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

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

    【讨论】:

    • 很高兴你喜欢它。祝你合成顺利。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    相关资源
    最近更新 更多