Подтвердить что ты не робот

Каковы данные FFT в API веб-аудио?

Я использовал данные FFT из анализатора node, используя метод getByteFrequencyData в API веб-аудио, чтобы создать визуализатор спектра, как показано ниже:

Spectrum Visualizer

В этом случае у меня 256 бит данных. Что именно соответствуют номерам в этом? Это уровень децибел каждой частотной составляющей. Если да, то как узнать, что соответствует значение частоты каждого бина?

Я хотел бы знать, поэтому я могу поэкспериментировать с построением графического эквалайзера и поэтому хотел бы знать, в каких точках указывать полосы фильтра. В идеале я хотел бы представлять частоты от 20 Гц до 20 кГц и интервалы между ними.

Спасибо за любую помощь.

4b9b3361

Ответ 1

да, getByteFrequencyData приводит к нормализованному массиву значений от 0 до 255. (он копирует данные в массив, в который он передается).

частотные полосы разделяются поровну, поэтому каждый элемент N вашего массива соответствует:

N * samplerate/fftSize

поэтому первый бит равен 0.
и, если предположить, что частота 44100 и <analyzerNode>.fftSize равна 512, вторая будет: 86,13 Гц и т.д....

вы найдете эти два вопроса и ответы полезными: dsp и fooobar.com/questions/46893/...:

Обратите внимание, что длина ваших семплированных данных составляет половину <analyzerNode>.fftSize, что фактически ограничивает диапазон частот до половины выборки.

Ответ 2

С 256 ячейками каждая будет составлять ~ 86 Гц (частота дискретизации 44100 кГц /fftSize, где fftSize в два раза больше количества ящиков). Итак, вы начинаете с нуля и поднимаетесь с шагом в 86 Гц оттуда.

Фактические значения в бункерах представляют собой просто представление о том, какая часть каждой частоты присутствует в сигнале (например, как "громкая" частота).