Массив, который вы показываете, является коэффициентами преобразования Фурье аудиосигнала. Эти коэффициенты могут быть использованы для получения частотного содержимого аудио. БПФ определено для входных функций со сложными значениями, поэтому коэффициенты, которые вы получаете, будут мнимыми числами, даже если ваши входные данные являются реальными значениями. Чтобы получить величину мощности на каждой частоте, вам необходимо рассчитать величину коэффициента БПФ для каждой частоты. Это , а не просто реальная составляющая коэффициента, вам нужно вычислить квадратный корень из суммы квадратов его действительной и мнимой составляющих. То есть, если ваш коэффициент равен a + b * j, то его величина равна sqrt (a ^ 2 + b ^ 2).
После того, как вы вычислили величину каждого коэффициента БПФ, вам необходимо выяснить, к какой звуковой частоте относится каждый коэффициент БПФ. N-точечное БПФ даст вам частотный контент вашего сигнала на N одинаково разнесенных частотах, начиная с 0. Поскольку ваша частота дискретизации составляет 44100 выборок / сек. и количество точек в вашем БПФ равно 256, ваш частотный интервал составляет 44100/256 = 172 Гц (приблизительно)
Первым коэффициентом в вашем массиве будет коэффициент частоты 0. Это в основном средний уровень мощности для всех частот. Остальные ваши коэффициенты будут отсчитываться от 0 с умножением на 172 Гц до тех пор, пока вы не достигнете 128. В БПФ вы можете измерять частоты только до половины ваших точек выборки. Прочтите эти ссылки на Частота Найквиста и Теорема выборки Найквиста-Шеннона , если вы жаждете наказания и вам нужно знать почему, но основной результат заключается в том, что ваши более низкие частоты реплицироваться или с псевдонимом в высокочастотных сегментах. Таким образом, частоты будут начинаться с 0, увеличиваться на 172 Гц для каждого коэффициента до коэффициента N / 2, а затем уменьшаться на 172 Гц до тех пор, пока коэффициент N - 1.
Этого должно быть достаточно, чтобы начать работу. Если вы хотите гораздо более доступное введение в БПФ, чем в Википедии, вы можете попробовать Понимание цифровой обработки сигналов: 2-е изд. . Это было очень полезно для меня.
Так вот, что представляют собой эти цифры. Преобразование в процент от высоты может быть выполнено путем масштабирования каждой амплитуды частотной составляющей суммы всех амплитуд. Хотя, это только даст вам представление об относительном распределении частот, а не фактической мощности для каждой частоты. Вы можете попробовать масштабировать до максимально возможной величины для частотного компонента, но я не уверен, что это будет отображаться очень хорошо. Самый быстрый способ найти работающий коэффициент масштабирования - поэкспериментировать с громкими и тихими звуковыми сигналами, чтобы найти правильную настройку.
Наконец, вы должны усреднить два канала вместе, если хотите показать частотный контент всего аудиосигнала в целом. Вы микшируете стереозвук в монофонический звук и показываете объединенные частоты. Если вам нужны два отдельных дисплея для правой и левой частот, вам нужно будет выполнить преобразование Фурье для каждого канала отдельно.