12

谁知道半音乐器调音器最强大的算法?

我正在尝试编写乐器调谐器。我尝试了以下两种算法:

  1. FFT 创建韦尔奇周期图,然后检测峰值频率

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

我遇到了以下基本问题:

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

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

  3. 稳健性:如果是吉他,我会看到很多泛音。有些泛音实际上比琴弦产生的主音更强。我找不到一种可靠的方法来选择正确的演奏弦乐。

尽管如此,任何便宜的电子调谐器都比我的实现更强大。这些调谐器是如何实现的?

4

2 回答 2

6

您也可以对 FFT 进行插值,并且通常可以使用更高次谐波来提高精度。你需要对所产生的乐器的谐波有一点了解,如果你可以假设你离目标不到半个八度音程,那就更容易了,但即使没有这个,基频通常要强得多比第一个次谐波,并且不低于一次谐波。一个简单的启发式应该让您选择基频。

我怀疑自相关方法是否能在所有仪器上如此稳健地工作,但是当你被一个基频偏移时,你应该得到一系列最高的自相似性分数。如果你去两个,你应该再次获得相同的分数(在不同谐波的噪声和差分阻尼范围内)。

于 2010-05-20T13:55:20.627 回答
5

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

于 2018-06-12T03:13:04.037 回答