Análisis de espectro de audio usando algoritmo de FFT en Java

Quiero analizar el espectro de un archivo de audio en Java (ME). Quiero dibujar el espectro como lo hacen algunos reproductores multimedia. Pero no entiendo algunos puntos:

  1. Entrada para el algoritmo de FFT, que tengo que obtener del archivo de audio. Ahora no sé cómo se llama, qué es y, lo que es más importante, no sé cómo obtenerlo.
  2. Salida: si la entrada es una matriz (¿rango?) Obtengo otra matriz, y tiene un rango: 0-1, ¿correcto? (O no)? Entonces, ¿qué tengo que ver con eso?

Necesita algunos pasos adicionales además de la FFT. Esto se ha cubierto muchas veces en anteriores preguntas similares aquí en SO, y puede encontrar material adicional buscando “dsp”, “fft”, “espectro”, “espectrogtwig”, etc., pero esencialmente necesita hacer lo siguiente :

  • aplicar una función de ventana a los datos de entrada (por ejemplo, Hann (ing) )
  • aplicar FFT a datos de entrada con ventana (para FFT compleja a compleja, las entradas imaginarias deberían ser todas cero)
  • calcular la magnitud al cuadrado de los primeros N / 2 contenedores de salida FFT ( re * re + im * im )
  • convertir magnitud cuadrada a escala de dB ( 10 * log10(squared_magnitude) )