getByteTimeDomain/FrequencyData() 方法如何工作

how do getByteTimeDomain/FrequencyData() method work

我正在尝试使用 JavaScript 网络音频 API 开发音调检测器。通过谷歌搜索,我知道我们通过频率来感知音调,所以我找到了 getByteFrequencyData() 方法。但是不知道怎么正确使用

example.js

function draw() {
 var img = new Image();
 img.src="foo.jpg";
 img.onload = function() {
     ctx.drawImage(img, 0, 0);
     var imgData=ctx.getImageData(0, 0, canvas.width, canvas.height);
     var raster = imgData.data;
     for (var i=0;i<raster.length;i++) {
          if (i % 4 != 3) {
               raster[i] = 255 - raster[i];
          }
     }
     ctx.putImageData(imgData,0, 0);
 }
}

正如我们在上面看到的,getImageData() returns 非常明显,易于访问的数据。相反,getByteFrequencyData() save/represent/mean 的参数 "buffer" 是什么意思?它如何表示音频数据?我怎样才能 manipulate/handle 它并使用这些方法开发我自己的程序?

谢谢。

getByteFrequencyData 的规范条目准确地告诉了您它是什么。分析器节点确定一组箱中的频率内容,其中每个箱的值是该频率分量的幅度。 getByteFrequencyData 只是转换该 dB,然后将值缩放到 0 到 255 的范围内。

我通常建议人们首先使用 getFloatFrequencyData(),因为我认为它更容易理解,而无需处理缩放。