为什么getFloatFrequencyData返回的值为负?

时间:2017-06-14 13:19:22

标签: javascript fft microphone getusermedia web-audio-api

我想从麦克风获取输入并将其传递给分析器节点以提取频率数据。我有一段时间探索了 Web Audio Api GetUserMedia ,但无法弄清楚为什么控制台中的所有值都是否定。不应该有积极的价值观吗?这些负面价值观有何意义?

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);
      }

1 个答案:

答案 0 :(得分:1)

来自the spec

  

getFloatFrequencyData

     

将当前频率数据复制到传递的浮点数组中。如果数组的元素少于frequencyBinCount,则会删除多余的元素。如果数组的元素多于frequencyBinCount,则多余的元素将被忽略。

     

频率数据以dB为单位。

然后会出现问题:What does negative numbers on the decibel scale mean?