将分贝范围转换为字节范围

时间:2017-01-30 00:10:51

标签: c++ audio algebra fmod

问候,

我正在尝试找到一个公式来转换范围:

min = -100db且max = -30db

为:

min = 0且max = 255

例如:-60db =?

看似简单,但它让我头晕目眩。

1 个答案:

答案 0 :(得分:2)

假设你的意思是保持db的结果,你需要一个简单的线性插值:

f(x) = ymin + (x - xmin)*(ymax - ymin)/(xmax - xmin)

或在您的情况下,

f(x) = 0 + (x + 100)*(255 - 0)/(-30 + 100) 
f(-60 db) = 145.714 

如果您正在谈论将db转换为用于乘以音频信号的比例因子,那么它会更复杂一些。例如,将音频信号乘以0是负无穷大db。所以(至少)你必须要特殊情况。