AudioQueueLevelMeterStateで取得したレベルを音波の振幅に対応させたいがわからない

投稿者: Anonymous

まず、一般的な部分についてです。
リニアPCM-16bit音源のダイナミックレンジについて質問です。

よく解説に16bitは2の16乗まで表せるので
20*log10(2^16)~96.32dBまで表現可能という解説を見ます。
ですが、波動の場合振幅は(上限-下限)/2になると思います。
だとすると振幅の最大値は2^15が最大値ではないかと思いました。

すると、振幅のピークは
20*log10(2^15)~90.3程度になると思うのですが、
どうして96dBまで扱うことができるのでしょうか。

AudioQueueLevelMeterStateの
mPeakPower/mAveragePowerに対して96.3を足せば、
ほぼ実際の音量レベルに対応するのでしょうか。
とすると取得した音波のレベルをLとして10^(L/20)が振幅バージョンのRMS値に相当するでしょうか。

解決

 何故2で割らなければいけないのでしょうか?16ビットで、音量・音圧を表すのですから、無音=0から、最大音量=2^16 ではないですか?

 @shin-ichiさんが勘違いしておられるのは、サンプリングレートがナイキスト周波数を超えると標本化されなくなので、録音できる周波数はサンプリングレートの1/2であることと混同しておられる気がします。

 こちらの勘違いの可能性も充分ありますが、その際はご容赦下さい。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *