代码之家  ›  专栏  ›  技术社区  ›  Trap

DSP-滤波器扫描效果

  •  2
  • Trap  · 技术社区  · 14 年前

    我正在实现一个“过滤扫描”效果(我不知道它是否被这样称)。我所做的基本上是创建一个低通滤波器,使它在一定的频率范围内“移动”。

    为了计算滤波器在给定时刻的截止频率,我使用了用户提供的线性函数,该函数产生0到1之间的值。

    我的第一次尝试是直接将线性函数返回的值映射到频率范围,如在cf=frequerange*lf(x)中。虽然工作正常,但在低频移动时,扫描速度似乎快得多,然后在进入高频区的过程中减慢了速度。我不知道为什么会这样,但我想这和人类的听觉以非线性方式感知频率变化有关。

    我的下一个尝试是以对数方式移动滤波器的截止频率。它现在工作得更好了,但我仍然觉得滤波器在频率范围内不会以恒定的感知速度移动。

    如何划分频率空间以获得恒定的感知扫描速度?

    事先谢谢。

    2 回复  |  直到 14 年前
        1
  •  2
  •   jbarlow    14 年前

    你所指的频率扫描效应很可能是一个Wah-Wah滤波器,以无处不在的 wah-wah pedal .

    我们听到的是以八度为单位的频率,用对数尺度扫过八度是将其线性化的方法。听起来不是轻蔑,但听起来你所做的在物理上和数学上都是正确的。(你应该花200到400赫兹的时间,就像你花2000到4000赫兹的时间一样)你只是不喜欢它的声音。这两方面都很好——音频非常主观。

    把事情搞混一点,一个选择是尝试 Bark scale 这是基于心理声学和耳朵的结构。据我所知,它的设计目的是在你耳朵的内部“带通滤波器”上花费等量的时间。

    您可以尝试使用介于0和1之间的二次或三次函数。音频电位器通常使用一些分段二次或三次部分来获得它们的映射。

        2
  •  1
  •   Jeff Ferland    14 年前

    尝试一下:

    http://en.wikipedia.org/wiki/Physics_of_music#Scales “下表显示了主音阶所有音符的频率与音阶第一个音符的固定频率之间的比率。”

    然后有一个图表显示1到2之间的分数值,如果您调整您的时间来匹配,您可以得到您想要的。当整个进程仍然是对数的时候,每个进程之间的步进应该被分成相等的步进8(有点跳跃)。

    换一种方式,每半秒向上调整一个音符。每一个八度音阶(我想)将覆盖先前八度音阶的两倍频率范围。

    编辑:另外,您可以在这里找到频率: http://en.wikipedia.org/wiki/Middle_C#Designation_by_octave (你的程序员不希望c0正好是16Hz吗?)