Ответ 1
Существует много аналогичных/связанных вопросов по SO, которые хорошо читаются, поскольку ответы содержат много полезной информации и советов, но по существу вам нужно это сделать:
- конвертировать аудиоданные в формат, требуемый FFT (например, int → float, отдельные каналы L/R)
- примените подходящую (например, Hann aka Hanning window)
- применить FFT (NB: если использовать типичный комплексно-сложный FFT, тогда установите мнимые части входного массива на нуль)
- рассчитать величину первых N/2 выходов БПФ (
sqrt(re*re + im*im)
) - опционально преобразуйте масштаб в шкалу dB (log) (
20 * log10(magnitude)
) - график N/2 (log) значения величины
Обратите внимание, что, хотя FFTW - очень хороший и очень быстрый FFT, он может быть немного подавляющим для новичков - он также очень дорог, если вы хотите включить его в состав коммерческого продукта - я рекомендую начинать с KissFFT.