FFT结果因我使用的计算机而异



我正在使用Unity3D进行音调检测项目。我对编码、unity和;几乎是我目前正在做的所有事情!:-)我遇到了这个网页,它帮助我前进,并在我的项目中使用FFT代码:

http://www.kaappine.fi/tutorials/fundamental-frequencies-and-detecting-notes/

大多数情况下工作得很好,但是检测到的频率似乎因我使用的计算机而异。我在不同的台式机上都试过了。笔记本电脑(PC &Mac),在一些电脑上,它能接收到正确的频率,但在另一些电脑上,它给我的频率大约是。降1.5个半音。有趣的是,在我尝试过的6台电脑中,3台是正确的,其他3台都是相同的1.5个半音。

这不能归结为麦克风,因为我已经在一些电脑上尝试了内置麦克风以及单独的麦克风,结果没有变化。

有没有人知道这可能是什么原因,我该如何解决这个问题?我可以对代码做些什么调整吗?我正在进行的项目最终将作为iPhone应用程序分发,所以我需要它在各种设备上普遍工作。

顺便说一下,我目前只能使用c#编程语言。

提前感谢您的帮助&建议

祝福菲尔

1.5半音恰好与48 kHz和44.1 kHz的采样率之比相同。我的猜测是,你已经硬编码48千赫作为你的采样率,但你的一些计算机实际上使用44.1千赫的采样率(或,反之)。您应该使用合适的API来确定正在使用的采样率,或者自己显式设置。

数学:

  • 1.5半音是2^(1.5/12) = 1.09的比值。
  • 48 kHz和44.1 kHz之间的比值= 48/44.1 = 1.09 .

相关内容

  • 没有找到相关文章

最新更新