Ich versuche, einen grafischen Spektrumanalysator in Python zu erstellen.
Ich lese gerade 1024 Bytes eines 16-Bit-Dual-Channel-Audiostreams mit 44.100 Hz Abtastrate und mittle die Amplitude der beiden Kanäle zusammen. Jetzt habe ich eine Reihe von 256 signierten Shorts. Ich möchte jetzt ein fft auf diesem Array mit einem Modul wie numpy vorformen und das Ergebnis verwenden, um den grafischen Spektrumanalysator zu erstellen, der zu Beginn nur 32 Balken beträgt.
Ich habe die Wikipedia-Artikel über schnelle Fourier-Transformation und diskrete Fourier-Transformation gelesen, bin mir aber immer noch nicht sicher, was das resultierende Array darstellt. So sieht das Array aus, nachdem ich mit numpy ein fft auf meinem Array durchgeführt habe:
[ -3.37260500e+05 +0.00000000e+00j 7.11787022e+05 +1.70667403e+04j
4.10040193e+05 +3.28653370e+05j 9.90933073e+04 +1.60555003e+05j
2.28787050e+05 +3.24141951e+05j 2.09781047e+04 +2.31063376e+05j
-2.15941453e+05 +1.63773851e+05j -7.07833051e+04 +1.52467334e+05j
-1.37440802e+05 +6.28107674e+04j -7.07536614e+03 +5.55634993e+03j
-4.31009964e+04 -1.74891657e+05j 1.39384348e+05 +1.95956947e+04j
1.73613033e+05 +1.16883207e+05j 1.15610357e+05 -2.62619884e+04j
-2.05469722e+05 +1.71343186e+05j -1.56779748e+04 +1.51258101e+05j
-2.08639913e+05 +6.07372799e+04j -2.90623668e+05 -2.79550838e+05j
-1.68112214e+05 +4.47877871e+04j -1.21289916e+03 +1.18397979e+05j
-1.55779104e+05 +5.06852464e+04j 1.95309737e+05 +1.93876325e+04j
-2.80400414e+05 +6.90079265e+04j 1.25892113e+04 -1.39293422e+05j
3.10709174e+04 -1.35248953e+05j 1.31003438e+05 +1.90799303e+05j...
Ich frage mich, was genau diese Zahlen darstellen und wie ich diese Zahlen für jeden der 32 Balken in einen Prozentsatz einer Höhe umwandeln würde. Sollte ich auch die 2 Kanäle zusammen mitteln?