AudioSpectrum
https://qiita.com/niusounds/items/b8858a2b043676185a54
音声出力のサンプリングレートをF、spectrumの長さをQとするとspectrum[N]にはN * F/2 / QHzの周波数成分が含まれています。
サンプリングレートの取得は
code:foo.cs
var conf = AudioSettings.GetConfiguration();
var rate = conf.sampleRate;
で取得可能
ProjectSettingsのAudioのSystem Sample Rateで指定できるが0にすると、プラットフォームごとのデフォルト値になるっぽい
macOSなら44100
iOS/Androidなら24000くらい?
これらを組み合わせると
code:foo.cs
audioSource.GetSpectrumData(spectrum, 0, FFTWindow.Hamming);
したとして、
spectrum = float[1024]ならiに対応する周波数は
code:foo.cs
i * sampleRate * 0.5f / 1024f
で求まる。
適当にggった感じだと
低音:10〜100Hz
中音:100Hz〜2000Hz
高音:それ以上
という感じっぽい
UIに表示するときは周波数にlogを入れておくとよさそう。
低音は大きいし高音は小さいので、音域にごとにスケールした方が安全そうでもある。