¿Cómo generar el espectro de audio usando fft en C++?
spectrum (1)
Ya hay bastantes preguntas similares / relacionadas sobre SO que vale la pena leer, ya que las respuestas contienen mucha información y consejos útiles, pero en esencia es necesario que haga esto:
- convertir datos de audio al formato requerido por FFT (por ejemplo, int -> float, canales L / R separados)
- aplicar la función de ventana adecuada (por ejemplo, la ventana de Hann aka Hanning )
- aplicar FFT (NB: si usa una típica FFT compleja a compleja, entonces configure las partes imaginarias de la matriz de entrada a cero)
- calcule la magnitud de los primeros N / 2 contenedores de salida FFT (
sqrt(re*re + im*im)
) - opcionalmente convertir escala de magnitud a dB (log) (
20 * log10(magnitude)
) - trazar N / 2 (log) valores de magnitud
Tenga en cuenta que aunque FFTW es una FFT muy buena y muy rápida, puede ser un poco abrumadora para un principiante; también es muy costosa si desea incluirla como parte de un producto comercial. Recomiendo comenzar con KissFFT .
Quiero generar un espectro de audio (como se ve en este video ) de un archivo de audio mp3. Básicamente, este problema requiere calcular la fft de la señal de audio. ¿Cómo programo esto en C / C ++?
He visto algunas bibliotecas de código abierto como FFTW y realmente no sé cómo usarlas para mi problema. Cualquier ayuda sería muy apreciada. ¡Gracias por adelantado!