iphone - 如何使用 OpenAL 即时生成和播放白噪声?

标签 iphone ios audio core-audio openal

我在应用程序中使用 OpenAL 来播放基于 *.caf 音频文件的声音。

有一个tutorial which describes how to generate white noise in OpenAL :

amplitude - rand(2*amplitude)

但他们正在创建一个包含 1000 个样本的缓冲区,然后使用

循环该缓冲区
alSourcei(source, AL_LOOPING, AL_TRUE);

这种方法的问题是:由于直流偏移,循环白噪声无法像这样工作。声音中会有明显的颤动。我知道,因为我尝试循环在不同应用程序中生成的数十个白噪声区域,并且所有这些区域都有相同的问题。即使在尝试交叉淡入淡出并确保这些区域被剪切到零交叉之后也是如此。

由于(根据我的理解)OpenAL 比音频单元或音频队列更底层,因此必须有一种方法以连续的方式动态生成白噪声,从而不需要循环。

也许有人可以指出一些有关该主题的有用资源。

最佳答案

变化最小的解决方案可能只是创建一个更长的 OpenAL 噪声缓冲区(几秒),这样摆动的速率太低而不易听到。任何隐藏在 44Hz 重复(44.1k 采样率下 1000 个样本)中的波形都在人类正常听力范围内。

关于iphone - 如何使用 OpenAL 即时生成和播放白噪声?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7438511/

相关文章:

java - 平滑的频率变化

ios - 如何在 UITableView 的单元格内添加 KASlideShow

ios - 未找到框架 GoogleMapsBase

windows - 如何防止Safari自动播放HTML5音频元素

ios - 在 ViewControllers Swift 3 之间传递 Double

ios - @import 非法接口(interface)限定符

audio - 如何使用ffmpeg在视频中复制立体声音频中的音频 channel

iphone - 我不知道为什么我的观点卡住

ios - 为每个 iPhone 型号提交单独的 IPA

iphone - 配置文件问题