[英]Web audio API ChannelMergerNode not working as expected on Safari
[英]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.