javascript - 使用 WebAudioAPI 从 fft 返回哪种格式

标签 javascript web-audio-api

我使用 WebAudioAPI 和 Dancer.js 可视化了一个音频文件。一切正常,但可视化效果看起来非常不同。谁能帮我找出为什么它看起来如此不同?

The Web-Audio-API code (fft.php, fft.js)

The dancer code (plugins/dancer.fft.js, js/playerFFT.js, fft.php)

WebAudioAPI 的可视化是: http://multimediatechnology.at/~fhs32640/sem6/WebAudio/fft.html

对于舞者是 http://multimediatechnology.at/~fhs32640/sem6/Dancer/fft.php

最佳答案

不同之处在于如何“找到”频率处的体积。您的代码使用分析器,它获取值并进行一些平滑处理,因此您的图形看起来不错。 Dancer 使用脚本处理器。每次经过特定样本长度时,脚本处理器都会触发回调,并将该样本传递给 e.inputBuffer。然后它只绘制“原始”数据,不应用平滑。

var
    buffers = [],
    channels = e.inputBuffer.numberOfChannels,
    resolution = SAMPLE_SIZE / channels,
    sum = function (prev, curr) {
        return prev[i] + curr[i];
    }, i;

for (i = channels; i--;) {
    buffers.push(e.inputBuffer.getChannelData(i)); 
}

for (i = 0; i < resolution; i++) {
    this.signal[i] = channels > 1 ? buffers.reduce(sum) / channels : buffers[0][i];
}

this.fft.forward(this.signal);
this.dancer.trigger('update');

这是 Dancer 用来获取频率声音强度的代码。

(这可以在 adapterWebAudio.js 中找到)。

关于javascript - 使用 WebAudioAPI 从 fft 返回哪种格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23299025/

相关文章:

api - 网络音频 API 复音 - 使用 2 个不同的增益节点不起作用?

javascript - 使用 Web Audio API 进行离线/非实时渲染

javascript - 找不到创建的函数

javascript - ng-selected 不适用于 Angular 1.6.1,但适用于 1.3.15

javascript - 在 Safari 和 Edge 中将 Float32Array 复制到新的 AudioBuffer

javascript - 使用 Web Audio API 的音频 react 视觉

javascript - 用于 Web 音频 API 的数学相关 Javascript

javascript - 如何在 jQuery 中使用触发器传递参数?

javascript - 如何从 react 路由器的路径中获取变量?

javascript - 检查 'input' 和 'select' jQuery