Javascript AnalyzerNode在什么时候执行其FFT?

Javascript AnalyzerNode在什么时候执行其FFT?,javascript,web-audio-api,Javascript,Web Audio Api,我正在尝试使用Web音频API编写一个自相关算法。自相关只依赖于时域中的数据,而不是频域中的数据,因此我只使用getByteTimeDomainData()。我很难找到有关如何实现AnalyzerNode的信息。根据我在中的阅读,我不清楚FFT是否仅在调用getByTefFrequencyData()时运行,或者它是否会在任何情况下运行。大型FFT非常昂贵,因此我不希望它们随意运行。根据规范,我想说的是,当您要求时,我们希望计算FFT。 : 最新的fftSize帧用于计算频率数据 如果您经常请求

我正在尝试使用Web音频API编写一个自相关算法。自相关只依赖于时域中的数据,而不是频域中的数据,因此我只使用
getByteTimeDomainData()
。我很难找到有关如何实现AnalyzerNode的信息。根据我在中的阅读,我不清楚FFT是否仅在调用
getByTefFrequencyData()
时运行,或者它是否会在任何情况下运行。大型FFT非常昂贵,因此我不希望它们随意运行。

根据规范,我想说的是,当您要求时,我们希望计算FFT。
:

最新的
fftSize
帧用于计算频率数据

如果您经常请求,它甚至会返回缓存结果:

如果对
getByteFrequencyData()
getFloatFrequencyData()
的另一次调用与上一次调用在同一渲染量程内发生,则当前频率数据不会使用相同的数据更新。而是返回先前计算的数据


这句话还表明,计算应按要求进行。

是的,应按要求进行。但是如果你在做自相关,FFT结果应该与你无关。您可能想使用
getFloatTimeDomainData
来获取时间数据。@RaymondToy我想OP想知道使用AnalyzerNode是否“安全”,因为它不会一直记录遇到的所有情况。您的答案是正确的。这是点播。但是我想规范并不能阻止你不断地做FFT,即使它们不是必需的,你只需要使用时域数据。@RaymondToy,是的,我也在考虑它。如果一个实现真的想要,它可以在每个“渲染量”计算FFT,并且仍然符合规范。