admin管理员组

文章数量:1384122

I'm trying to access FFT data from the analyser node using analyser.getByteFrequencyData(array) but it seems to return a blank array:

var array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(array);

However using analyser.getFloatFrequencyData(array) returns an array of data:

var array = new Float32Array(analyser.frequencyBinCount);
analyser.getFloatFrequencyData(array);

I'm using a signal chain as follows:

Source -> Analyser -> ScriptProcessor -> Context Destination

So why can I not get frequency data in byte form?

Thanks in advance.

I'm trying to access FFT data from the analyser node using analyser.getByteFrequencyData(array) but it seems to return a blank array:

var array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(array);

However using analyser.getFloatFrequencyData(array) returns an array of data:

var array = new Float32Array(analyser.frequencyBinCount);
analyser.getFloatFrequencyData(array);

I'm using a signal chain as follows:

Source -> Analyser -> ScriptProcessor -> Context Destination

So why can I not get frequency data in byte form?

Thanks in advance.

Share Improve this question asked Feb 3, 2013 at 20:56 RobotEyesRobotEyes 5,2508 gold badges47 silver badges61 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 3

Without seeing more of your code, my best guess is that you have the minDecibels and maxDecibels set to a range that is over the data you're pumping through the analyser, so it's getting zeroed out.

What are the odds that one of you got the data before playback started, so there was nothing to read yet? If that might be the case, try to call getByteFrequencyData after playback is started.

Check if smoothingTimeConstant is set to 1. When it is so, getFloatFrequencyData always returns an array of zeroes.

本文标签: javascriptWeb Audio API analyser node getByteFrequencyData returning blank arrayStack Overflow