2010-10-11 42 views
4

誰能告訴我爲什麼音量變低時我在openal中提高音高?音高越高,音量越低.....openal變調

alSourcef(source,AL_PITCH,1.2f); alSourcef(source,AL_GAIN,1.0f);

使用此設置,音量仍然非常低。有沒有辦法欺騙它使增益高於1?也許這與距離有關?

僅供參考,來源是從AVrecorder記錄的聲音,所以我不能將來源音量設置得更高。

+0

我假設你正在談論感知響度與某種觀察到的振幅變化......?你打什麼樣的樣品?您可能會降低頻率或超出硬件的能力來呈現它們(或您的耳朵感知它們)。 – Shog9 2010-10-11 18:40:15

+0

alSourcef(source,AL_PITCH,1.2f); alSourcef(source,AL_GAIN,1.0f); – Xiu 2010-10-11 18:45:22

+0

只是一點點的變化...。 – Xiu 2010-10-11 20:07:27

回答

3

Afaik振幅在音調變化的函數中會發生變化是不正常的。當音高設置得高於原始音高時,openal在乘法器不完整時使用某種內插法通過乘法器(afaik)加速採樣。

可能有一些罕見的情況下,幅度變化,但可能不是有很多的頻率內容較長的樣本(如最自然的聲音往往是)

多麼響亮,我們感覺到,幅度取決於在球場上,見equal loudness contour
也許這個效果解釋了你的問題?

作爲解決方法,您可以降低普通傾斜聲音的增益,並使用較高增益來提高傾斜聲音。
或者在附加/傳遞到緩衝區之前將源數據乘以乘數。

+0

啊,我喜歡源數據的乘數思想。我會研究這一點。謝謝埃米爾:) – Xiu 2010-10-13 17:57:43

+0

謝謝大家的幫助,我發現設置高於1的增益方式,如5或100解決了低容量問題。 :) – Xiu 2010-10-17 01:39:01