我想用 C 编写一个微控制器,但我在问它的理论方面。我想我已经知道我将要做什么,但有一件事我不太明白。首先,我将使用吉他,因此有 82Hz-987Hz 的范围。所以粗略地说,我将对 1KHz 上的数据进行低通,“窗口化”它们并应用 FFT。据说,我会有一个很好的估计。
由于最高频率约为 1KHz,我决定采样率为 2KHz(尚未测试是否有效)。
假设我有一个 2 秒的曲目,每秒有 1 个音符。如果第一个音符是 C,我的结果将是第一秒的 2000 个 C 音符,对吗?我们可以说,每次有一个音符变化,就是当你识别一个音符时,所以如果第二个音符是 D,程序将识别 C,然后是 D(而不是 2000 次 C 和 2000 次 D)。我看到的问题是,如果第二个音符也是 C,我怎么知道确实有一个音符击中?
我相信我需要一个额外的步骤来完成这个过程,但我不太清楚那会是什么。可能是我必须走不同的路线..(如果是这种情况,只需提及方法,无需详细说明并浪费您的时间,我会阅读它)。