0

浮動小数点数(浮動小数点)で表されるオーディオ信号の音量をどのように増減しますか。

ただの掛け算ですか?

float volume_control(float signal, float gain) {

    return signal*gain;

}

次のようにデシベルを使用して、その関数をどのように制御できますか。

volume_control(x、28)//28DBを増やす必要があります。

4

3 に答える 3

3

はい、jsut乗算します。出力する場合は、慣例に応じて、必ず[0、1]または[-1、1]で出力をクランプしてください。

デシベルでは、次を使用します。

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

デシベルに関するwikiを参照してください。

于 2012-11-09T12:50:37.980 に答える
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);
于 2012-11-09T12:49:21.760 に答える
1

浮動小数点数で表されるオーディオ信号のボリューム(float)

あなたがしなければならない最初のことは、そのフロートが実際に何を意味するのかを知ることです。それは、dbで測定されたボリュームコントロールである可能性があり、特定の時間にスピーカーに送信する電気の量であるサンプルである可能性があり、特定の時点でのスピーカーの位置であるサンプルである可能性があります。

それが特定の時点での音波の「振幅」である場合、上記の計算は正確です。しかし、音がフロートとして表現されているという事実は、フロートが何を意味するのかについては何も教えてくれません。

于 2012-11-09T13:38:15.237 に答える