Version: 2023.2

AudioSource.GetSpectrumData

切换到手册
public void GetSpectrumData (float[] samples, int channel, FFTWindow window);

参数

samples 用于填充音频样本的数组。其长度必须为 2 的幂数。
channel 用于采样的声道。
window 采样时使用的 FFTWindow 类型。

描述

提供当前播放音频源的频谱数据块。

将向 samples 参数指定的数组填充请求的数据。

值的数量(提供的样本数组的长度)必须为 2 的幂数,即 128/256/512 等。最小值为 64,最大值为 8192。 使用 window 可减少频点/频带之间的泄漏。 注意,窗口类型越复杂,音质越好,但会降低速度。

该函数将使用 AudioSettings.outputSampleRate 中指定的采样率,而不是为音频剪辑指定的采样率。

另请参阅:AudioSource.GetOutputDataAudioListener.GetSpectrumDataAudioListener.GetOutputData

using UnityEngine;

[RequireComponent(typeof(AudioSource))] public class AudioSourceGetSpectrumDataExample : 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); } } }

Obsolete public float[] GetSpectrumData (int numSamples, int channel, FFTWindow window);

参数

numSamples 要检索的样本数。必须为 2 的幂数。
channel 用于采样的声道。
window 采样时使用的 FFTWindow 类型。

描述

已弃用的版本。返回当前播放源的频谱数据块。

该函数变体在每次调用时分配一个新的数组。为获得更好的性能,请使用无分配版本。

值的数量 (numSamples) 必须为 2 的幂数,即 128/256/512 等。最小值为 64,最大值为 8192。 使用 window 可减少频点/频带之间的泄漏。 注意,窗口类型越复杂,音质越好,但会降低速度。