Software geschrieben in 80586/80587 Assembler und Objekt-Pascal. Wir entwickeln Software mit speziellen Berechnungen auf Bestellung.
Spektrum ist ein Programm, geschrieben in Objekt-Pascal, rund um die Problematik mit Abtastserien von Zeitfunktionen
und deren Spektrum für Anwender, die wissen was eine Fouriertransformation ist.
Dem Benutzer wird es ermöglicht durch simple Programmierung beliebige Abastserien von Zeitfunktionen
zu erstellen, diese mit Hilfe einer FFT in den Spektralbereich zu transformieren und sich die Ergebnisse grafisch
anzusehen. Darüber hinaus sind Manipulationen am Spektrum und eine anschließende Rücktransformation in den Zeitbereich
möglich. Weitere Werkzeuge des Programms sind die Hanning-Bewertung und die inverse Hanning-Bewertung.
Grafische Darstellung und Tabellenausgabe in linearer, logarithmischer, als Phasenspektrum und als Zeitfunktion.
Für Anwender, die sich das Spektrum von 16 Bit-Stereo-WAV-Dateien ansehen wollen ist auch gesorgt. Diese Dateien können
in ihre Kanäle zerlegt, transformiert, manipuliert und wieder zurücktransformiert werden. Im Anschluß daran ist eine
Synthese zu einer 16-Bit-Stereo-WAV-Datei möglich.
Definieren Sie z. B. das Feld über der Apertur einer Antenne und berechnen Sie das Richtdiagramm, oder berechnen
Sie durch inverse FFT die Impulsantwort aus der Übertragungsfunktion bzw. durch vorwärts-FFT die Übertragungsfunktion aus der Impulsantwort.
Die berechnenden Unterprogramme sind in Assembler geschrieben und optimiert.
Screenshots:
![]() | ![]() | |
| Programmstart | log. Spektrum einer ZSB-AM | |
![]() | ![]() | |
| Phasenspektrum der AM | Tabelle der Spektralwerte | |
![]() | Spektrum des linken Stereo-Kanals des Sound-Tracks In-A-Gadda-Da-Vida von Iron Butterfly. Dateilänge 256 MiB. Man erkennt der Track ist nicht Gleichanteilsfrei. Auf die ganz hohen Frequenzen wurde ein Tiefpaß angewendet. Das Musikstück wurde in seiner ganzen Länge vom Zeitbereich in den Frequenzbereich transformiert. Berechnungen mit Spektrum 2.7 | |
![]() | Zeitfunktion des linken Stereo-Kanals des selben Tracks | |
![]() | Cepstrum des linken Stereo-Kanals des selben Tracks |
| Systemanforderungen: | |
| - Pentium 600 MHz | |
| - 16 MiB + (1+1/2) fache Länge der Abtastserie in Byte | |
| - Grafikkarte | |
| - WIN 95, WIN 98, WIN 98 2nd Ed., WIN 2000 Prof., WIN XP Prof., WIN X64 | |
| - grafikfähiger Drucker DIN-A 4 |
SpektrumExt arbeitet mit 8-Byte-Long-Real-Zahlen und verarbeitet Exponenten bis 324 bei einer Genauigkeit von 15+1/2 signifikanten Stellen. Aufgrund des hohen Speicherbedarfs wurde auf die Möglichkeit zur Bearbeitung von WAV-Dateien verzichtet. Ansonsten wie Spektrum.
| Systemanforderungen: | |
| - Pentium 600 MHz | |
| - 16 MiB + (1+1/2) fache Länge der Abtastserie in Byte | |
| - Grafikkarte | |
| - WIN 95, WIN 98, WIN 98 2nd Ed., WIN 2000 Prof., WIN XP Prof., WIN X64 | |
| - grafikfähiger Drucker DIN-A 4 |
SpektrumExtImag arbeitet mit 8-Byte-Long-Real-Zahlen und verarbeitet Exponenten bis 324 bei einer Genauigkeit von 15+1/2 signifikanten Stellen. Komplexe Abtastserien können definiert und transformiert werden. Die Algorithmen der allgemein bekannten FFT werden verwendet. Es gibt Funktionen für die Hanning-Bewertung, inverse Hanning-Bewertung und den Spektral-Diskriminator. Dieses Programm ist am ehesten geeignet für rein mathematische Anwendung. Die FFT bzw. inverse FFT wird natürlich in Rekordzeit berechnet.
| Systemanforderungen: | |
| - Pentium 600 MHz | |
| - 16 MiB + Länge der Abtastserie in Byte | |
| - Grafikkarte | |
| - WIN 95, WIN 98, WIN 98 2nd Ed., WIN 2000 Prof., WIN XP Prof., WIN X64 | |
| - grafikfähiger Drucker DIN-A 4 |
SpektrumExtImagCep arbeitet mit 8-Byte-Long-Real-Zahlen und verarbeitet Exponenten bis 324 bei einer Genauigkeit von 15+1/2 signifikanten Stellen. Komplexe Abtastserien können definiert und transformiert werden. Die Algorithmen der allgemein bekannten FFT werden verwendet. Zusätzlich wurden die Funktionen CEPSTRUM und inverses CEPSTRUM implementiert, mit denen eine komplexe Logarithmierung und Rücktransformation in den Zeitbereich möglich ist und umgekehrt. Es gibt Funktionen für die Hanning-Bewertung, inverse Hanning-Bewertung und den Spektral-Diskriminator. Dieses Programm ist am ehesten geeignet für rein mathematische Anwendung. Die FFT bzw. inverse FFT wird natürlich in Rekordzeit berechnet.
| Systemanforderungen: | |
| - Pentium 600 MHz | |
| - 16 MiB + Länge der Abtastserie in Byte | |
| - Grafikkarte | |
| - WIN 95, WIN 98, WIN 98 2nd Ed., WIN 2000 Prof., WIN XP Prof., WIN X64 | |
| - grafikfähiger Drucker DIN-A 4 |
Der Apfelmann aus der Mandelbrotmenge läßt sich in verschiedenen Farben grafisch darstellen. Mit der Maus lassen sich beliebig oft (bis an die Grenzen der Zahlendarstellung der FPU) Untermengen in der Grafik markieren, vergrößern und neu berechnen. Das Ergebnis sind faszinierende Grafiken mit scheinbar unerschöpflicher Vielfalt. Berechnete Bilder können dann als BMP-Datei auswählbarer Größe gespeichert, in Paint geöffnet und gedruckt werden. Je nach Leistungsfähigkeit Ihrer Grafik-Hardware sind großformatige Berechnungen möglich.
Screenshots:
![]() | ![]() | |
| kompl. Mandelbrotmenge | Untermenge am Rande | |
![]() | stark vergrößerte Untermenge am Fuß der Mandelbrotmenge |
| Systemanforderungen: | |
| - Pentium 600 MHz | |
| - True Color Grafikkarte | |
| - WIN 95, WIN 98, WIN 98 2nd Ed., WIN 2000 Prof., WIN XP Prof., WIN X64 |
This fft.dll contains 18 procedures to solve problems around FFTs.
The procedures use SSE2-instructions of the Pentium and FPU-instructions.
The real-data-computations are all made within the 80-Bit-FPU-registers.
For integer-computations SSE2 instructions and XMM-registers are used.
Some procedures requires complex input-data as explained.
In Delphi this procedures will be declared as follows, for other high-level-languages refer to manual:
procedure TestHello();stdcall;external 'fft.dll';
or
procedure real32fft(lpFileName:PChar,lpError:Pointer);stdcall;external 'fft.dll'
- TestHello();
returns a message-box that the fft.dll is loaded correctly
- real32fft(lpFileNameString,lpdwErrVar);
makes a FFT of a file of 4-Byte-Short-Reals with real data
(n=2^k real numbers)
- invreal32fft(lpFileNameString,lpdwErrVar);
makes an inverse FFT of a file of 4-Byte-Short-Reals with complex data
(n=2^(k-1) real numbers and 2^(k-1) complex numbers)
- hanning32(lpFileNameString,lpdwErrVar);
valuates a file of 4-Byte-Short-Reals with the Hanning-Valuation
- invhanning32(lpFileNameString,lpdwErrVar);
makes an inverse Hanning-valuation of a file of 4-Byte-Short-Reals
- real64fft(lpFileNameString,lpdwErrVar);
makes a FFT of a file of 8-Byte-Long-Reals
(n=2^k real numbers)
- invreal64fft(lpFileNameString,lpdwErrVar);
makes an inverse FFT of a file of 8-Byte-Long-Reals
(n=2^(k-1) real numbers and 2^(k-1) complex numbers)
- hanning64(lpFileNameString,lpdwErrVar);
valuates a file of 8-Byte-Long-Reals with the Hanning-Valuation
- invhanning64(lpFileNameString,lpdwErrVar);
makes an inverse Hanning-valuation of a file of 8-Byte-Long-Reals
- imag64fft(lpFileNameString,lpdwErrVar);
makes a FFT of a file of 8-Byte-Long-Reals with complex data
(n=2^k real numbers and 2^k complex numbers)
- invimag64fft(lpFileNameString,lpdwErrVar);
makes an inverse FFT of a file of 8-Byte-Long-Reals with complex data
(n=2^k real numbers and 2^k complex numbers)
- imaghanning64(lpFileNameString,lpdwErrVar);
valuates a file of 8-Byte-Long-Reals with the Hanning-Valuation
(n=2^k real numbers and 2^k complex numbers)
- invimaghanning64(lpFileNameString,lpdwErrVar);
makes an inverse Hanning-valuation of a file of 8-Byte-Long-Reals
(n=2^k real numbers and 2^k complex numbers)
- imag80fft(lpFileNameString,lpdwErrVar);
makes a FFT of a file of 10-Byte-Reals with complex data
(n=2^k real numbers and 2^k complex numbers)
- invimag80fft(lpFileNameString,lpdwErrVar);
makes an inverse FFT of a file of 10-Byte-Reals with complex data
(n=2^k real numbers and 2^k complex numbers)
- imaghanning80(lpFileNameString,lpdwErrVar);
valuates a file of 10-Byte-Reals with the Hanning-Valuation
(n=2^k real numbers and 2^k complex numbers)
- invimaghanning80(lpFileNameString,lpdwErrVar);
valuates a file of 10-Byte-Reals with the inverse Hanning-Valuation
(n=2^k real numbers and 2^k complex numbers)
| Systemanforderungen: | |
| - Pentium 4 | |
| - WIN 95, WIN 98, WIN 98 2nd Ed., WIN 2000 Prof., WIN XP Prof., WIN X64 |
This specing.dll contains 18 procedures to solve problems around FFTs and digital signal computations.
The procedures use SSE2-instructions of the Pentium and FPU-instructions.
The real-data-computations are all made within the 80-Bit-FPU-registers.
For integer-computations SSE2 instructions and XMM-registers are used.
Some procedures requires complex input-data as explained.
In Delphi this procedures will be declared as follows, for other high-level-languages refer to manual:
procedure TestHello();stdcall;external 'fft.dll';
or
procedure real32fft(lpFileName:PChar,lpError:Pointer);stdcall;external 'fft.dll'
- TestHello();
returns a message-box that the fft.dll is loaded correctly
- real32fft(lpFileNameString,lpdwErrVar);
makes a FFT of a file of 4-Byte-Short-Reals with real data
(n=2^k real numbers)
- invreal32fft(lpFileNameString,lpdwErrVar);
makes an inverse FFT of a file of 4-Byte-Short-Reals with complex data
(n=2^(k-1) real numbers and 2^(k-1) complex numbers)
- hanning32(lpFileNameString,lpdwErrVar);
valuates a file of 4-Byte-Short-Reals with the Hanning-Valuation
- invhanning32(lpFileNameString,lpdwErrVar);
makes an inverse Hanning-valuation of a file of 4-Byte-Short-Reals
- wavzerl(lpFileNameString,lpdwErrVar);
creates a file of 4-Byte-Short-Reals from a 16-Bit-Stereo-WAV-File
- syn(lpFileNameString1,lpFileNameString2,lpErrVar);
creates a 16-Bit-Stereo-WAV-File from 2 pc. 4-Byte-Short-Reals
- disc(lpFileNameString,lpErrVar);
a noise-discriminator for a spectrum-file
- adsim(lpFileNameSTring,lpErrVar),
simulates a adc on a mathematical computated series
- full(lpFileNameString,lpErrVar);
full amplification for 16-Bit-Stereo-WAV-Files
- filtflt(lpFileNameString,lpErrVar);
FIR (LP, BP, HP)-filter for 4-Byte-Short-Real-Series
with extra program to determine the filter-data
- ampflt(lpFileNameString,dwamp,lpErrVar);
amplification for 16-Bit-Stereo-WAV-Files
- cep32(lpFileNameString,lpErrVar);
amount/angle-CEPSTRUM computation from 4-Byte-Short-Real-spectrum-data
- lncep32(lpFileNameString,lpErrVar);
logarithm CEPSTRUM computation from 4-Byte-Short-Real-spectrum-data
- real32zerpic((lpFileNameString,lpErrVar);
creates a file of 2^k 4-Byte-Short-Reals from a known *.bmp-format
- bmp32fft(lpFileNameString,lpdwErrVar);
makes a 2-D-FFT of a file of 4-Byte-Short-Reals with real input data
(n=2^k real numbers) and creates a new file named *2dft.fft
- bmp1dfft(lpFileNameString,lpdwErrVar);
makes a 1-D-FFT of a file of 4-Byte-Short-Reals with real input data
(n=2^k real numbers) and creates a new file named *1dft.fft
- bmp32cep(lpFileNameString,lpdwErrVar);
makes a 2-D-CEPSTRUM of a file of 4-Byte-Short-Reals with real spectrum-input-data
(n=2^k real numbers) and creates a new file named *2dftit.cep
- bmp1dcep(lpFileNameString,lpdwErrVar);
makes a 1-D-CEPSTRUM of a file of 4-Byte-Short-Reals with real spectrum-input-data
(n=2^k real numbers) and creates a new file named *1dftit.cep
- bmpsyn(lpFileNameString,lpdwErrVar);
creates a *2dft.bmp-file from a *2dft.fft-file
| Systemanforderungen: | |
| - Pentium 4 | |
| - WIN 95, WIN 98, WIN 98 2nd Ed., WIN 2000 Prof., WIN XP Prof., WIN X64 |
real32fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit realfft(FileName:String, lpError) aufgerufen. Die Berechnung des Spektrums ist sowohl speicher- als auch geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Die Besonderheit von realfft() liegt im verwendeten Algorithmus, der nur 75 % des üblichen Speicherbedarfs einer FFT hat. Real32fft arbeitet mit 4-Byte-Short-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
invreal32fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit invrealfft(FileName:String, lpError) aufgerufen. Die Berechnung der Abtastwerte ist sowohl speicher- als auch geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Die Besonderheit von invrealfft() liegt im verwendeten Algorithmus, der nur 75 % des üblichen Speicherbedarfs einer inversen FFT hat. Invreal32fft arbeitet mit 4-Byte-Short-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
real64fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit realfft(FileName:String, lpError) aufgerufen. Die Berechnung des Spektrums ist sowohl speicher- als auch geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Die Besonderheit von realfft() liegt im verwendeten Algorithmus, der nur 75 % des üblichen Speicherbedarfs einer FFT hat. Real64fft arbeitet mit 8-Byte-Long-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
invreal64fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit invrealfft(FileName:String, lpError) aufgerufen. Die Berechnung der Abtastwerte ist sowohl speicher- als auch geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Die Besonderheit von invrealfft() liegt im verwendeten Algorithmus, der nur 75 % des üblichen Speicherbedarfs einer inversen FFT hat. Invreal32fft arbeitet mit 8-Byte-Long-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
imag32fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit imagfft(FileName:String, lpError) aufgerufen. Die Berechnung des Spektrums ist geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Imag32fft arbeitet mit 4-Byte-Short-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
invimag32fft.zip enthält eine readme.txt-Datei und wap32.obj. Letzteres können Sie als externe Procedure in Ihren Hochsprachenprogrammen deklarieren und anlinken. Die Procedure wird dann aus Ihrem Programm mit invimagfft(FileName:String, lpError) aufgerufen. Die Berechnung des Abtastwerte ist geschwindigkeitsoptimiert und in 80586/80587-Assembler entwickelt worden. Fehlercodes werden in eine Fehlervariable vom Typ Longword in Ihrem Hochsprachenprogramm eingetragen. Invimag32fft arbeitet mit 4-Byte-Short-Real-Zahlen. Für alle Windows-Versionen ab Win 95.
Wie imag32fft, aber Verarbeitung von Double-Real-Zahlen (8-Byte-Long-Real).
Wie invimag32fft, aber Verarbeitung von Double-Real-Zahlen (8-Byte-Long-Real).