Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
FR - Frequenzgänge von Lautsprechern messen
#1
Hallo zusammen,

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.

Was braucht ihr: eine Tcl-Distribution, ich empfehle diese hier: http://www.activestate.com/activetcl/downloads

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.

Probiert es einfach mal aus!

Gruß
Jochen


Angehängte Dateien
.zip   FR.zip (Größe: 618,76 KB / Downloads: 170)
Zitieren

#2
JFA schrieb:(kein Windows, kein linux, kein Mac)

Was dann? OS/2 Warp, beOS? Unix? :p
Zitieren

#3
rkv schrieb:Unix? :p

Bingo!

OpenBSD.

Falls Ihr einen Fehler findet, bitte unbedingt Screenshot machen und hier posten.
Zitieren

#4
Läuft bei mir unter Windows 10. UI ist für Asketen gemacht Big Grin
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.


Angehängte Dateien Thumbnail(s)
   
Zitieren

#5
Stimmt. Das fehlt in der Anleitung.

Macros ausführen:
:macro {exec} <Macro>

exec ist optional.

Macros laden:
:macro load <Macro>

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
Confusedhow 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
Zitieren

#6
Hatte Jochen mir auf dem Battle vorgeführt, Interessantes Teil
In Hamburg sagt man, Moin , LG Olaf_HH
Meine aktuellen Projekte auf IGDH:
Kondensatoren, gibt es klangliche Unterschiede ? - [B] M-L-W-R --Sherwood PM9800 --
[/B]Magnat MA900 Röhrentuning -- DynaLigth-MK2

Zitieren

#7
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)
------------------
Zitieren

#8
MacOS und Linux gehen noch nicht, weil die Libraries noch nicht dafür kompiliert sind. Theoretisch sollte es aber gehen, auch ohne Emulator.

Interessant ist allerdings, dass das Programm an der Stelle schon abbricht. Denn tk_messageBox ist eigentlich ein in Tcl/Tk eingebauter Befehl
Zitieren

#9
Sehr spannend,

ich werde mir das in einer ruhigen Minute mal zu Gemüte führen.
Danke dir dafür!
Zitieren

#10
Wollte eigentlich nur die verbesserte Anleitung posten, bin dabei aber noch über einen Fehler gestolpert, also hier eine aktualisierte Version.

Außerdem ein Download-Link zu den Daten, die ich beim Pappenbattle gezeigt habe: [FONT=&quot]https://we.tl/r7sgFXMq3i

[FONT=&quot]Sind knapp 50 M[FONT=&quot]B. Datensparsamkeit kann man dem Programm nicht vorwerfen Rolleyes[/FONT][/FONT]
[/FONT]


Angehängte Dateien
.zip   FR.zip (Größe: 620,58 KB / Downloads: 146)
Zitieren

#11
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 Rolleyes

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

5) Umbenennen und Färben
:rename #14 "Ziel_MT" (Alternativ: Kurve anwählen, F2 drücken)
:color #14 lightgreen (Alternativ: Kurve anwählen, "c" drücken)

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


Angehängte Dateien Thumbnail(s)
               
Zitieren

#12
Ein paar Bugfixes (und vermutlich ein paar Bugadds...)


Angehängte Dateien
.zip   FR.zip (Größe: 621,86 KB / Downloads: 151)
Zitieren

#13
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

Fehlermeldung: http://www.diy-hifi-forum.eu/forum/pictu...reid=29358

Weitere Informationen: http://stackoverflow.com/questions/16839...-activetcl
Zitieren



Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  TSP messen in Bochum AndreasL 0 4.281 02.10.2020, 12:17
Letzter Beitrag: AndreasL
  Dirac Live: Frequenzgänge übereinander legen paco de colonia 0 1.355 12.03.2020, 17:47
Letzter Beitrag: paco de colonia
  Lautsprecher - beim Messen auf den Rücken damit? ArLo62 10 7.920 02.12.2019, 18:33
Letzter Beitrag: Azrael
  messen mit HandyApp und Test-CD - Sinn oder Unsinn? dy1026u 41 32.944 31.07.2018, 16:04
Letzter Beitrag: Harman Hans
  Phase messen linear, minimal phasig oder was loafmeat 1 7.594 10.06.2018, 10:18
Letzter Beitrag: newmir
  Gut klingende USB-Soundkarte auch zum Messen unter Win7-64 gesucht not0815 18 11.791 22.12.2017, 11:56
Letzter Beitrag: Longwood
  Induktivitäten von 1-10H messen ohne LCR Meter Bizarre 12 6.984 17.02.2017, 21:27
Letzter Beitrag: Bizarre
  OT aus " Projektvorstellung: Menhir-L" Höreindrücke, messen und simulieren nailhead 101 55.871 11.12.2015, 08:54
Letzter Beitrag: pcmurx
  Messen mit Alpine KTX-100H MrFlorian 0 2.111 20.03.2015, 09:56
Letzter Beitrag: MrFlorian
  Open Baffle Bass im Wohnraum messen hoschibill 6 4.652 06.12.2012, 20:15
Letzter Beitrag: Gnom52

Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste

Deutsche Übersetzung: MyBB.de, Powered by MyBB, © 2002-2025 Melroy van den Berg.