Hallo,
ich möchte ein Audiosignal von der Soundkarte als FFT Spektrum grafisch darstellen.
Die FFT Auflösung (Binbreite) sollte einstellbar sein.
Mit welchen Paketen kann man dass realisieren ?
Gruß Frank
			
			
									
									
						Audiosignal als FFT Spektrum darstellen
- 
				mschnell
 - Beiträge: 3444
 - Registriert: Mo 11. Sep 2006, 10:24
 - OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
 - CPU-Target: X32 / X64 / ARMv5
 - Wohnort: Krefeld
 
Re: Audiosignal als FFT Spektrum darstellen
Sowas habe ich schonmal in einem DAW-Programm mit der eingebauten Sprache gemacht. Deshalb nur ein paar Stichworte: 
Die eigentliche FFT sollte kein Problem sein. Dafür gibt es bestimmt mehrere Pascal Funktionen.
Standard_FFT überführt mathematisch ein Array von komplexen Zahlen in ein gleich großes Array anderer komplexer Zahlen. Da die Audio-Daten aber reell sind ist das ineffektiv. Es gibt einen Algorithmus der für reelle inpüut-daten wesentlich schneller ist.
Alternativ gibt es auch einen Algorithmus, der reelle Stereo-Daten so schnell bearbeitet wie komplexe Mono-Daten.
Für FFT von Realtime-Audio-Daten brauchst Du einen Algorithmus, um "gleitende" Fenster "häppchenweise" zu konvertieren. (Stichwort "sinc")
-Michael
			
			
									
									
						Die eigentliche FFT sollte kein Problem sein. Dafür gibt es bestimmt mehrere Pascal Funktionen.
Standard_FFT überführt mathematisch ein Array von komplexen Zahlen in ein gleich großes Array anderer komplexer Zahlen. Da die Audio-Daten aber reell sind ist das ineffektiv. Es gibt einen Algorithmus der für reelle inpüut-daten wesentlich schneller ist.
Alternativ gibt es auch einen Algorithmus, der reelle Stereo-Daten so schnell bearbeitet wie komplexe Mono-Daten.
Für FFT von Realtime-Audio-Daten brauchst Du einen Algorithmus, um "gleitende" Fenster "häppchenweise" zu konvertieren. (Stichwort "sinc")
-Michael
- 
				DL3AD
 - Beiträge: 478
 - Registriert: Fr 13. Sep 2013, 12:07
 - OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
 - CPU-Target: 64Bit
 - Wohnort: Rügen
 
Re: Audiosignal als FFT Spektrum darstellen
Das Problem der Real Daten bekommt man mit einer Hilbert transformation gelöst - habe ich in GNU Radio getestet.
Die Frage ist eigentlich mit welchen Paketen bekomme ich das in freepascal hin ?
- Zugriff auf die Soundkarte
- verarbeiten der Audio Daten
- Darstellung im Form
Gruß Frank
			
			
									
									
						Die Frage ist eigentlich mit welchen Paketen bekomme ich das in freepascal hin ?
- Zugriff auf die Soundkarte
- verarbeiten der Audio Daten
- Darstellung im Form
Gruß Frank
- af0815
 - Lazarusforum e. V.
 - Beiträge: 6985
 - Registriert: So 7. Jan 2007, 10:20
 - OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
 - CPU-Target: 32Bit (64Bit)
 - Wohnort: Burgenland
 - Kontaktdaten:
 
Re: Audiosignal als FFT Spektrum darstellen
Das ist OS-Spezifisch. Ev. über vlc, gstreamer oder ffmpeg kann man da OS unabhängig lösen. Man muss dann immer auf eine unabhängige Plattform ausweichen um das OS spezifische zu vermeiden.DL3AD hat geschrieben:Die Frage ist eigentlich mit welchen Paketen bekomme ich das in freepascal hin ?
- Zugriff auf die Soundkarte
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder  nachsehen in  LazInfos/LazSnippets).
						- 
				sstvmaster
 - Beiträge: 585
 - Registriert: Sa 22. Okt 2016, 23:12
 - OS, Lazarus, FPC: W10, L 3.8
 - CPU-Target: 32+64bit
 - Wohnort: Dresden
 
Re: Audiosignal als FFT Spektrum darstellen
Hallo Frank,
vielleicht nützt dir das was: https://github.com/gyrotron/MAAplot
Von hier: viewtopic.php?f=29&t=8217
Nachtrag:
FFT: https://forum.lazarus.freepascal.org/in ... ic=14485.0
2. Beitrag von Laksen.
73 Maik
			
			
									
									vielleicht nützt dir das was: https://github.com/gyrotron/MAAplot
Von hier: viewtopic.php?f=29&t=8217
Nachtrag:
FFT: https://forum.lazarus.freepascal.org/in ... ic=14485.0
2. Beitrag von Laksen.
73 Maik
LG Maik
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
						Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)