Рассчитайте частоту из входного звука, используя FFT

Мое приложение. отображает пиковую частоту входного звука в об / мин. У меня есть массив двойных содержит сэмплы во временной области.

audioRecord.read(buffer, 0, 1024);

Тогда я сделал БПФ на нем.

transformer.ft(toTransform);

используя этот классВот

тогда я получил максимальную величину комплексных значений, которые являются результатами БПФ

// размер блока = 1024

double magnitude[] = new double[blockSize / 2];

            for (int i = 0; i < magnitude.length; i++) {
                double R = toTransform[2 * i] * toTransform[2 * i];
                double I = toTransform[2 * i + 1] * toTransform[2 * i * 1];

                magnitude[i] = Math.sqrt(I + R);
            }
            int maxIndex = 0;
            double max = magnitude[0];
            for(int i = 1; i < magnitude.length; i++) {
                if (magnitude[i] > max) {
                    max = magnitude[i];
                    maxIndex = i;
                }
            }

Теперь я получил индекс максимальной величины ... 1 - Как я могу получить пиковую частоту в деталях, пожалуйста? 2 - есть ли готовая функция под названием ComputeFrequency () или getFrequency ()? Заранее спасибо :)

Ответы на вопрос(1)

Ваш ответ на вопрос