从浮动样本中更改音量

时间:2012-11-09 12:45:41

标签: c++ audio signal-processing volume

如何增加或减少以浮点数(浮点数)表示的音频信号的音量。

这只是一个乘法吗?

float volume_control(float signal, float gain) {

    return signal*gain;

}

你怎么能控制那个功能,让我们说分贝如下:

volume_control(x,28)//应该增加28个数据库。

3 个答案:

答案 0 :(得分:2)

是的,增益只是乘以一个因素。增益1.0不会改变音量(0 dB),0.5会降低2倍(-6 dB),2.0会增加2倍(+6 dB)。

将dB增益转换为适用于样本值的合适因子:

double gain_factor = pow(10.0, gain_dB / 20.0);

答案 1 :(得分:2)

是的,jsut倍增。如果输出它,请确保根据您的约定将输出钳位在[0,1]或[-1,1]中。

以分贝为单位,使用:

return signal * pow( 10.0f, db * 0.05f );

请参阅分贝上的wiki

答案 2 :(得分:1)

  

音频信号的音量,以浮点数(浮点数)表示

你要做的第一件事是找出浮动实际意味着什么。它可以是以db为单位测量的音量控制,它可以是在特定时间发送给扬声器的电量的样本,它可以是在特定时间点扬声器位置的样本。

如果是特定时间点声波的“幅度”,则上述计算是准确的。但声音表示为浮动的事实并没有告诉你任何浮动意味着什么。