2014-10-07 93 views
3

我正在嘗試使用Web-Audio的分析器節點,並不斷從它得到奇怪的結果。webaudio的AnalyserNode的FFT值超出範圍

代碼:

var self = this; 
var bufferSize = 512; 
var spectrum = new Float32Array(bufferSize/2); 

self.analyser = audioContext.createAnalyser(); 
self.analyser.fftSize = bufferSize; 
self.analyser.smoothingTimeConstant = 0; 
self.analyser.minDecibels = -120; 
self.analyser.maxDecibels = 0; 
self.analyser.getFloatFrequencyData(spectrum); 
source.connect(self.analyser); 

即使我明確地設置最大和最小分貝值,我仍然可以是小於-120值,例如,-180。另外,當我使用分析儀時,我發現這些值實際上是變化的,但FFT仍然給我的值比預期的要低。

我正在使用立體聲mp3文件來測試它,這可能是一個問題嗎?

任何想法?

回答

1

最小和最大分貝僅影響getByteFrequencyData值,而不影響getFloatFrequencyData值。 「用於轉換爲無符號字節值的FFT分析數據的縮放範圍中的最小/最大功率值。」

+0

從[documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode):AnalyserNode.minDecibels 是一個double值,表示在縮放範圍內的最小功率值FFT分析數據,用於轉換爲無符號的字節/浮點值 - 基本上,這指定了使用getFloatFrequencyData()或getByteFrequencyData()時結果範圍的最小值。 – nevos 2014-10-08 08:01:37

+1

這是Mozilla文檔中的錯誤。 spec(http://webaudio.github.io/web-audio-api/#widl-AnalyserNode-maxDecibels)明確指出「用於轉換爲無符號字節值」,沒有關於浮點值的任何內容。 – cwilso 2014-10-08 20:47:23

+1

我向Mozilla文檔頁面提交了一個修復程序。 – cwilso 2014-10-08 20:49:56