Berechnen Sie die Frequenz aus der Toneingabe mit FFT
Meine App. zeigt die Spitzenfrequenz des Eingangssignals in U / min an. Ich habe ein Array von Doppelwerten, das die Samples im Zeitbereich enthält.
audioRecord.read(buffer, 0, 1024);
Dann habe ich FFT drauf gemacht.
transformer.ft(toTransform);
mit dieser KlasseHier
dann habe ich die maximale Größe von komplexen Werten, die die Ergebnisse von FFT sind
// Blockgröße = 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;
}
}
Jetzt habe ich den Index der maximalen Größe ... 1 - Wie kann ich die Spitzenfrequenz in den Details pls erhalten? 2 - Gibt es eine Ready-Funktion namens ComputeFrequency () oder getFrequency ()? Danke im Voraus :)