2009-06-23 18 views
2

幾天前,這是我的問題,我找到了答案。也許這會幫助別人。答:問題的第一部分:你可以用Flash放大聲音嗎?爲SoundTransform在AS3的文件說,這個有關卷屬性:如何在AS3中按指定的分貝數放大聲音?

「的音量範圍從0(靜音)至1(最大音量)

在面值,這意味着你只能讓聲音更安靜。事實上,如果你提供的值大於一(1.0),聲音會被放大,你可能會聲音飽和並且質量很差,但是你可以做到,而且對於聲音來說,你可以逃脫很多。這個方法沒有做動態壓縮,它更適合於音樂)

B.問題的第二部分:你做事的順序

RIGHT:

soundTransform = new SoundTransform(); 
soundTransform.volume = volume * volumeAdjustment; 
audioChannel.soundTransform = soundTransform; 

WRONG:

soundTransform = new SoundTransform(); 
audioChannel.soundTransform = soundTransform; 
soundTransform.volume = volume * volumeAdjustment; 

我的確在CS3和CS4一些測試,並得到了不同的結果。在CS3中,我可以在變形後設置音量「audioChannel.soundTransform = soundTransform;」一切都很好。但在CS4中它沒有效果。我懷疑CS3使用通過引用來設置soundTransform,而CS4使用通過值語義並複製傳入它的對象。 CS4的方法設計得更好,但是打破了CS3中正常工作的代碼。

C.最後一個問題是如何將分貝值轉換爲可以乘以音量以放大(或靜音)所需量的因子。請注意,「分貝」可能是一個正數(放大)或負數(使得更安靜)。如果分貝爲零,則不會發生變化。

分貝值爲3的值(近似值)是振幅的兩倍。 10分貝的值將使音量增加10倍(正好)。

+0

您應該將此問題的答案部分移到下面的實際答案中,以便它不會顯示爲未答覆的問題。 – endolith 2009-07-23 16:00:47

回答

4

你的分貝計算應真正使用20,不是10:

var multiplier:Number = Math.pow(10, decibels/20); 

Digital audio is amplitude, not power(它的聲壓的表示,不健全的功率)。

+0

你是對的。感謝您指出了這一點。我將編輯我的帖子。 – 2009-07-23 19:14:00