1

Unity3D を使用したピッチ検出プロジェクトに取り組んでいます。私はコーディング、ユニティ、および現在取り組んでいる他のほとんどすべてのことに非常に慣れていません! :-) この Web ページに出会い、プロジェクトで FFT コードを使用しています。

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

ほとんど問題なく動作していますが、使用しているコンピューターによって検出される周波数が異なるようです。さまざまなデスクトップとラップトップ(PCとMacの混合)で試してみましたが、一部のコンピューターでは正しい周波数を拾いましたが、他のコンピューターでは約10の周波数が得られました。1.5半音フラット。興味深いのは、私が試した 6 台のコンピューターのうち、3 台は正しく、残りの 3 台はすべて同じ 1.5 半音フラットだったことです。

一部のコンピューターの内蔵マイクと別のマイクの両方を試しましたが、結果は変わりませんでした。

これの理由と、問題を解決する方法を知っている人はいますか? コードに調整を加えることはできますか? 私が取り組んでいるプロジェクトは、最終的には iPhone アプリとして配布される予定なので、デバイス間で普遍的に動作する必要があります。

ちなみに私は今のところC#プログラミング言語しか使えません。

ヘルプとアドバイスをお寄せいただきありがとうございます

幸運をお祈りしています

フィル

4

1 に答える 1

2

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.
于 2014-06-17T07:07:49.633 に答える