如何纠正 minBLEP 锯齿波振荡器直流偏置

信息处理 声音的 混叠 振荡器
2022-02-17 15:58:23

在我的 minBLEP 实现中,重叠的 minBLEP 会随着频率的增加而导致直流偏置。这是因为每个 minBLEP 校正(即 minBLEP 减去混叠阶跃)都有 DC 偏置。

这是从 100Hz 到 15kHz 的频率扫描。第二个信号显示活动 BLEP 的数量。

杂音锯齿

有趣的是,minBLEP 论文 ( http://www.cs.cmu.edu/~eli/papers/icmc01-hardsync.pdf ) 似乎通过从集成脉冲切换到放置 BLEP 来解决 DC 问题。当许多 BLEP 重叠时,没有提到纠正 DC。

我应该在最后添加一个直流阻滞剂吗?一般都是这样吗?

另外,为什么 BLEP 是最小相位很重要?使用线性相位 BLEP 将减轻 DC 偏置,代价是将振荡器输出延迟 BLEP 长度的一半。

1个回答

如果您的振荡器随着时间的推移稳定地积累直流电,那么在输出端添加一个直流阻断器可能不是一个优雅的解决方案,因为您的振荡器将不断获得越来越多的直流电。对于浮点,这可能是一个大问题,也可能不是一个大问题(我不会这样做),但对于定点,您最终将开始裁剪或换行。

如果振荡器的频率相关直流偏移不会随着时间的推移而上升,那么直流阻断器可能是一个很好的解决方案。如果您已正确实施 BLEP,则应该是这种情况。

将 BLEP 设为最小相位的最初原因是为了实现振荡器同步。要使用线性相位 BLEP 正确实现这一点,您应该使用前瞻,以便您可以在混叠复位发生之前启动 BLEP。

然而,显然这位作者出于某种原因宁愿没有任何前瞻性,因此设计了 minBLEP,这样您就不必对未来进行更远的展望。如果我没记错的话,他们在论文中说,如果您使用最小相位,可以忘记前瞻,但显然这并不完全正确,因为最小相位滤波器仍然有一些延迟。你应该自己试验一下,看看这个近似值是否适合你。

在我看来,使用线性相位 BLEP 和适当的前瞻进行同步可能是一个好主意。我们在这里讨论一些合理的 BLEP 延迟样本。