Actionscript 3 在AS3中,如何将声音放大指定的分贝数?

Actionscript 3 在AS3中,如何将声音放大指定的分贝数?,actionscript-3,audio,flash-cs4,flash-cs3,volume,Actionscript 3,Audio,Flash Cs4,Flash Cs3,Volume,几天前,这是我的问题,我找到了答案。也许这会帮助其他人 问题的第一部分:你能用闪光灯放大声音吗?SoundTransform的AS3文档说明了音量属性: “卷,范围从0(静默)到1(完整卷) 从表面上看,这意味着您只能使声音变得更安静。事实上,如果您提供的值大于1(1.0),声音将被放大。您可能会使声音饱和,质量变差,但您可以做到这一点,而对于声音,您可以逃脱很多。(音乐不那么宽容,所以进行实验。这种方法不进行动态压缩,更适合音乐。) 问题的第二部分:你做事的顺序 对: soundTransfo

几天前,这是我的问题,我找到了答案。也许这会帮助其他人

问题的第一部分:你能用闪光灯放大声音吗?SoundTransform的AS3文档说明了音量属性:

“卷,范围从0(静默)到1(完整卷)

从表面上看,这意味着您只能使声音变得更安静。事实上,如果您提供的值大于1(1.0),声音将被放大。您可能会使声音饱和,质量变差,但您可以做到这一点,而对于声音,您可以逃脱很多。(音乐不那么宽容,所以进行实验。这种方法不进行动态压缩,更适合音乐。)

问题的第二部分:你做事的顺序

对:

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

soundTransform = new SoundTransform();
audioChannel.soundTransform = soundTransform;
soundTransform.volume = volume * volumeAdjustment;
我在CS3和CS4中做了一些测试,得到了不同的结果;“一切都很好。但在CS4中没有效果。我怀疑CS3使用按引用传递来设置soundTransform,而CS4使用按值传递语义并复制传递给它的对象。CS4方法设计得更好,但确实破坏了我在CS3中工作得很好的代码

C.最后一个问题是,如何将分贝值转换成可以乘以音量的系数,以将声音放大(或静音)所需的量

var multiplier:Number = Math.pow(10, decibels / 20); // Power vs. amplitude
请注意,“分贝”可以是正数(放大)或负数(使声音更安静)。如果分贝为零,则不会发生变化

分贝值为3将使振幅加倍(接近近似值)。
10分贝的值将使音量增加十倍(精确)。

您的分贝计算应实际使用20,而不是10:

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

(这是声压的表示,而不是声功率).

你应该将这个问题的答案部分移到下面的实际答案中,这样它就不会显示为未回答的问题。你是对的。谢谢你指出这一点。我将编辑我的帖子。放大声音意味着放大振幅,对吗?@Nijat2018放大可能意味着增加功率或振幅。