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

AudioSource.GetSpectrumData

Declaration

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

Параметры

Параметр Описание
образцы Массив, который будет заполнен представлениями частотной области аудио образцов. Длина массива должна быть в степени 2 (например, 128, 256, 512). Кроме того, длина не должна быть меньше 64 или больше 8192.
канал Канал для выборки.
окно Тип FFTWindow, используемый при выборке.

Описание

Обеспечивает блок аудиочастот (спектральные данные) AudioSource, который в настоящее время воспроизводится.

Этот метод заполняет массив, переданный в качестве параметра samples, спектральными данными AudioSource.

Домен частоты представляет частоты и амплитуду аудиосигнала. Данные спектра предоставляют необработанные данные домена частоты аудиосигнала, которые можно использовать для создания спектрограммы для визуализации данных.

Аудиочастотные полосы представляют собой диапазоны звуковых частот, которые описывают различные части аудиоспектра (например, суббас, бас, блеск). Аудиочастотные полосы равномерно распределены между 0 и половиной частоты дискретизации. GetSpectrumData использует частоту дискретизации из AudioSettings.outputSampleRate, а не частоту дискретизации в аудиоклипе.

Используйте window для уменьшения утечки или потерь в результате скольжения между аудиочастотными блоками/полосами.

Примечание: Более сложный тип окна может быть менее эффективным и ухудшить разрешение (ширина полосы).

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

Для получения соответствующей информации, см. 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);

// Loop through the populated array // Start the loop from 1 and to 1 less than the length, so the loop can draw lines between adjacent bins.

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 float[] GetSpectrumData(int numSamples, int channel, FFTWindow window);

Параметры

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

Возвращаемое значение

float[] Возвращает блок спектральных данных текущего воспроизводимого источника.

Описание

Эта версия GetSpectrumData устарела.

Эта версия GetSpectrumData устарела. Используйте другую версию GetSpectrumData вместо нее.

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

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