【问题标题】:FFT values of webaudio's AnalyserNode are outside rangewebaudio 的 AnalyserNode 的 FFT 值超出范围
【发布时间】:2014-12-02 04:48:21
【问题描述】:

我正在尝试使用 Web-Audio 的分析器节点并不断得到奇怪的结果。

代码:

var self = this;
var bufferSize = 512;
var spectrum = new Float32Array(bufferSize/2);

self.analyser = audioContext.createAnalyser();
self.analyser.fftSize = bufferSize;
self.analyser.smoothingTimeConstant = 0;
self.analyser.minDecibels = -120;
self.analyser.maxDecibels = 0;
self.analyser.getFloatFrequencyData(spectrum);
source.connect(self.analyser);

即使我明确设置了最大和最小分贝的值,我仍然得到小于 -120 的值,例如 -180。

另外,当我console.log 分析器时,我看到这些值确实发生了变化,但 FFT 给出的值仍然低于预期。

我正在使用立体声 mp3 文件对其进行测试,这可能是个问题吗?

有什么想法吗?

【问题讨论】:

    标签: javascript fft web-audio-api


    【解决方案1】:

    最小和最大分贝仅影响 getByteFrequencyData 值,而不影响 getFloatFrequencyData 值。 "用于转换为无符号字节值的 FFT 分析数据的缩放范围内的最小/最大功率值。"

    【讨论】:

    • 来自documentation:AnalyserNode.minDecibels 是一个双精度值,表示 FFT 分析数据的缩放范围内的最小功率值,用于转换为无符号字节/浮点值 - 基本上,这指定了使用 getFloatFrequencyData() 或 getByteFrequencyData() 时结果范围的最小值。
    • 这是 Mozilla 文档中的错误。规范 (webaudio.github.io/web-audio-api/#widl-AnalyserNode-maxDecibels) 专门说“用于转换为无符号字节值”,而没有关于浮点值。
    • 我提交了对 Mozilla 文档页面的修复。
    • Moz 修复了它...一个 double 值,表示 FFT 分析数据的缩放范围内的最小功率值,用于转换为无符号字节值 - 基本上,这指定了范围的最小值使用 getByteFrequencyData() 时的结果。
    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    • 2011-08-02
    • 2021-05-06
    • 2016-09-24
    • 1970-01-01
    相关资源
    最近更新 更多