版本: Unity 6 (6000.0)
语言English
  • C#

AudioSource.GetSpectrumData

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议的更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void GetSpectrumData(float[] samples, int channel, FFTWindow window);

参数

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

描述

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

samples 参数中给定的数组将填充请求的数据。

值的个数(提供的 samples 数组的长度)必须是 2 的幂。(例如 128/256/512 等)。最小值:64。最大值:8192。使用 window 减少频率 bin/band 之间的泄漏。请注意,窗口类型越复杂,质量越好,但速度越慢。

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

其他资源:AudioSource.GetOutputDataAudioListener.GetSpectrumDataAudioListener.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); } } }

已过时 返回 float[] 的 GetSpectrumData 已弃用,请使用 GetSpectrumData 并传递预分配的数组。

声明

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

参数

numSamples 要检索的样本数。必须是 2 的幂。
channel 要从中采样的通道。
window 采样时使用的 FFTWindow 类型。

描述

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

此函数的变体每次调用时都会分配一个新数组。为了获得更好的性能,请改用非分配版本。

值的个数(numSamples)必须是 2 的幂。(例如 128/256/512 等)。最小值:64。最大值:8192。使用 window 减少频率 bin/band 之间的泄漏。请注意,窗口类型越复杂,质量越好,但速度越慢。