D3.js 如何解释Web音频API getByteFrequencyData 0值?

D3.js 如何解释Web音频API getByteFrequencyData 0值?,d3.js,data-visualization,web-audio-api,D3.js,Data Visualization,Web Audio Api,实际上,我正在开始一个关于音乐可视化的小项目,使用Web音频API和D3。我使用的getByteFrequencyData()方法如下(为了清晰起见,对实现进行了修改。这只是一个“设置模型”): const ctx=new(window.AudioContext | | window.webkitadiocontext)() 常量分析器=ctx.createAnalyzer() const src=ctx.createMediaElementSource(audioPlayer) analyze

实际上,我正在开始一个关于音乐可视化的小项目,使用Web音频API和D3。我使用的
getByteFrequencyData()
方法如下(为了清晰起见,对实现进行了修改。这只是一个“设置模型”):

const ctx=new(window.AudioContext | | window.webkitadiocontext)()
常量分析器=ctx.createAnalyzer()
const src=ctx.createMediaElementSource(audioPlayer)
analyzer.fftSize=512
src.connect(分析器)
src.connect(ctx.destination)
//...
常量getFrequencyData=()=>{
audioAnimationFrameId.current=requestAnimationFrame(getFrequencyData)
const bufferLength=音频分析器.frequencyBinCount
const data=new Uint8Array(bufferLength)//256
音频分析仪。GetByTefFrequencyData(数据)
返回数据
}
if(音频分析器和isAudioPlaying)getFrequencyData()
我这里的问题是,在我的UINT8数组中,我得到了很多“0”(主要在数组的末尾),这打破了我的径向图(因为D3比例域取决于数据数组的长度)。我知道这些值代表某些频率下的分贝,但最后得到所有这些零是正常的吗

我猜我可能错过了分析仪上的一些配置,但经过大量测试,我无法找到任何解决方案。。。我是否遗漏了什么,或者这些值是否正确,最后我应该更改D3量表

这是我的D3量表:

const angle=scaleLinear({
域:[0,256],//NB:数组长度
范围:[0,Math.PI*2]
})
常数半径=刻度线({
域:[0,255],//注意:频率数据从0到255
范围:[0,(直径/2)]
})
如果有人能帮我理解这些奇怪的结果,那就太好了


太多了

有关详细信息,请参见规范。那里的公式解释了为什么值为零。基本上,在更高的频率下,实际dB值低于dB_min,因此它被钳制为零。如果您不想要这个,并且可以使用浮点值,请使用。

我不知道有关
getByteFrequencyData
的任何信息,但是如果您得到不需要的值,您可以过滤掉