浮動小数点数(浮動小数点)で表されるオーディオ信号の音量をどのように増減しますか。
ただの掛け算ですか?
float volume_control(float signal, float gain) {
return signal*gain;
}
次のようにデシベルを使用して、その関数をどのように制御できますか。
volume_control(x、28)//28DBを増やす必要があります。
浮動小数点数(浮動小数点)で表されるオーディオ信号の音量をどのように増減しますか。
ただの掛け算ですか?
float volume_control(float signal, float gain) {
return signal*gain;
}
次のようにデシベルを使用して、その関数をどのように制御できますか。
volume_control(x、28)//28DBを増やす必要があります。
はい、jsut乗算します。出力する場合は、慣例に応じて、必ず[0、1]または[-1、1]で出力をクランプしてください。
デシベルでは、次を使用します。
return signal * pow( 10.0f, db * 0.05f );
デシベルに関するwikiを参照してください。
はい、ゲインは単に係数を掛けているだけです。ゲインが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);
浮動小数点数で表されるオーディオ信号のボリューム(float)
あなたがしなければならない最初のことは、そのフロートが実際に何を意味するのかを知ることです。それは、dbで測定されたボリュームコントロールである可能性があり、特定の時間にスピーカーに送信する電気の量であるサンプルである可能性があり、特定の時点でのスピーカーの位置であるサンプルである可能性があります。
それが特定の時点での音波の「振幅」である場合、上記の計算は正確です。しかし、音がフロートとして表現されているという事実は、フロートが何を意味するのかについては何も教えてくれません。