我目前在Safari 10.1中遇到Tone.Analyzer
问题。
使用Tone.Analyzer
(1024)初始化size > Math.pow(2, 10)
时,出现以下错误:
IndexSizeError (DOM Exception 1): The index is not in the allowed range.
我也submitted this to the ToneJS repository,但我觉得这更像是Safari中的一个错误,对吧?
import Tone from 'tone';
const sampleSize = Math.pow(2, 13); // Math.pow(2, 10); works...
this.fft = new Tone.Analyser('fft', sampleSize);
this.panVol = new Tone.PanVol().fan(this.fft).toMaster();
但是,我找不到有关interwebz的任何信息,哪个浏览器接受the Value must be a power of two in the range 32 to 32768.
while the Tone.js documentation
Safaris Audio API getByteFrequencyData是否未实现更高的尺寸? 希望实现高度精确的均衡器,但样本量需要>低频率为4000。
答案 0 :(得分:1)
早期版本的WebAudio规范称2048是AnalyserNode
的最大FFT大小。后来版本的限制至少为32k,Safari仍然实现旧的限制。
答案 1 :(得分:0)
我有类似的问题。不使用Tone.js但Safari 11 AudioContext.analyser.fftSize确实似乎限制为2048而不是更多。我实际上需要最大32K。但是,相同的代码在Apple桌面上的Chrome中运行得非常好。
备选(遗憾的是)似乎需要导入一个开源的JS FFT(我喜欢https://github.com/audioplastic/ooura,虽然我没有尝试过JS版本...... C版非常好)。更愿意webRTC完成时域和频域采样和计算的繁重工作。将来更加明确,更不用说更轻松的解决方案了。