Liebe Mitleserinnen, Mitleser, Foristinnen und Foristen,
wer sich von Euch in letzter Zeit mit dem Gedanken getragen hat, Mitglied unseres wunderbaren IGDH-Forums zu werden und die vorher an dieser Stelle beschriebene Prozedur dafür auf sich genommen hat, musste oftmals enttäuscht feststellen, dass von unserer Seite keine angemessene Reaktion erfolgte.
Dafür entschuldige ich mich im Namen des Vereins!
Es gibt massive technische Probleme mit der veralteten und mittlerweile sehr wackeligen Foren-Software und die Freischaltung neuer User ist deshalb momentan nicht mit angemessenem administrativem Aufwand möglich.
Wir arbeiten mit Hochdruck daran, das Forum neu aufzusetzen und es sieht alles sehr vielversprechend aus.
Sobald es dies bezüglich Neuigkeiten, respektive einen Zeitplan gibt, lasse ich es Euch hier wissen.
Das wird auch für alle hier schon registrierten User wichtig sein, weil wir dann mit Euch den Umzug auf das neue Forum abstimmen werden.
Wir freuen uns sehr, wenn sich die geneigten Mitleserinnen und Mitleser, die sich bisher vergeblich um eine Freischaltung bemüht haben, nach der Neuaufsetzung abermals ein Herz fassen wollen und wir sie dann im neuen Forum willkommen heißen können.
Herzliche Grüße von Eurem ersten Vorsitzenden der IGDH
in den letzten Monaten habe ich eine ganze Reihe von Messprogrammen geschrieben. Gründe waren zum Einen, dass ich zu Hause ein taugliches brauchte (kein Windows, kein linux, kein Mac), und mir auf der Arbeit Arta und Limp ziemlich auf den Zünder gingen. Ich kann damit einfach nicht schnell genug arbeiten.
Ich will Euch gerne an einigen davon teilhaben lassen, teils aus Altruismus, teils aus purem Egoismus, weil viele Tester mehr und schneller Fehler finden als ein einzelner, und vielleicht auch Anregungen geben können.
Dies hier ist der erste Teil: Frequenzgänge von Lautsprechern messen.
Installation: ganz einfach, irgendwo den Ordner entpacken
Starten: noch viel einfacher, Doppelklick auf fr.tcl im Basisverzeichnis
Einfach mal messen: Taste "m" drücken
Auch interessant: "F1" drücken
Etliche der Tricks und Kniffe werde ich im Laufe der Zeit hier schreiben, entweder in Eigeninitiative oder auf Anfrage.
Was mich am meisten interessieren würde: startet es überhaupt? Ich habe hier auf allen Rechnern ein eigenes Tcl (zwecks Entwicklungsumgebung), da kann schon mal einiges dabei sein, was in so einer offiziellen Distribution wie ActiveTcl vielleicht fehlt.
Kleine Einschränkung: zur Zeit ist die Audio-Ausgabe aus Kompatibilitätsgründen auf die gute alte WinMM-API eingeschränkt. Die ist zwar scheiße, aber funktioniert auch auf Windows XP. Ich könnte auch WASAPI, Kernel Streaming, Direct Sound und ähnlichen SchickiMicki, aber erstmal muss das altgammelige reichen.
Läuft bei mir unter Windows 10. UI ist für Asketen gemacht
Immerhin hab ich es geschafft, eine Messung zu starten und zwei Cursor zu setzen. Das in der Hilfe erwähnte IR-Fenster bleibt mir verborgen. Auch das Starten der Makros hab ich noch nicht hingekriegt.
Beim Programmstart sind alle Macros im macro-Unterordner bereits geladen, aber falls man was ändert oder ein neues erzeugt kann man die so einfach neu laden.
IR-Fenster geht mit
:show IR
Ach, und das UI ist auf alles Nötige reduziert. Ich kann damit inzwischen extrem schnell arbeiten, weil ich nirgends groß rumklicken muss. Zum Beispiel kann ich die zuletzt gemessene Kurve einfach mit "p" (wie paste) als Overlay abspeichern. Im Gegensatz zu Arta bleibt dabei auch die Impulsantwort erhalten
Also bei mir unter macOS startet das Programm nicht. ActiveTCL ist installiert.
-----------------
iMacLE:FR $ tclsh fr.tcl
invalid command name "tk_messageBox"
while executing
"tk_messageBox -message $::errorInfo -icon error -type ok"
(file "/Users/larseickmeier/Downloads/FR/lib/env.tcl" line 23)
invoked from within
"source [file join [pwd] lib env.tcl]"
(file "fr.tcl" line 7)
------------------
Mal ein kleines Tutorial um Euch zu zeigen, was man alles für nette Sachen mit dem Programm anstellen kann. Ich brauche recht häufig Zielkurven, also habe ich mir entsprechende Funktionen gebastelt. Für das Verständnis des Programms ist es wichtig, dass ich nicht einfach einen Befehl "Zielkurve" geschrieben habe, sondern den in einzelne Primitive zerlegt, diese implementiert und über die Makro-Schnittstelle offen gelegt habe.
1) Programm starten
2) Messung starten (Taste "m". Befehl ":measure") oder alte Messung laden (Befehl ":l"). Hinweis: Befehle können einfach so, wie sie da stehen, eingebeben werden. Durch die Eingabe von ":" springt das Programm sofort in die Befehlszeile.
=> Messung.png
3) Das ist ein Mitteltöner mit einer fiesen Membranresonanz, ich möchte also möglichst tief und möglichst steil trennen. Damit der Hochtöner nicht allzu viel leisten muss (Servicefälle vermeiden!) trenne ich bei 2,5 kHz, 4. Ordnung ist mit akzeptablem Aufwand machbar. Zielpegel sind 80 dB.
Nach unten soll es dritter Ordnung sein, Trennung bei 500 Hz.
3.1) neue Dummy-Kurve erzeugen: :dirac
Im Hintergrund arbeitet das Programm immer mit Impulsantworten. Der Befehl ":dirac" erzeugt einen sogenannten Dirac-Impuls*, der für alle Werte außer t=0 0 ist. Dieser Impuls hat die aktuelle Abtastrate und die Länge des aktuell eingestellten Gates. Wichtig: alles, was mit normalen Messkurven geht, kann auch damit gemacht werden
=> dirac.png
3.2) Pegel anpassen
Die Kurve ist deutlich zu laut, sie muss skaliert werden. Der Pegel lässt sich mit zwei Arten bestimmen:
- über die Cursor: Kurve in der Liste rechts anwählen, Taste "1" drücken, Pegel ablesen
- oder den - für Macros - besseren Weg, über
:get #14 Magnitude 2500
Die #14 ist die Kurven-ID, Magnitude zeigt an, welchen Wert ich haben möchte, 2500 ist die Frequenz bei welcher der ausgelesen werden soll. Ergebnis ist ziemlich exakt 94 dB. Also müssen wir den Pegel um 14 dB verringern:
:expr #14 / {pow(10, 14/20.0)}
Hier gibt es drei Fallstricke zu beachten:
- "#14", "/" und "{pow..." sind alles Parameter für den :expr-Befehl, müssen deshalb durch Leerzeichen getrennt werden
- damit das Leerzeichen innerhalb von pow() nicht als Parametertrennung interpretiert wird, ist es in {} gesetzt
- der Bruch in 14/20.0 muss so geschrieben werden, weil 14/20 als Intergerdivision interpretiert würde, mit dem Ergebnis 0. Das "20.0" forciert Fließkommaberechnung. Alternativ geht auch double(14)/20, aber nicht double(14/20)
=> dirac_skaliert.png
4) Filtern
Jetzt kann man filtern
:filter #14 lowpass 2500 {Butterworth 4}
:filter #14 highpass 500 {Butterworth 3}
Butterworth ist die Charakteristik, 4 bzw 3 die Ordnung, der Rest dürfte klar sein
=> zielkurve.png
Jetzt ist das natürlich blöd, sowas immer von Hand eingeben zu müssen, deshalb habe ich ein Macro geschrieben, dass die Arbeit zum Teil abnimmt. Datei heißt "target.frm" und ist im Zip enthalten (Unterordner "macros"). Test:
:macro target lowpass 2500 Butterworth 4
(ja, die geschweiften Klammern fehlen mit Absicht)
* streng genommen ist es, weil zeitdiskret, ein Kronecker-Delta, damit kann aber außerhalb akademischer Kreise niemand was anfangen
Danke an Armin, der sich die Mühe gemacht hat: es scheint ein Problem der DLLs mit der 64 Bit Version von ActiveTcl zu geben. Im Moment müsst ihr die 32 Bit Version nehmen. Die läuft auch unter Win 64 Bit