我正在尝试使用analyser.getByteFrequencyData(array)
从分析器节点访问FFT数据,但它似乎返回一个空白数组:
var array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(array);
但是使用analyser.getFloatFrequencyData(array)
会返回一个数据数组:
var array = new Float32Array(analyser.frequencyBinCount);
analyser.getFloatFrequencyData(array);
我正在使用如下信号链:
Source
- > Analyser
- > ScriptProcessor
- > Context Destination
那为什么我不能以字节形式获得频率数据?
提前致谢。
答案 0 :(得分:1)
如果没有看到更多的代码,我最好的猜测是你将minDecibels和maxDecibels设置为超过你通过分析仪抽取的数据的范围,因此它会被清零。
答案 1 :(得分:1)
你们中的一个人在播放开始之前获得数据的几率是多少,所以还没有什么可读的?如果可能是这种情况,请在播放开始后尝试拨打getByteFrequencyData
。
答案 2 :(得分:0)
检查smoothingTimeConstant
是否设置为1
。如果是这样,getFloatFrequencyData
总是返回一个零数组。