samples | 要填充音频样本的数组。它的长度必须是 2 的幂。 |
channel | 要从中采样的通道。 |
window | 采样时使用的 FFTWindow 类型。 |
提供侦听器(主)的频谱数据的块。
samples 参数中给出的数组将填充所需数据。
值的数量(samples 数组的长度)必须是 2 的幂。(即 128/256/512 等)。最小值 = 64。最大值 = 8192。使用 window 减少频率箱/频段之间的泄漏。请注意,窗口类型越复杂,质量越好,但速度越慢。
此函数将使用 AudioSettings.outputSampleRate 中指定的采样率,而不是音频剪辑指定的采样率。
其他资源: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 | 值的数量(samples 数组的长度)。必须是 2 的幂。最小值 = 64。最大值 = 8192。 |
channel | 要从中采样的通道。 |
window | 采样时使用的 FFTWindow 类型。 |
已弃用版本。返回侦听器(主)的频谱数据的块。
此函数的变体每次调用时都会分配一个新数组。为了获得更好的性能,请使用非分配版本。