Разница заключается в том, как «находятся» объемы на частотах. В вашем коде используется анализатор, который принимает значения, а также выполняет некоторое сглаживание, поэтому ваш график выглядит красиво. Танцор использует обработчик сценариев. Процессор сценариев инициирует обратный вызов каждый раз, когда проходит определенную длину выборки, и передает эту выборку в 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 ).
person
MarijnS95
schedule
25.04.2014