Javascript getByteTimeDomain/FrequencyData()方法是如何工作的

Javascript getByteTimeDomain/FrequencyData()方法是如何工作的,javascript,html,web-audio-api,Javascript,Html,Web Audio Api,我正在尝试使用JavaScript Web音频API开发音调检测器。通过谷歌搜索,我知道我们通过频率感知音调,所以我找到了getByTefFrequencyData()方法。但我不知道如何正确使用它 example.js function draw() { var img = new Image(); img.src="foo.jpg"; img.onload = function() { ctx.drawImage(img, 0, 0); var imgData=ct

我正在尝试使用JavaScript Web音频API开发音调检测器。通过谷歌搜索,我知道我们通过频率感知音调,所以我找到了getByTefFrequencyData()方法。但我不知道如何正确使用它

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);
 }
}
函数绘图(){
var img=新图像();
img.src=“foo.jpg”;
img.onload=函数(){
ctx.drawImage(img,0,0);
var imgData=ctx.getImageData(0,0,canvas.width,canvas.height);
var光栅=imgData.data;
for(var i=0;i的spec条目确切地告诉您它是什么。Analyzer节点确定一组容器中的频率内容,其中每个容器的值是该频率分量的幅值。
getByteFrequencyData
仅转换该dB,然后将值缩放到0到255的范围


我通常建议人们使用
getFloatFrequencyData()
首先是因为我认为不必处理缩放就更容易理解。

嗯……这个图像和画布代码在音频分析方面的关系是什么?对不起,我的写作技巧是……图像数据由红色、绿色、蓝色和alpha通道值表示。但是getBy获得的缓冲区元素是什么TefFrequencyData()代表?是的,我知道Canvas API和ImageData是什么,我也知道一点WebAudioAPI,还有GetByTefFrequencyData和getByteTimeDomain。但我真正知道的是它们根本不是同一个API!就像你说我发现锤子对钉子有好处一样,现在我想知道如何在我的fl中使用它owers。在这些问题中编写的源代码与我的程序无关。这只是为了我的问题,但它似乎无法解释。好吧!忽略并忘记Canvas API、ImageData等。我想知道缓冲区保存了什么。