samples | オーディオサンプルとともに格納する配列です。その長さは 2 の累乗でなければなりません。 |
channel | サンプルする元のチャンネル |
window | サンプリング時に使用する FFTWindow のタイプ |
リスナー(マスター)のスペクトルデータのブロックを取得します。
サンプルのパラメーターで指定された配列は、リクエストされたデータで埋められます。
Number of values (the length of the samples array) must be a power of 2. (ie 128/256/512 etc). Min = 64. Max = 8192.
Use window to reduce leakage between frequency bins/bands.
Note, the more complex window type, the better the quality, but reduced speed.
This function will use the sampling rate specified in AudioSettings.outputSampleRate, and NOT the sampling rate specified for the audio clip.
Additional resources: AudioListener.GetOutputData, AudioSource.GetSpectrumData, AudioSource.GetOutputData.
using UnityEngine;
[RequireComponent(typeof(AudioListener))] public class GetSpectrumDataExample : MonoBehaviour { void Update() { float[] spectrum = new float[256];
AudioListener.GetSpectrumData(spectrum, 0, FFTWindow.Rectangular);
for (int i = 1; i < spectrum.Length - 1; i++) { Debug.DrawLine(new Vector3(i - 1, spectrum[i] + 10, 0), new Vector3(i, spectrum[i + 1] + 10, 0), Color.red); Debug.DrawLine(new Vector3(i - 1, Mathf.Log(spectrum[i - 1]) + 10, 2), new Vector3(i, Mathf.Log(spectrum[i]) + 10, 2), Color.cyan); Debug.DrawLine(new Vector3(Mathf.Log(i - 1), spectrum[i - 1] - 10, 1), new Vector3(Mathf.Log(i), spectrum[i] - 10, 1), Color.green); Debug.DrawLine(new Vector3(Mathf.Log(i - 1), Mathf.Log(spectrum[i - 1]), 3), new Vector3(Mathf.Log(i), Mathf.Log(spectrum[i]), 3), Color.blue); } } }
numSamples | 値の数 (サンプル配列の長さ) は常に 2 のべき乗である必要があります。最小が 64 で最大が 8192 です。 |
channel | サンプルする元のチャンネル |
window | サンプリング時に使用する FFTWindow のタイプ |
非推奨バージョン リスナー (マスター) のスペクトルデータのブロックを取得します。
この関数のバリエーションは、呼び出されるたびに新しい配列を割り当てます。パフォーマンスを向上させるには、代わりに Non-alloc バージョンを使用してください。