我正在尝试使用JavaScript Web Audio 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()返回非常明显的,易于访问的数据。相反,getByteFrequencyData()的参数“缓冲区” 保存/表示/表示什么?它如何表示音频数据?如何使用这些方法操纵/处理它并开发自己的程序?
谢谢。
答案 0 :(得分:0)
getByteFrequencyData的规范条目会准确告诉您它是什么。分析器节点确定一组仓中的频率含量,其中每个仓的值就是该频率分量的大小。 getByteFrequencyData
只会转换该dB,然后将值缩放到0到255的范围。
我通常建议人们首先使用getFloatFrequencyData()
,因为我认为无需进行缩放即可更容易理解。