Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 如何配置带通滤波器?_Audio_Web Audio Api - Fatal编程技术网

Audio 如何配置带通滤波器?

Audio 如何配置带通滤波器?,audio,web-audio-api,Audio,Web Audio Api,我试图使用Web音频API的带通滤波器功能,但我相信我的问题更一般。我不明白带通滤波器的“Q”值。我想能够配置滤波器,以通过频率在Y赫兹的中频X赫兹 我对音频编程很陌生,所以还有其他的变量我需要考虑来计算Q吗?我们假设你有一个滤波器在1000赫兹,你希望它在500赫兹开始,在2000赫兹结束。p> 首先,你会注意到它并没有在每个方向上延伸相同的赫兹数。这是因为滤波器带宽是基于倍频程,而不是频率。所以在这种情况下,它向下延伸一个八度,向上延伸一个八度。换句话说,频率在低端被2除以,在高端被2乘以-

我试图使用Web音频API的带通滤波器功能,但我相信我的问题更一般。我不明白带通滤波器的“Q”值。我想能够配置滤波器,以通过频率在Y赫兹的中频X赫兹


我对音频编程很陌生,所以还有其他的变量我需要考虑来计算Q吗?

我们假设你有一个滤波器在1000赫兹,你希望它在500赫兹开始,在2000赫兹结束。p> 首先,你会注意到它并没有在每个方向上延伸相同的赫兹数。这是因为滤波器带宽是基于倍频程,而不是频率。所以在这种情况下,它向下延伸一个八度,向上延伸一个八度。换句话说,频率在低端被2除以,在高端被2乘以-这给了它2倍频程的带宽

不管怎样,假设你知道频率,你可以这样计算:

Q=中心频率/(顶部频率-底部频率)

在这种情况下,它将是
1000/(2000-500)
,或0.667

您也可以在不知道顶部和底部频率的情况下计算它,只要您心中有一个目标带宽(以八度为单位):

同样,如果将
2
作为带宽参数传递,则会得到相同的结果:Q=0.667


希望能有所帮助。

谢谢你的解释。我很惊讶,我还没有在网上找到这样一个简单的解释。那么,我认为“中频”是频率,而不是八度,对吗始终是通过频带的三分之一?带宽为1/3倍频程的1000Hz滤波器的较低频率为897Hz,较高频率为1121Hz(有表格可供查阅)。无论如何,1000不是897和1121之间的1/3。只有当带宽为2倍频程时,1/3才有效。因此,听起来如果我想提取特定频段的频率,我最容易依次使用低通和高通滤波器。这取决于你想做什么。顺便说一下,这可能有助于:
function getQ( bandwidth ){
  return Math.sqrt( Math.pow(2, bandwidth) ) / ( Math.pow(2, bandwidth) - 1 )
}