我使用 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/