AudioKit支持将音频文件规范化为给定的最大级别,单位为分贝(dB)。
我的理解是这些是场量而不是电量。
因此,这不应该是var X,
i=0,
lastmove = 100; //Randomly initialize function
function A(){
console.log('A');
}
function B(){
console.log('B');
}
function C(){
console.log('C');
}
function pickFunc(){
var temp = Math.floor(Math.random() * 3) + 1;
if(temp==lastmove)
temp = pickFunc()
else
lastStr = temp;
if(temp == 1)
return A();
else if(temp == 2)
return B();
else
return C();
}
function startGame(){
X = pickFunc();
for(i; i<10; i++)
X()
}
而不是/ 20.0
?
/ 10.0
并且不应该是let gainFactor = Float( pow(10.0, newMaxLevel / 10.0) / pow(10.0, level / 10.0))
而不是20 *
?
10 *
有问题的代码:
参考:
http://www.sengpielaudio.com/calculator-db.htm
https://en.wikipedia.org/wiki/Field,_power,_and_root-power_quantities
谢谢!
答案 0 :(得分:2)
这是电气工程专业学生在以对数尺度了解功率增益和电压/电流增益时常见的误解,我很惊讶你在这里遇到过它。
在我的领域中,对数比例图最常用于表示系统在给定频率范围内的功率增益。在这种情况下,10分贝的功率上升对应于功率增加10倍。然而,对于电压和电流来说,情况并非如此;如果信号的电压或电流增加10倍,那么信号的功率增加不为10倍,则为sqrt(10)〜= 3.16。这是因为功率与电压和电流的平方成比例增加。
因此,当我们用一个等式的对数来记录信号的频率时,我们会发现这样的事情; (对于电阻器)
log(P(ω)) = log(V(ω)^2 / R) = 2log(V(ω)) - log(R)
将两边乘以10可将Bels转换为分贝;
10log(P(ω)) = 20log(V(ω)) - 10log(R)
声波的振幅和功率之间的关系类似于电信号AFAIK的振幅和功率之间的关系。这就是为什么幅度增加20 dB对应幅度增加10倍,功率增加10 dB相当于功率增加10倍。
P.S。要回答您的问题,您需要确定水平是功率单位还是幅度单位。你对这个功能使用的单位比我更了解,因为我对音频文件的体验非常有限,但我的直觉是音频文件是幅度的表示,在这种情况下你会是正确的;转换因子需要为20,而不是10。