Unity 6.3
0 онлайн 1 гость 3 в системе
Вход

AudioListener.GetSpectrumData

Declaration

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

Параметры

Параметр Описание
образцы Массив, который будет заполнен аудио семплами. Его длина должна быть в степени 2.
канал Канал для выборки.
окно Тип FFTWindow, используемый при выборке.

Описание

Предоставляет блок данных спектра слушателя (мастера).

Массив, указанный в параметре samples, будет заполнен запрошенными данными.

Количество значений (длина массива проб) должно быть в степени 2. (то есть 128/256/512 и т.д.). Min = 64. Max = 8192. Используйте window для уменьшения утечки между частотными полосами/диапазонами. Обратите внимание, что чем сложнее тип окна, тем лучше качество, но снижается скорость.

Эта функция будет использовать частоту дискретизации, указанную в AudioSettings.outputSampleRate, и NOT частоту дискретизации, указанную для аудиоклипа.

Примечание: GetSpectrumData обеспечивает доступ к аудиоданным из короткого окна истории (например, последние несколько миллисекунд) для целей анализа. Unity не выделяет автоматически буферы, необходимые для хранения этой истории, потому что это было бы дорого и требовало бы много памяти. Вместо этого Unity только выделяет буферы и начинает записывать при первом вызове этой функции, на объектной основе. В результате, выходные данные будут изначально пустыми, пока движок не обработает достаточное количество аудио, чтобы заполнить буфер. Обратите внимание, что эта функция не подходит для критического или хронологического анализа или обработки данных в реальном времени, а также для сценариев, требующих низкой задержки.

Дополнительные ресурсы: 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); } } }

Declaration

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

Параметры

Параметр Описание
numSamples Количество значений (длина массива выборок). Должно быть в степени 2. Min = 64. Max = 8192.
канал Канал для выборки.
окно Тип FFTWindow, используемый при выборке.

Описание

Устаревшая версия. Возвращает блок данных спектра слушателя (мастера).

Этот вариант функции выделяет новый массив каждый раз, когда она вызвана. Используйте версию Non-alloc для лучшей производительности.