12.11.2011, 04:38 PM
Einleitung
Wie ich im Thread Breitbandchassis erwähnte, habe ich vor langer zeit einmal angefangen einen RealTimeAnalyzer zu programmieren. Leider landete das Projet irgendwann mangels Motivation in der Versenkung.
Brauchbare Software in dieser Richtung gibt es leider nur ab 200? aufwärts.
Dennoch halte ich es für sinnvoll ein solches Tool zur Hand zu haben.
So kam mir also die Idee dies hier als "Software-Gemeinschfts-Projekt" vorzuschlagen.
Wer kann sich beteiligen?
Jeder!
Ganz unabhängig von mathematischen / informationstechnischen Grundkenntnissen. Ich habe das Projekt extra auf vb.net (bitte keine Diskussion deswegen!) umgemodelt und in sinnvolle Klassen (audio_in, audio_out, mathe, anzeige,...) unterteilt.
Was brauche ich?
-PC unter Windows
-Visual Studio ab 2008 oder das kostenlose VB.NET 2010 Express Edition
-die DirectX-for-managed-code-Binaries hier enthalten
-Soundkarte mit LineIN (kein Mikrofoneingang!)
Funktionsweise
Der enthaltene Signalgenerator liefert ein Anregungsignal, mit dem unser "prüfling" gefüttert wird. Ein Abgriff ("referenz") erfolgt nun vor dem Prüfling und ein zweiter ("signal") danach. (z.B. auch auch Messmikro möglich).
Beide Signale werden nun per FFT in den Frequenzbereich überführt und elementweise komplexwertig dividiert. Das Ergebnis ist die Übertragungsfunktion des Prüflings. In den Beträgen der komplexen werte steckt der Amplitudengang, in den Argumenten der Phasengang. Eine inverse FFT der Übertragungsfunktion liefert die Impulsantwort.
Für diese Analysen wird ein rosa Rauschen verwendet.
In den letzten zwei Tagen habe ich nun extra für Gucki noch eine THD-Messung implementiert (basierend auf periodischer Anregung), um "klirrende SE-Verstärker" betrachten zu können.
Ziele
-Verbesserung der Messmethoden
-Implementierung neuer Messungen (Impulsantwort, Verzögerung,...)
-Verbesserung der Anzeige
-Algorithmenoptimierung
-Daten Im/Export
-...
(Vielleicht wird das ja eines Tages unser interner Standard für Messungen an Lautsprechern, Verstärker, etc.)
Veröffentlichung
Ich habe mir gedacht, dass es evt. interessant wäre das Tool unter der GPL auf der Startseite des Forums zu veröffentlichen - als köder für interessierte Neuuser sozusagen
Hinweise
(1)
vb.net hat aufgrund den historischen Ursprüngen bei BASIC eine recht eigentümliche Art mit Arrays umzugehen.
In BASIC war der Niedrigste Index eines Arrays immer 1, während es bei allen andern Programmiersprachen 0 war und ist.
-> dim i(2) as integer
lieferte ein Array der Länge zwei mit den Elementen i(1) und i(2)
Um nun vb.net an den Rest der Welt anzupassen hat man den "0"-ten Eintag zum Array hinzugenommen, aber an der Deklaration nichts geändert:
-> dim i(2) as integer
liefert ein Array der Länge drei mit den Einträgen i(0), i(1), i(2)
(2)
Bei dem verwendetet FFT-Algorithmus sind die Frequenzen gespiegelt. D.h. während normal die negativen Frequenzen links liegen, die 0 in der Mitte und die positiven Frequenz rechts,
kommen hier erst 0Hz, dann die pos. Frequenzen bis fmax und von fmax wieder absteigend die negativen Frequenzen.
(3)
Bitte unter "Debug"->"Exceptions" das Häckchen bei "Managed Debugging Assistants" entfernen
(4)
Als Zielplattform x86 wählen (anstatt "any")
Die Sources
gibt es hier
Screenshot (Signal durch Mischpult)
Vorgehensweise
Falls tatsächlich Interesse besteht, würde ich vorschlagen, die von mir hier hochgeladene Version als 0v1 zu bezeichnen.
Wer nun Änderungen vornimmt postet ebenfalls wieder ein komplettes (funktionierendes) Projekt und ich füge von Zeit zu Zeit alle Änderungen zu einer neuen Version zusammen...
Wie ich im Thread Breitbandchassis erwähnte, habe ich vor langer zeit einmal angefangen einen RealTimeAnalyzer zu programmieren. Leider landete das Projet irgendwann mangels Motivation in der Versenkung.
Brauchbare Software in dieser Richtung gibt es leider nur ab 200? aufwärts.
Dennoch halte ich es für sinnvoll ein solches Tool zur Hand zu haben.
So kam mir also die Idee dies hier als "Software-Gemeinschfts-Projekt" vorzuschlagen.
Wer kann sich beteiligen?
Jeder!
Ganz unabhängig von mathematischen / informationstechnischen Grundkenntnissen. Ich habe das Projekt extra auf vb.net (bitte keine Diskussion deswegen!) umgemodelt und in sinnvolle Klassen (audio_in, audio_out, mathe, anzeige,...) unterteilt.
Was brauche ich?
-PC unter Windows
-Visual Studio ab 2008 oder das kostenlose VB.NET 2010 Express Edition
-die DirectX-for-managed-code-Binaries hier enthalten
-Soundkarte mit LineIN (kein Mikrofoneingang!)
Funktionsweise
Der enthaltene Signalgenerator liefert ein Anregungsignal, mit dem unser "prüfling" gefüttert wird. Ein Abgriff ("referenz") erfolgt nun vor dem Prüfling und ein zweiter ("signal") danach. (z.B. auch auch Messmikro möglich).
Beide Signale werden nun per FFT in den Frequenzbereich überführt und elementweise komplexwertig dividiert. Das Ergebnis ist die Übertragungsfunktion des Prüflings. In den Beträgen der komplexen werte steckt der Amplitudengang, in den Argumenten der Phasengang. Eine inverse FFT der Übertragungsfunktion liefert die Impulsantwort.
Für diese Analysen wird ein rosa Rauschen verwendet.
In den letzten zwei Tagen habe ich nun extra für Gucki noch eine THD-Messung implementiert (basierend auf periodischer Anregung), um "klirrende SE-Verstärker" betrachten zu können.
Ziele
-Verbesserung der Messmethoden
-Implementierung neuer Messungen (Impulsantwort, Verzögerung,...)
-Verbesserung der Anzeige
-Algorithmenoptimierung
-Daten Im/Export
-...
(Vielleicht wird das ja eines Tages unser interner Standard für Messungen an Lautsprechern, Verstärker, etc.)
Veröffentlichung
Ich habe mir gedacht, dass es evt. interessant wäre das Tool unter der GPL auf der Startseite des Forums zu veröffentlichen - als köder für interessierte Neuuser sozusagen
Hinweise
(1)
vb.net hat aufgrund den historischen Ursprüngen bei BASIC eine recht eigentümliche Art mit Arrays umzugehen.
In BASIC war der Niedrigste Index eines Arrays immer 1, während es bei allen andern Programmiersprachen 0 war und ist.
-> dim i(2) as integer
lieferte ein Array der Länge zwei mit den Elementen i(1) und i(2)
Um nun vb.net an den Rest der Welt anzupassen hat man den "0"-ten Eintag zum Array hinzugenommen, aber an der Deklaration nichts geändert:
-> dim i(2) as integer
liefert ein Array der Länge drei mit den Einträgen i(0), i(1), i(2)
(2)
Bei dem verwendetet FFT-Algorithmus sind die Frequenzen gespiegelt. D.h. während normal die negativen Frequenzen links liegen, die 0 in der Mitte und die positiven Frequenz rechts,
kommen hier erst 0Hz, dann die pos. Frequenzen bis fmax und von fmax wieder absteigend die negativen Frequenzen.
(3)
Bitte unter "Debug"->"Exceptions" das Häckchen bei "Managed Debugging Assistants" entfernen
(4)
Als Zielplattform x86 wählen (anstatt "any")
Die Sources
gibt es hier
Screenshot (Signal durch Mischpult)
Vorgehensweise
Falls tatsächlich Interesse besteht, würde ich vorschlagen, die von mir hier hochgeladene Version als 0v1 zu bezeichnen.
Wer nun Änderungen vornimmt postet ebenfalls wieder ein komplettes (funktionierendes) Projekt und ich füge von Zeit zu Zeit alle Änderungen zu einer neuen Version zusammen...
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.