【问题标题】:How do I configure a bandpass filter?如何配置带通滤波器?
【发布时间】:2013-03-15 15:42:54
【问题描述】:

我正在尝试使用 Web Audio API 的带通滤波器功能,但我相信我的问题更笼统。我不明白带通滤波器的“Q”值。我希望能够配置滤波器以通过中频 X 赫兹的 Y 赫兹范围内的频率。

我对音频编程非常陌生,所以在计算 Q 时我需要考虑其他变量吗?

【问题讨论】:

    标签: audio web-audio-api


    【解决方案1】:

    假设您有一个 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 )
    }
    

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

    希望对您有所帮助。

    【讨论】:

    • 感谢您的解释。我很惊讶我无法在网上找到这样一个简单明了的解释。
    • 那么,我认为就频率而非八度音程而言,“中频”始终是频段的三分之一,这是否正确?
    • 带宽为 1/3 倍频程的 1000Hz 滤波器将具有 897Hz 的较低频率和 1121Hz 的较高频率(您可以在表格中查找这些信息)。无论如何,1000 不是 897 和 1121 之间的 1/3。1/3 的东西只有在带宽为 2 个八度音阶时才有效。
    • 所以听起来如果我想提取特定频段的频率,我最容易依次使用低通和高通滤波器。
    • 取决于你想做什么。顺便说一句,这可能会有所帮助:sengpielaudio.com/calculator-cutoffFrequencies.htm
    猜你喜欢
    • 2010-10-23
    • 2015-03-05
    • 2019-04-09
    • 2017-01-05
    • 1970-01-01
    • 2023-04-10
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多