cra*_*mmy 4 iphone formula core-audio avaudioplayer decibel
我想更新一个使用AudioQueue播放音频文件的现有iPhone应用程序.级别(peakPowerForChannel,averagePowerForChannel)是0.0f到1.0f的线性形式.
现在我喜欢使用更简单的类AVAudioPlayer工作正常,唯一的问题是现在以分贝为单位,而不是从-120.0f到0.0f的线性.
有没有人将公式转换回0.0f和1.0f之间的线性值?
谢谢
汤姆
inv*_*ame 12
几个Apple示例使用以下公式将分贝转换为线性范围(从0.0到1.0):
double percentage = pow (10, (0.05 * power));
Run Code Online (Sandbox Code Playgroud)
这里power是价值,你从不同的电平表的方法或功能,如AVAudioPlayer的一赠averagePowerForChannel:
线性和对数值转换背后的数学:
1.线性到分贝(对数):
decibelValue = 20.0f * log10(linearValue)
Run Code Online (Sandbox Code Playgroud)
注意:日志以 10 为底
假设以百分比形式表示的线性值从 [ 0 (min vol) 到 100 (max vol)] 那么一半体积(50%)的分贝值为
decibelValue = 20.0f * log10(50.0f/100.0f) = -6 dB
Run Code Online (Sandbox Code Playgroud)
完整音量:
decibelValue = 20.0f * log10(100.0f/100.0f) = 0 dB
Run Code Online (Sandbox Code Playgroud)
完全静音:
decibelValue = 20.0f * log10(0/100.0f) = -infinity
Run Code Online (Sandbox Code Playgroud)
2. 分贝(对数)到线性:
LinearValue = pow(10.0f, decibelValue/20.0f)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4569 次 |
| 最近记录: |