tutorial - ¿A qué se corresponden los datos de FFT en la API de Web Audio?
web audio api tutorial (2)
Utilicé los datos de FFT del nodo Analizador utilizando el método getByteFrequencyData
en Web Audio API para crear un visualizador de espectro como se muestra a continuación:
En este caso, tengo 256 contenedores de datos. ¿A qué corresponden exactamente los números? Es el nivel de decibeles de cada componente de frecuencia. Si es así, ¿cómo sé a qué corresponde el valor de la frecuencia de cada contenedor?
Me gustaría saber para poder experimentar construyendo una ecuación gráfica y, por lo tanto, me gustaría saber en qué puntos indicar las bandas de filtro. Idealmente, me gustaría representar las frecuencias de 20 Hz a 20 kHz y trazar intervalos entre los correspondientes.
Gracias por cualquier ayuda.
Con 256 contenedores, cada uno tendrá una separación de ~ 86 Hz (frecuencia de muestreo de 44100 kHz / fftSize, donde fftSize es el doble del número de contenedores). Entonces comienza en cero y sube en incrementos de 86 Hz desde allí.
Los valores reales en los contenedores son solo una representación de cuánto de cada frecuencia está presente en la señal (es decir, qué tan "alta" es la frecuencia).
sí, getByteFrequencyData
da getByteFrequencyData
resultado una matriz normalizada de valores entre 0 y 255. (copia los datos en la matriz que se transfiere).
las bandas de frecuencia se dividen en partes iguales, por lo que cada elemento N de su matriz corresponde a:
N * samplerate/fftSize
entonces, el primer contenedor es 0.
y, suponiendo una frecuencia de muestreo de 44100 y un <analyzerNode>.fftSize
de 512, el segundo sería: 86.13 Hz, y así sucesivamente ...
encontrará estas dos preguntas y respuestas útiles, en dsp y en SO :
Tenga en cuenta que la longitud de sus datos de muestra es la mitad del <analyzerNode>.fftSize
, lo que efectivamente limita el rango de frecuencia a la mitad de la frecuencia de muestreo.