samples | 用于填充音频样本的数组。其长度必须是 2 的幂。 |
channel | 要从中采样的通道。 |
window | 采样时使用的 FFTWindow 类型。 |
提供当前正在播放的音频源的频谱数据块。
samples 参数中给定的数组将填充请求的数据。
值的个数(提供的 samples 数组的长度)必须是 2 的幂。(例如 128/256/512 等)。最小值:64。最大值:8192。使用 window 减少频率 bin/band 之间的泄漏。请注意,窗口类型越复杂,质量越好,但速度越慢。
此函数将使用 AudioSettings.outputSampleRate 中指定的采样率,而不是音频剪辑指定的采样率。
其他资源:AudioSource.GetOutputData、AudioListener.GetSpectrumData、AudioListener.GetOutputData。
using UnityEngine;
[RequireComponent(typeof(AudioSource))] public class AudioSourceGetSpectrumDataExample : MonoBehaviour { AudioSource m_MyAudioSource;
void Start() { m_MyAudioSource = GetComponent<AudioSource>(); } void Update() { float[] spectrum = new float[256];
m_MyAudioSource.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 的幂。 |
channel | 要从中采样的通道。 |
window | 采样时使用的 FFTWindow 类型。 |
已弃用版本。返回当前正在播放的源的频谱数据块。
此函数的变体每次调用时都会分配一个新数组。为了获得更好的性能,请改用非分配版本。
值的个数(numSamples)必须是 2 的幂。(例如 128/256/512 等)。最小值:64。最大值:8192。使用 window 减少频率 bin/band 之间的泄漏。请注意,窗口类型越复杂,质量越好,但速度越慢。