簡體   English   中英

Web音頻API分析器節點無法按預期工作

[英]Web Audio API Analyzer Node not working as expected

我只是試圖在此代碼中讀取1000Hz正弦波的FFT值。 但是,控制台輸出顯示“ -128” 1000次。 為什么分析器節點不能在其中工作?

window.onload = init;
var sourceNode;

function init(){

var context = new AudioContext();
var osc = context.createOscillator();
var analyser = context.createAnalyser();
var gain = context.createGain();
sourceNode = context.createBufferSource();
var amplitudeArray = new Float32Array(analyser.frequencyBinCount);

osc.frequency.value=1000;
osc.start();


gain.gain.value=0.07;

osc.connect(analyser);
analyser.connect(gain);
gain.connect(context.destination);

analyser.getFloatFrequencyData(amplitudeArray);

for(var i=0;i<amplitudeArray.length;i++){
    console.log(amplitudeArray[i]);
}

}

在這種情況下,因為您正在立即請求數據; 盡管您已經調用了osc.start(),但是音頻系統尚未處理任何數據,因此,當您調用getFloatFrequencyData()時,它已充滿了空數據。 (FloatFrequencyData以分貝為單位,因此-128是本底噪聲-也稱為“零”)。

如果在start()和getFloatFrequencyData()調用之間有足夠的時間間隔來處理一些音頻,我希望您會看到一些數據。

基本上,您是在振盪器啟動時立即向分析儀詢問FFT數據。 此時,內部緩沖區充滿零,因此輸出為-128 dB。 也就是說,一切都為零。

嘗試等待一秒鍾,然后再調用analyser.getFloatFrequencyData。 您會看到輸出不是恆定的-128。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM