我正在尝试使用分析器节点和getByteFrequencyData()来测量两个声音之间的差异.我认为通过总结每个频率箱的差异,我可以得出一个数字来表示两个声音的差异.然后,我将能够更改声音并再次测量数字,以查看新声音是否比之前更多或更少.
getByteFrequencyData()是否完全包含声音的表示,还是我需要包含其他数据来限定声音?
这是我正在使用的代码:
var Spectrogram = (function(){
function Spectrogram(ctx) {
this.analyser = ctx.createAnalyser();
this.analyser.fftSize = 2048;
this.sampleRate = 512;
this.scriptNode = ctx.createScriptProcessor(this.sampleRate, 1, 1);
this.scriptNode.onaudioprocess = this.process.bind(this);
this.analyser.connect(this.scriptNode);
this.startNode = this.analyser;
this.endNode = this.scriptNode;
this.data = [];
}
Spectrogram.prototype.process = function(e) {
var d = new Uint8Array(this.analyser.frequencyBinCount);
this.analyser.getByteFrequencyData(d);
this.data.push(d);
var inputBuffer = e.inputBuffer;
var outputBuffer = e.outputBuffer;
for(var channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
var inputData = inputBuffer.getChannelData(channel);
var outputData = outputBuffer.getChannelData(channel);
for(var sample = 0; sample < …Run Code Online (Sandbox Code Playgroud)