Audible在OpenAL中进行音高变换时单击

时间:2010-03-02 15:37:37

标签: iphone openal

我正在使用OpenAL来调整音符。 e.g。

alSourcef(source, AL_PITCH, aPitch);

当我这样做时,我注意到一声咔哒声。除此之外,音高是完美的,正确的音高等。 可能导致这种情况的任何想法?

2 个答案:

答案 0 :(得分:0)

我没有使用过OpenAL,但在其他声音库中我看过这个“神器”。通常情况下,当处理音调发生器等变量时,音调达到100%的音量水平,我可以为我的生活不记得它叫什么:)

像这样:

playTone(400 Hz, 40 dB, 50 ms, 3000 ms).

其中400是Hz,40 dB是音量,3000毫秒是持续时间, 50毫秒是从音量0(或+ 100dB)开始音调达到40 dB所需的时间。我现在根本找不到这个词。

无论如何,如果你有能力设置这个变量,尝试这样做,只需将它设置为10毫秒。你无法听到它,但它在我用于iPhone的开源声音库和我过去使用的一些Java / Processing库中为我删除了咔嗒声。

也许它与底层代码触发连接到扬声器的某些硬件的方式有关?

答案 1 :(得分:0)

我有这方面的经验,主要是因为你移动的音高太高或太低,移动音高是拉伸或缩小波数据长度,如果你的数据没有足够的样本来拉伸它将是声音“怪异”,如果你的播放缓冲区没有足够的采样时间来缩短长度(俯仰),它会滞后或抖动,因为从概念上讲,播放速率会增加,因为缩短了音频的长度,你听到的大多是点击或弹出。

为了防止这种情况,你应该限制移动范围,大多数声卡的限制大多在0.5到2.0之间,并且它在声卡上有所不同,因为通过使用一些先进的平滑和处理可以改变音高。 DSP,因此它将依赖于您的DSP或CPU的处理能力来进行此类处理。我尝试使用板载intel HDA,限制大多是0.5到2.0,但使用X-Fi声卡它更好,转移到0.1 .. 5.0没有问题