为什么从getFloatFrequencyData为负值返回值?
问题描述:
我想从麦克风获取输入并将其传递到分析仪节点以提取频率数据。我探索网络音频Api和GetUserMedia有一段时间,但无法弄清楚为什么控制台中的所有值是负。不应该有积极的价值观吗?这些负面价值的意义是什么?为什么从getFloatFrequencyData为负值返回值?
navigator.mediaDevices.getUserMedia({audio: true, video:false}).then(function(stream){
aContext = new AudioContext();
analyser = aContext.createAnalyser();
microphone = aContext.createMediaStreamSource(stream);
microphone.connect(analyser);
analyser.connect(aContext.destination);
LoopFunc();
});
var LoopFunc = function(){
setInterval(function(){
frequencyData = new Float32Array(analyser.frequencyBinCount);
analyser.getFloatFrequencyData(frequencyData);
console.log(frequencyData);
},100);
}
答
getFloatFrequencyData
复制当前频率数据到通过浮点阵列。如果数组的元素数少于frequencyBinCount,则多余的元素将被删除。如果数组的元素多于frequencyBinCount,则多余的元素将被忽略。
频率数据以dB为单位。
然后导致了一个问题:What does negative numbers on the decibel scale mean?