Параметры
samples | Массив для заполнения аудиосэмплами. Его длина должна быть степенью двойки. |
channel | Канал для выборки. |
window | Тип FFTWindow для использования при выборке. |
Описание
Предоставляет блок данных спектра воспроизводимого в данный момент аудиоисточника.
Массив, указанный в параметре Samples, будет заполнен запрошенными данными.
Количество значений (длина предоставляемого массива образцов) должно быть степенью числа 2 (например, 128/256/512 и т. д.). Мин. = 64. Макс. = 8192. Используйте окно, чтобы уменьшить утечку между частотными элементами/диапазонами. Обратите внимание: чем сложнее тип окна, тем выше качество, но ниже скорость.
Эта функция будет использовать частоту дискретизации, указанную в AudioSettings.outputSampleRate, а НЕ частоту дискретизации, указанную для аудиоклипа.
Смотрите так же: AudioSource.GetOutputData, AudioListener.GetSpectrumData, AudioListener.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);
}
}
}
public float[] GetSpectrumData(int numSamples, int channel, FFTWindow window);
Параметры
numSamples | Количество выборок для извлечения. Должна быть степень числа 2. |
channel | Канал для выборки. |
window | Тип FFTWindow для использования при выборке. |
Описание
Устаревшая версия. Возвращает блок данных спектра воспроизводимого источника.
Этот вариант функции выделяет новый массив при каждом вызове. Вместо этого используйте версию без распределения для повышения производительности.
Количество значений (numSamples) должно быть степенью числа 2 (например, 128/256/512 и т. д.). Мин. = 64. Макс. = 8192. Используйте окно, чтобы уменьшить утечку между частотными элементами/диапазонами. Обратите внимание: чем сложнее тип окна, тем выше качество, но ниже скорость.