¿Cómo puedo obtener datos de frecuencia de PCM usando FFT

Tengo una serie de datos de audio que paso a un lector:

 recorder.read(audioData,0,bufferSize); 

La instanciación es la siguiente:

AudioRecord recorder;
short[] audioData;
int bufferSize;
int samplerate = 8000;

//get the buffer size to use with this audio record
bufferSize = AudioRecord.getMinBufferSize(samplerate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT)*3;

//instantiate the AudioRecorder
recorder = new AudioRecord(AudioSource.MIC,samplerate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,bufferSize); 

recording = true; //variable to use start or stop recording
audioData = new short [bufferSize]; //short array that pcm data is put into.

Tengo una clase de FFT que he encontrado en línea y una clase compleja para acompañarla. He intentado durante dos días buscar en línea en todas partes, pero no puedo encontrar la manera de recorrer los valores almacenados enaudioData y pasarlo a la FFT.

Esta es la clase de FFT que estoy usando:http: //www.cs.princeton.edu/introcs/97data/FFT.jav y esta es la clase compleja que lo acompaña:http: //introcs.cs.princeton.edu/java/97data/Complex.java.htm

Respuestas a la pregunta(3)

Su respuesta a la pregunta