Весёлый, кратко о FFT: семплированный сигнал представляет из себя вектор значений амплитуды по времени, а FFT переводит его в вектор комплексных величин по частоте.
Комплексная величина состоит из значений синуса и косинуса для начальной фазы сигнала в семпле на данной частоте. Из этих комплексных величин можно получить начальную фазу и амплитуду каждой частоты. Из этого результата можно потом назад собрать исходный сигнал.
Если FFT выполняется по N исходных значений семпла, то на выходе получаем значения для N/2 частот и еще одно значение для постоянной состовляющей.
Прочесть о цифровой обработке сигналов можно тут:
http://www.dspguide.com/Если попроще, то найди какую-нибудь бтблиотеку, реализующую FFT.
Для более простых условий, когда не нужно разкладывать сигнал на спектр, нужно лишь получить амплитуду на небольшом наборе частот, существует алгоритм Goertzel.