色彩乐器调音器的强大算法?

12

谁知道用于色彩乐器调音器的最强算法?

我正在尝试编写一个乐器调音器。我尝试了以下两个算法:

  1. 使用FFT创建Welch周期图,然后检测峰值频率

  2. 简单的自相关 (http://en.wikipedia.org/wiki/Autocorrelation)

我遇到了以下基本问题:

  1. 准确性1: 在FFT中,采样率、录制长度和bin大小之间的关系是固定的。这意味着我需要记录1-2秒的数据才能获得几个cents的精度。这不完全是实时的。

  2. 准确性2: 自相关效果稍好。为了获得所需的几分之一的精度,我必须引入样本的线性插值。

  3. 鲁棒性: 对于吉他而言,我看到很多泛音。有些泛音实际上比弦产生的主音更强。我找不到一种稳健的方法来选择正确的弹奏弦。

尽管如此,任何廉价的电子调音器都比我的实现更加稳健。那些调音器是如何实现的呢?

2个回答

6
你也可以进行FFT插值,通常可以使用更高的谐波来增加精度。你需要了解所产生仪器的泛音,如果您假设目标低于半个八度,那么会更容易些,但即使没有这一点,基频通常比第一个亚谐波强得多,并且远低于主要谐波。 一个简单的启发式方法应该让您选择基频。
我怀疑自相关方法在各种乐器上并不那么稳健,但是当您偏移一个基频时,您应该得到一系列自相似分数的最高值。如果您走两个,则应再次获得相同的分数(在噪声和不同谐波的微分阻尼范围内)。

使用谐波和次谐波在简单的启发式中真的帮了很多。谢谢 Rex。 - Stiefel

5

有一个非常酷的算法叫做位流自相关。它不需要太多的CPU周期,而且非常准确。你基本上找到所有的零交点,然后将其保存为二进制字符串。然后对该字符串使用自相关。这很快,因为您可以使用XOR而不是浮点乘法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接