球滚动的声音
我正在寻找播放滚动球声音的最真实的方式。目前,我正在使用 Wav 样本,只要球在移动,我就会一遍又一遍地播放它 - 这感觉不太对劲。
我一直在考虑完全合成声音,对此我知之甚少(几乎一无所知),我将不胜感激任何有关合成由特定材料制成的在表面滚动的球的声音的教程/研究材料/样本另一种材料的。另外,如果这个想法完全错误,请建议另一种方法。
谢谢!
I'm looking for the most realistic way of playing sound of a rolling ball. Currently I'm using a Wav sample that I play over and over as long as the ball is moving - which just doesn't feel right.
I've been thinking about completely synthesizing the sound, which I know very little about (almost nothing), I'd be grateful for any tutorials/research materials/samples concerning synthesis of sound of a ball made of particular material rolling on surface made of another material. Also if this idea is completely wrong, please suggest another way of doing this.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我猜想,通过对声音进行动态频率调整,使播放频率与球的速度成正比,您将获得最大的收益。我不知道您使用什么类型的声音库,但大多数都会支持这种声音库的某些变体。
例如,在 FMOD 中,您可以使用 Channel::setFrequency 方法。理想情况下,您可以根据 WAV 的原始采样频率 (Fo)、球的当前速度 (Vc) 以及默认 WAV 听起来正确的球的“理想”速度 (Vi) 来计算所需的播放频率。通常类似于:
F = Fo * ( Vc / Vi )
当球远离“理想”速度时,这往往会崩溃。您可能想要有几个不同的 WAV,它们适合您在特定阈值速度下切换到的不同速度范围。在每个 WAV 的括号内,您可以进行相同类型的频率调整。
另请注意:这可能不值得每一帧都做。我猜每秒执行此操作超过 20 次就会浪费时间。
附录:像这样的回放频率缩放也可以用于模拟多普勒效应。一旦调整了播放频率,您就可以根据球相对于“听众”(摄像机)的速度执行另一个频率缩放。
I would guess that you'll get the biggest bang for your buck by doing a dynamic frequency adjustment on the sound that makes the playback frequency proportional to the velocity of the ball. I don't know what type of sound library you use, but most will support some variant of this.
For example, in FMOD you could use the Channel::setFrequency method. Ideally, you would compute your desired playback frequency based on your WAV's original sample frequency (Fo), the ball's current velocity (Vc), and the ball's 'ideal' velocity at which the default WAV sounds right (Vi). Something generally like:
F = Fo * ( Vc / Vi )
This will tend to break down as the ball gets farther away from the 'ideal' velocity. You might want to have several different WAVs that are appropriate for different speed ranges that you switch to at certain threshold velocities. Within each WAV's bracket, you'd do the same kind of frequency adjustment.
Another note: this is probably not something that is worth doing every frame. I'd guess that doing this more than 20 times per second would be a waste of time.
ADDENDUM: Playback frequency scaling like this can also be used for simulating the Doppler effect as well. Once you have your adjusted playback frequency, you'd perform another scale of the Frequency based on the velocity of the ball relative to the 'listener' (the camera).
您是否尝试过向前播放声音,然后向后播放,然后循环播放?我以图形方式使用这个技巧来创建重复模式。我对声音不太了解,但它可能有用吗?
Have you tried playing the sound forward, then playing it backward, and looping that? I use this trick graphically to creating repeating patterns. I don't know much about sound but it might work?
一种方法可能是分析滚动球的声音,并将其分解为其分量波形。然后您就可以使用合成波生成您自己的 wav 文件。
您应该能够对声音样本使用 FFT 来完成此操作。
一个缺点是声音可能听起来是合成的 - 您必须添加噪音等才能使其听起来更真实。让它听起来足够真实可能是最困难的部分。
One approach might be to analyze the sound of a rolling ball, and decompose it into its component waveforms. Then you'd be able to generate your own wav file with synthesized waves.
You should be able to do this using an FFT on a sample of the sound.
One drawback is that the sound will likely sound synthesized - you'll have to add noise and such to make it sound more realistic. Getting it to sound real enough may be the hardest part.
我不认为你需要麻烦来综合它。甚至听起来都很难令人信服。
根据场景的情况,您可以向前/向后循环声音,并应用低通滤波器和/或更改其音调来模拟多普勒效应。
顺便说一句,freesoung.org 是获取免费样品的好地方。它们不是专业记录的,但是是操作的一个很好的起点。另一方面,声音创意有一些很棒的示例 CD(它们实际上是行业标准),如果你可以便宜地找到它们。你只需要搜索哪一个有滚球的声音。
I don't think you need the trouble to synthesize that. It would be way too hard to even sound convincing.
Depending on how your scene is, you could loop the sound foward/backwards and simulate a doppler effect applying a low pass filter and/or changing it's pitch.
By the way, freesoung.org is a great place for free samples. They are not professionally recorded but are a good starting point for manipulation. On the other hand, sound ideas has some great sample cds (they're actually industry standard) if you can find them on the cheap. You just have to search for which one has rolling ball sounds.
我真的很喜欢这篇 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
我不确定你是否可以让它在智能手机上运行,但是通过足够高效的卷积例程/近似,你也许能够做一些有趣的事情......
I really like the approach described in this SIGGRAPH paper:
http://www.cs.ubc.ca/~kvdoel/publications/foleyautomatic.pdf
It describes synthesizing the sound of a rock rolling in a wok (no, really :). The idea is to use modal synthesis (i.e. convolved impulse responses), and the results can be very convincing.
Here's a link to the video demo that goes with the paper:
http://www.cs.ubc.ca/~kvdoel/publications/foleyautomatic.mpeg
And here's a link to the JASS library (written by one of the authors), which was used to create the sound for the video:
http://www.cs.ubc.ca/~kvdoel/jass/jass.html
I'm not sure if you could make it run on a smart phone, but with an efficient enough convolution routine/approximation you might be able to do something interesting...
我的问题是“为什么?” - 你认为这有什么好处,还是只是为了好玩?你的问题意味着你对你正在使用的 wav 不满意,但我坚信,合成你自己的声音听起来会差很多。
如果您的 wav 样本听起来不正确,我建议尝试找到另一个样本。合成声音并不容易,而且听起来永远不会像样本那样真实。
实时综合可能需要更多资源来进行处理和计算。您很可能最终将合成声音预渲染为 wav 文件并执行播放。
如果您想模拟不同材料的声音,那么您可以使用一些 DSP,甚至可以使用减慢或加快 wav 播放速度等简单技巧。最简单的方法是在另一个应用程序中预渲染这些文件,并为每次使用存储一份文件副本。
My question is 'why?' - do you see some benefit in this, or is it just for fun? Your question implies that you aren't happy with the wav you are using but I strongly believe that synthesising your own is going to sound far inferior.
If your wav sample doesn't sound right, I'd suggest try to find another sample. Synthesising a sound is not easy and is never going to sound as realistic as your sample.
Real time synthesis may require more resources for processing and computation. You may very well end up prerendering your synthesised sound into a wav file and performing a playback.
If you want to simulate the sound of different materials then you can use some DSP, or even simple tricks like slowing or speeding the wav playback. The simplest way is the prerender these in another application and store one copy of the file for each use.