Mik*_*zer 5 audio web-audio-api
我正在尝试使用Web Audio API的带通滤波器功能,但我相信我的问题更为笼统.我不明白带通滤波器的"Q"值.我希望能够配置滤波器以传递中频X赫兹的Y赫兹内的频率.
我对音频编程很新,所以我需要考虑计算Q的其他变量吗?
Kev*_*nis 11
假设您有1000Hz的滤波器,您希望它以500Hz开始并以2000Hz结束.
首先,你会注意到它并没有在每个方向上延伸相同数量的赫兹.这是因为滤波器带宽基于八度音程,而不是频率.所以在这种情况下,它向下延伸一个八度音程并向上延伸一个八度.换句话说,频率在低端被除以2并且在高端被乘以2 - 这使得它具有2个八度的带宽.
无论如何,假设你知道频率,这里是你如何计算它:
Q = center_frequency / (top_frequency - bottom_frequency)
在这种情况下,这将是1000 / ( 2000 - 500 ),或0.667.
只要您有目标带宽(以八度为单位),您也可以在不知道顶部和底部频率的情况下计算它:
function getQ( bandwidth ){
return Math.sqrt( Math.pow(2, bandwidth) ) / ( Math.pow(2, bandwidth) - 1 )
}
Run Code Online (Sandbox Code Playgroud)
同样,如果您2作为带宽参数传递,您将得到相同的结果:Q = 0.667.
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
2148 次 |
| 最近记录: |