system::getSpectrumto を使用して周波数データを取得し、オーディオ分析に FMOD を使用しています。ここでの私の質問は、FMOD が舞台裏で FFT を実行するために使用するデータについてです。たとえば、出力レートが 44100Hz で、getSpectrum() を 1 秒間に 30 回 (0.03333 秒ごとに) 1024 サンプルで呼び出すとします。
system.getSpectrum(data, 1024, 0, FMOD_DSP_FFT_WINDOW_BLACKMANHARRIS);
FMOD は、再生された最後の 1024 個の PCM サンプルを取得し、それらに対して FFT を実行するだけですか? この場合、1470 個のサンプルが getSpectrum() 呼び出しの間に実際に読み取られて再生された場合、最後の 1024 個のサンプルのみが処理され、中間の 446 個のフロートに関する情報が失われます。次に、getSpectrum を呼び出す間隔の精度が非常に重要になります。一度 0.033 秒後に呼び出すと、次の 0.034 秒後に呼び出すと、同じ結果が得られないため、すべてが FPS に大きく依存し、完全に未定。FMOD の内部メカニズムと、これを決定論的にする方法についての洞察を誰かに教えてもらえますか?