Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FFT结果因我使用的计算机而异_C#_Unity3d_Fft_Pitch Detection - Fatal编程技术网

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

C# FFT结果因我使用的计算机而异,c#,unity3d,fft,pitch-detection,C#,Unity3d,Fft,Pitch Detection,我正在使用Unity3D进行基音检测项目。我对编码、unity非常陌生&几乎所有我目前正在从事的工作都是如此!:-) 我偶然发现了这个网页,它帮助我开始工作,我正在我的项目中使用FFT代码: 它大部分工作都很好,但是检测到的频率似乎因我使用的计算机而异。我曾在各种台式机和笔记本电脑(pc和mac的混合机)上试用过,在一些电脑上,它的频率正确,但在其他电脑上,它的频率约为1.5个半音。但有趣的是,在我试过的6台计算机中,有3台是正确的,其他3台都是相同的1.5个半音 这不能归结于话筒,因为我已经

我正在使用Unity3D进行基音检测项目。我对编码、unity非常陌生&几乎所有我目前正在从事的工作都是如此!:-) 我偶然发现了这个网页,它帮助我开始工作,我正在我的项目中使用FFT代码:

它大部分工作都很好,但是检测到的频率似乎因我使用的计算机而异。我曾在各种台式机和笔记本电脑(pc和mac的混合机)上试用过,在一些电脑上,它的频率正确,但在其他电脑上,它的频率约为1.5个半音。但有趣的是,在我试过的6台计算机中,有3台是正确的,其他3台都是相同的1.5个半音

这不能归结于话筒,因为我已经在一些电脑上尝试了内置话筒和独立话筒,结果没有变化

有人知道这可能是什么原因,以及我如何解决这个问题吗?我能对代码做些什么调整吗?我正在从事的项目最终将作为iPhone应用程序分发,因此我需要它在所有设备上通用

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

非常感谢您的帮助和建议

祝福


Phil

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

数学:

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

您是否检查了您使用的采样率是否在设备支持的最小/最大采样率范围内(请参阅)?您知道!这正是正在发生的事情。为了防止其他人遇到类似的问题,我通过使用:samplerate=AudioSettings.outputSampleRate;在Start函数中设置采样率来解决这个问题;与手动设置相反。非常感谢你的帮助,保罗!不客气-我的灵力今天显然运行良好-我可能应该在有机会的时候去赌一场世界杯比赛…;-)