为什么 LFO 应该是无别名的?

信息处理 频率 调制 海浪 混叠
2022-01-27 05:42:28

我真的很担心这一点!我试着和你讲道理,解释我的问题是什么。考虑一个采样率 44100hz 和一个 LFO 方波的场景,它将调制我插件的一些内部参数。

很明显,如果我使用此函数生成该信号:

if (mPhase <= mPI) {
    value = 1.0;
}
else {
    value = -1.0;
}

mPhase += mPhaseIncrement;
while (mPhase >= mTwoPI) {
   mPhase -= mTwoPI;
}   

一旦它到达我的 D/A 转换器,插值将产生一个包含混叠的信号(我越是基础,我得到的混叠就越多)。

这很正常:我没有足够的样本来表示我想要表示的信号的所有部分。清除。

但是,为什么在 LFO 上也是如此?

我的意思是:一旦我创建了我的数字正方形(在它插值之前,它实际上只是 1/-1),目标参数将被真正调制为“真正的”方波。

为什么它应该以包含“别名”的方式调制旋钮?旋钮不会随着插值后生成的信号移动(有波纹而不是线性移动)。它确实像方波一样线性移动:-1、1、-1、1。没有“别名”。

我希望你明白我的意思?我无法直观地看到由 LFO(在本例中为方波)调制旋钮引入的“别名”。

注意:我知道在低于 20hz 的频率下使用带有上述代码的 LFO 会为音频/人类听觉产生“不明显”的别名。但出于我质疑的原因,它根本不应该产生别名。

1个回答

TLDR;LFO 不应抗锯齿。应用调制后的最终信号应该没有混叠。在实践中,您要么忽略这一点,要么近似后者。

细节:

考虑这一点的正确(尽管不一定总是实用)方法是将整个信号处理/合成链视为一个连续的时间过程,然后在离散化之前最后应用抗混叠滤波器。

例如,假设您正在使用方形 LFO 调制音频振荡器的幅度,即x(t)=(1+0.5vLFO(t))vosc(t), 在哪里vLFO是具有幅度的 LFO 的输出1vosc是振荡器的输出,并假设音频振荡器完全抗锯齿。现在,x(t) 在 LFO 的过渡处将具有不连续的边缘,这将产生无限数量的频率分量,这将产生混叠。但是,如果您在连续时域中进行了调制,然后使用适当的抗混叠滤波器进行采样,则过渡边缘将被平滑,并且整个信号将受到频带限制。

另一个影响是 LFO 本身的频谱分量会出现混叠,这可能有也可能没有听得见的意义。例如,如果 LFO 的周期不是整数个样本,则可以看出这一点。1'沙1's 将根据样本的哪一侧发生变化(通过一个样本),即转换恰好落在哪个周期上。

再举一个极端的例子,假设您正在调制恒定直流偏移的幅度。在这种情况下,输出将是 LFO 本身的输出,如果将其带到音频频率,如果 LFO 没有抗锯齿,您肯定会听到锯齿。

另一方面,将抗锯齿 LFO 应用于抗锯齿振荡器是不正确的,因为调制是非线性效应:理想情况下,您应该将连续时间 LFO 应用于连续时间振荡器,并且抗锯齿(即带限制的样本)结果。但是,稍微平滑 LFO 过渡可能会限制调制产生的频率带宽,从而部分弥补额外的混叠。但是,您不应该使用尖锐的抗混叠滤波器,因为它的阶跃响应纹波可能会导致不需要的调制,而应该使用具有良好相位响应的滤波器(简单的单极点或更高阶的贝塞尔)。

据我所知,没有通用的方法来消除调制系统中的混叠,如果有的话,它肯定取决于特定的调制和被调制的内容(频率与幅度,振荡器与滤波器,以及很快)。然而,过采样是一种直接但计算成本高的方法,可用于减少音频频带中的所有混叠,包括由调制引起的混叠。

最后,正如您所说,如果 LFO 远低于音频频率,那么任何这些都不太可能被听到。但是,您应该注意调制深度也会产生影响:例如,如果您正在调制振荡器的频率,即使频率很低,但调制深度如此之大,以至于频率的变化是明显的震荡一段时间,你可能会得到听得见的效果(至少在原则上,我没有做过实验,也没有参考引用)。

附录:

在处理音频时,为什么我们要关心离散系统上的连续时间模型?

(我当然假设您在这里指的是插件 VST 或其他一些音频处理插件)。

考虑一下你的最终目标是什么:产生一个人可以听到的声音。这不可避免地是一个连续时间 (CT) 过程。您可以控制的是发送到 DAC 的样本流,这是信号从离散时间转换为连续时间的地方。

换句话说,您实际上从事的是产生连续时间信号的业务,而离散时间 (DT) 表示只是实现该最终目标的工具。这就是我所说的不连续性的意思:它们是假想 CT 信号中的不连续性,其样本构成了您的 DT 信号。

推断 DT 信号所暗示的输出 CT 信号的最简单方法是通过正确采样数学形成的 CT 信号来形成 DT 信号。例如,使用锯齿振荡器,您采用理想的数学斜坡,对它进行带宽限制并对其进行采样(通过您喜欢的任何方法,例如 BLIP、BLEP、过采样等),然后采样定理将告诉您DAC 将是相同的带限锯齿波。如果您将锯齿波视为 DT 过程并简单地形成一个幼稚的离散斜坡,您会感到非常失望,因为您会听到混叠锯齿的令人讨厌的声音,因为您使用的 DT 过程恰好是等效的到 CT 非带限锯齿的朴素采样。IE

请注意,上述内容同样适用于合成/处理链的所有部分,包括 LFO 等调制器。唯一的区别是带宽限制必须发生(从概念上讲,这在实践中通常是不可行的)作为发生在 CT 中的虚构处理链(包括所有调制等)的最后一步,然后您对其结果进行采样形成您的 DT 信号。

以 S&H 为例:在 CT 世界中,S&H 时钟可以很好地在样本之间对其输入进行采样,然后音频样本之间也会发生不连续的转换。如果您在 CT 中对合成链建模,然后对整个系统进行带宽限制,则首先输出信号中的 CT 不连续过渡将被抗混叠滤波器略微平滑。此外,过渡的子样本位置将反映在抗锯齿边缘的确切形状中。

同样,所有这些是否会产生您实际听到的差异取决于具体情况,但关键是,简单采样的 LFO 不会为您提供理想的调制,但从抗锯齿 LFO 应用调制也不会。