振荡器的Web音频FFT?

时间:2013-09-07 15:10:19

标签: javascript html5 audio fft web-audio

我正在尝试在振荡器上使用Web Audio的FFT。

相关代码:

var context = new window.webkitAudioContext

var osc = context.createOscillator()
var an = context.createAnalyser()
osc.connect(an)
an.connect(context.destination)

osc.start(0)
osc.stop(context.currentTime + 2) //play sine wave for 2 seconds

var freqDomain = new Int8Array(an.frequencyBinCount)
an.getByteFrequencyData(freqDomain)
console.dir(freqDomain) //all 0's

另外,调用an.getTimeDomainData也不会返回任何内容。我做错了什么?

1 个答案:

答案 0 :(得分:1)

上面的代码中发生的是,您立即尝试获取字节频率数据 - 但由于音频尚未启动,因此尚无数据。只要您想将数据从AnalyserNode复制到getByteFrequencyData数组中,就需要调用freqDomain

您可以使用ScriptProcessorNode,或使用简单的setInterval来调用分析,例如

var freqDomain = new Int8Array(an.frequencyBinCount);

function proc () {
  an.getByteFrequencyData(freqDomain);
  console.log(freqDomain[0]); // Just output one element so we don't destroy the console
}
setInterval(proc, 22);