Klirrfaktor messen - zu Fuß...
#1
Hallo,

im Sommer habe ich an anderer Stelle hier im Forum eine Themenfremde Diskussion rund um den Klirrfaktor und seine Messung angestoßen. Da ich Peters großartigen Thread nicht wieder mißbrauchen will, hier an dieser Stelle nun ein ein kleiner Fortschrittsbericht:

Hintergrund ist, dass ich gerne die üblichen Kenndaten von Magnetbändern ausmessen möchte, und dabei möglichst viele mit der Soundkarte erledigen möchste. Als bekennendem Linux-Nutzer ohne greifbaren Windows-Rechner steht mir auch der allseits beliebte Audiotester nicht zur Verfügung. Gleichzeitig will ich auch eine hohe Automatisierbarkeit hinbekommen, dass später nicht jede Messung in viel Handarbeit mündet. Deswegen versuche ich nun, die Messgrößen gut genug zu verstehen, um sie entsprechend nachbauen zu können. Mittel der Wahl ist dabei Python, ergänzt um den üblichen Stack aus numpy und SciPy.

Hier nun also der Klirrfaktor: Ich habe mich für die Variante entschieden, einen Bandpassfilter um den dritten Teilton zu legen und danach wieder dessen Effektivwert zu bestimmen. Bei einem Grundton von 1 kHz habe ich einen Durchlassbereich von 2900 bis 3100 Hz und einen Butterworth-Filter 3. Ordnung verwendet.

Damals hat Ulrich ein paar Audiobeispiele generiert, die den dort diskutierten Zahlenbeispielen folgen. Diese habe ich nun als Test verwendet, um zu sehen, ob ich auch den richtigen Klirr messen kann. Das geht mit folgendem Beispiel-Code:

Code:
# coding: utf-8

import numpy as np
from scipy.io import wavfile
from scipy.signal import butter, lfilter

def main(filename):
    fs, data = read_wav(filename)
    db_sig, db_h3, k3 = calc_k3(fs, data)
    print '{:22}: total {:2.1f}dB, h3 {:2.1f}dB, k3 {:5.2f}%'.format(
        filename, db_sig, db_h3, k3
    )

def read_wav(filename):
    fs, samples = wavfile.read(filename)
    return fs, samples2float(samples)

def samples2float(data):
    # divide by the largest number for this data type
    return 1. * data / np.iinfo(data.dtype).max

def calc_k3(fs, data):
    h3 = filter_h3(fs, data)
    return db(rms(data)), db(rms(h3)), 100. * rms(h3) / rms(data)

def filter_h3(fs, data, f1=2900, f2=3100):
    w1 = f1 / 0.5 / fs
    w2 = f2 / 0.5 / fs
    b, a = butter(N=3, Wn=[w1, w2], btype='band')
    return lfilter(b, a, data, axis=0)

def db(x):
    return 20 * np.log10(x)

def rms(x):
    return np.sqrt(np.sum(x**2, axis=0) / len(x))

if __name__ == '__main__':
    main('1k+3k75+25Summe.wav')
    main('1k+3klr97+3summe.wav')
    main('1k+3klr3ProzSumme.wav')

Eigentlich steckt die Arbeit nur im Hin- und herschieben von Samples und dem Ausgeben von Ergebnissen - die Filter selbst bringt SciPy schon mit (in form von scipy.signal.butter und scipy.signal.lfilter). Auch das Einlesen von wav-Files (wenn auch nicht ganz ohne zu meckern) macht scipy.io.wavfile. Ich hoffe, der Code ist einigermaßen verständlich - sonst erkläre ich auf Anfrage gerne noch die Details. Auf Ulrichs Beispiele angewendet, kommt folgendes raus:

Code:
1k+3k75+25Summe.wav   : total -5.1dB, h3 -15.1dB, k3 31.61%
1k+3klr97+3summe.wav  : total -3.3dB, h3 -33.5dB, k3  3.09%
1k+3klr3ProzSumme.wav : total -3.0dB, h3 -33.5dB, k3  3.00%

Dabei ist die erste Zahl der RMS des gesamten Signals, die zweite des gefilterten, und die letzte der Klirrfaktor. Die Werte entsprechen meiner Erwartung - so funktioniert es also Smile

Nebenbemerkung: Außerdem kommt noch eine Warnung raus: "WavFileWarning: chunk not understood" - das tritt auf, wenn das wav-File noch meta-Informationen oder andere nicht-Audio-Blocks enthält. Wenn man die Dateien mit einem Audioeditor davon befreit, verschwindet auch die Warnung. Das ist eine der Limitierungen von scipy.io.wavfile - die andere schlägt bei 24Bit-Files zu: Weil es keinen nativen Datentyp gibt, der 3 Byte groß ist, werden diese nicht unterstützt. Meine Abhilfe ist auch hier, sie per Audioeditor auf 32 oder 16 Bit zu konvertieren. Es gäbe auch noch andere Libraries, um Audiofiles zu lesen - das war mir aber bisher zu umständlich, da ich mit diesen Limitierungen ganz gut auskomme.

Wo soll das hinführen? Hier eine kleine Vorschau:

   

Solche Grafiken findet man in manchen Emtec- und RMG-Datenblättern, z.B. zum SM 468 oder SM 911. Sie zeigen den Anstieg des Klirrfaktors mit dem Ausgangspegel, und an den Schnittpunkten mit der 1% bzw. 3%-Linie kann man dann die Aussteuerungsgrenze MOL ablesen.

Diesen Plot hier habe ich halbmanuell erzeugt - besonders die Auswertung war noch ein "interaktiver Prototyp" in einer python-Shell, noch kein fertiges Programm. Das Prinzip: Audiodatei mit Sinus generieren, der auf der dB-Skala linear ansteigt, vom Rechner über Band wieder in den Rechner, und dann in kleinen Zeitscheiben jeweils die obige Logik laufen lassen. Gesamtdauer war hier 5 Sekunden, jedes Intervall 0.1 Sekunden lang. Hier könnte man sicher noch ein wenig nachjustieren - besonders im interessanten rechten Bereich ist die Steigung pro Bin doch schon steiler als wünschenswert. Vielleicht mach auch ein auf linearer Skala ansteigender Ton mehr Sinn, um dort mehr Auflösung zu bekommen.

Ich traue dem Zustand des Bandgeräts und seiner Einmessung nicht vollständig, deswegen verrate ich die weiteren Details nur unter der Auflage, dass Ihr nicht zuviel in die Ergebnisse hineininterpretiert, was nicht drinsteckt: ASC AS 4502, Onboard-Soundkarte meines Rechners, 96 kHz Sampling-Rate, DP 26 (schwarzer BASF-Karton, mit Rückseitenbeschichtung), 9.5 cm/s, 0dB = ca. 257 nWb/m, Messfrequenz 315 Hz.

So, Kommentare und Fragen willkommen!

Viele Grüße
Andreas
Zitieren
#2
Hallo Andreas,

es ist sinnvoller, eine lineare Amplitudentreppe zu benutzen, als eine in dB. Bei einer Kennlinie mit rein kubischer Verzerrung steigt der Klirrfaktor quadratsch mit dem Pegel an. Die Amplitudenstufen müßten also eigentlich zu hohen Werten kleiner werden statt größer (wie bei dB), damit man eine lineare Klirrgradtreppe bekommt.
Wenn du das ganze nur für den eigenen Bedarf machen willst, brauchst du dich auch nicht an irgendeine Norm halten, und könntest beschließen, dich vereinfachend auf k_tot statt k3 zu beziehen. Dann kann die Filterung entfallen.

Die Struktur von WAV-Files ist gut dokumentiert. Mit der Info kann man selbst Lese-Routinen schreiben, die die Header auswerten, Meta- Info-Blöcke überspringen und die Rohdaten einlesen. Dann kannst du auch 24Bit (in 3 Byte) einlesen und als 32 Bit integer oder float ablegen.
Allerdings sind 24 Bit Auflösung für diese Anwendung nicht nötig.

Hast du eigentlich eine AS4502 oder eine AS5000 oder beide ?

MfG Kai
Zitieren
#3
Hallo Kai,

kaimex,'index.php?page=Thread&postID=196178#post196178 schrieb:es ist sinnvoller, eine lineare Amplitudentreppe zu benutzen, als eine in dB. Bei einer Kennlinie mit rein kubischer Verzerrung steigt der Klirrfaktor quadratsch mit dem Pegel an. Die Amplitudenstufen müßten also eigentlich zu hohen Werten kleiner werden statt größer (wie bei dB), damit man eine lineare Klirrgradtreppe bekommt.

ja, da hast Du wohl recht. So sehen die beiden Signale (also das gesamte Signal vom Band vor und nach obigem Filter) auf der dB-Skala über der Zeit aus:

   

Man sieht deutlich, wie der Anfang im Rauschen versumpft. Der Klirranteil steigt auch auf einer Gerade an - allerdings mit anderer Steigung, was auf der anderen Skala wiederum exponentiell ist. Es ist ja nicht so schwierig, das ursprüngliche Signal entweder linear oder sogar logarithmisch ansteigen zu lassen - probiere ich beim nächsten Versuch dann aus.

kaimex,'index.php?page=Thread&postID=196178#post196178 schrieb:und könntest beschließen, dich vereinfachend auf k_tot statt k3 zu beziehen. Dann kann die Filterung entfallen.

Das verstehe ich wiederum nicht - auch wenn ich k_tot messen will, muss ich doch irgendwie den Grundton loswerden - sprich: Filtern?

kaimex,'index.php?page=Thread&postID=196178#post196178 schrieb:Wenn du das ganze nur für den eigenen Bedarf machen willst, brauchst du dich auch nicht an irgendeine Norm halten

Nein, brauchen ist sowieso irgendwie der falsche Begriff Wink

Mir ist klar, dass ich mit meinen Messmitteln niemals normegerechte Messungen werde machen können: Keine Referenz-Leerbandteile, keine Norm-Köpfe, etc. Trotzdem will ich nicht ohne Not irgendwas nach "Hausnorm" messen, sondern in der Nähe der ausgetretenen Pfade bleiben. Im Moment versuche ich aber noch, dem "König der Datenblätter", also EMTEC/BASF, nahe zu bleiben. Dort wird aber seltsamerweise die sonst anders belegte Abkürzung "THD" mit "Third Harmonic Distortion" verwendet - das habe ich nirgends sonst so gefunden...

kaimex,'index.php?page=Thread&postID=196178#post196178 schrieb:Die Struktur von WAV-Files ist gut dokumentiert. Mit der Info kann man selbst Lese-Routinen schreiben,

Das wäre im Notfall auch möglich - aber vorher würde ich doch auf eine Library umsteigen, die das schon kann - spart Programmierarbeit und schafft mehr Zeit fürs Tonband...

kaimex,'index.php?page=Thread&postID=196178#post196178 schrieb:Hast du eigentlich eine AS4502 oder eine AS5000 oder beide ?

Meine Gattin wäre froh, wenn es nur zwei wären... "Kleine ASC" sind es zur Zeit drei:

1. klassische AS5004 mit DIN-Buchsen und Viertelspurkopfträger
2. AS4502 mit Chinch- und Klinkenbuchsen, aber noch weißen Tasten und mechanischem Zählwerk (AS4502 steht auf der Abdeckung des Kopfträgers, AS5000T auf dem Gehäuse selbst)
3. AS5002 mit LED-Zählwerk, neuer Gehäuseform und schwarzen Tasten

Hier (und eigentlich sonst auch immer) habe ich die zweite verwendet, weil sie in betriebsbereitem Zustand, angeschlossen und gut zugänglich ist. Die dritte ist noch nicht wiedererweckt, und die erste kommt gelegentlich für Viertelspurzwecke zum Einsatz. Ach ja, und eine vierte (wie die zweite, aber Viertelspur) ist zu meinem Bruder nach Schweden umgezogen.

Viele Grüße
Andreas
Zitieren
#4
andreas42,'index.php?page=Thread&postID=196198#post196198 schrieb:Im Moment versuche ich aber noch, dem "König der Datenblätter", also EMTEC/BASF, nahe zu bleiben. Dort wird aber seltsamerweise die sonst anders belegte Abkürzung "THD" mit "Third Harmonic Distortion" verwendet - das habe ich nirgends sonst so gefunden...
Bei Magnetbandherstellern kenne ich es nicht anders, dass ausschließlich k3 bestimmt wird (höhere Harmonische sind vernachlässigbar gering).
Die Messwerte werden wahlweise mit „Klirrfaktor k3“, „HDL3“ (Scotch), „THD“ (Ampex/Quantegy, BASF) oder „Dk3“ (Orwo) bezeichnet und in % oder dB angegeben.

Die nächsten Fortschritte bei deiner automatisierten Ermittlung von Magnetband-Arbeitspunktkurven werde ich interessiert verfolgen.

Grüße, Peter
Grüße
Peter


_____________________

Ich bin, wie ich bin.
Die einen kennen mich, die anderen können mich.
(Konrad Adenauer)
Zitieren
#5
Hallo Andreas,

die grüne Kurve steigt mit der dreifachen Steigung der roten an.
Was soll sie auch anderes machen ?
Kubische Verzerrung heißt, ein Signal x(t) wird zu x(t)+a* x^3(t). Der zweite Term ist die Verzerrung. In der logarithmischen Darstellung bzw. in dB wird aus "hoch 3" die 3-fache Steigung. Wenn du die Verzerrung durchs Original teilst: a x^3 /x wird daraus der Klirrgrad a x^2, der also quadratisch mit dem Signal ansteigt.
THD st völlig normal in der angelsächsischen Literatur für Verzerrung dritter Ordnung. Die Bedeutung von Abkürzungen sind immer Kontext-abhängig. MPI kann z.B. für Max-Plack-Institut oder "Magnetic Particle Imaging" stehen. Ein Schmunzel-Beispiel ist der von Herrn deVries' Sohn in Herrman Hoffmann's "Kleiner Dachkammermusik" geäußerte Berufswunsch : er würde am liebsten BH bei der BB werden.

Bei der Äußerung über entfallende Filterung hatte ich im Hinterkopf die Vorstellung, daß du auch noch Analyse per FFT betreibst. Dann brauchst du dir nur den Pegel beim dreifachen Index bezüglich der Grundfrequenz rauspicken. Voraussetzung ist dabei, daß Anregung und Analyse mit gleicher Sample-Frequenz betrieben werden, die Puffer eine Länge von ganzzahligen Vielfachen der FFT-Blockgröße haben und in den FFT-Block eine ganze Anzahl von Perioden der Anregungsfrequenz hineinpassen. Dann liegt die genau in einem FFT-Bin, die Harmonischen ebenso. Es gibt keinerlei Leakage-Effekt, also auch kein Problem mit der Amplitudenbestimmung.
Wenn du stattdessen lieber mit Filtern arbeiten willst, wäre mal wieder der Goertzel-Algorithmus oder inverse Notchfilter empfehlenswert. Damit bekommst du bei geringerem Aufwand (Filterlänge) eine kleinere Rauschbandbreite als mit einem Bessel- oder Butterworth-Bandpass.

Mit dem unnötigen Normbezug meinte ich auch, es ist schließlich persönliche Geschmacksache, ob man sich entscheidet, maximal 3 % k3 oder 3% k_total zu ertragen.

MfG Kai
PS: Ein lesenswerter Link zur Ambivalence von THD als "Total harmonic distortion" oder als "Third harmonic distortion":
http://www.sweetwater.com/insync/third-h...istortion/
Zitieren
#6
Selbstkritik:
Von dem, was ich oben im zweiten Absatz behauptet habe, war leider nur die Hälfte richtig.
Die exakte Passung von Grundwelle und Harmonischen in FFT-Bins hat man nur vor Band.
Hinter Band muß man mit Geschwindigkeitsabweichungen und -schwankungen rechnen, die die Passung beinträchtigen.
Man könnte sich aber damit helfen, daß man über die Datenblock-Größe bzw die FFT-Länge die Breite der FFT-Bins so groß macht, daß wieder alle Frequenzen von Belang genau in ihre "Schubfächer" passen.
Beispiel: Bei 48 kHz Sample-Frequenz und einer FFT-Länge von 4096 Samples hat jeder Bin eine Breite von 11,72 Hz (ohne Window-Funktion). Dann sollte die Geschwindigkeitsdifferenz zwischen Aufnahme und Wiedergabe bei 1 kHz Messfrequenz kleiner als 1,2 % sein.
Reduziert man die FFT-Länge auf 1024 Samples, kann man sich die 4-fache Toleranz erlauben (und in der gleichen Zeit über 4 Blöcke mitteln). Für Hinterband-Messungen wäre wegen der Geschwindigkeitsschwankungen auch eine Windowfunktion von Vorteil, um Inkonsistenzen des Phasenanschnitts an den Blockgrenzen zu minimieren, die andernfalls zu Leakage ("Verschmierung" der Spektrallinien auf ihre Nachbarschaft) führen würden.

MfG Kai
Zitieren
#7
Hallo Peter, hallo Kai,

Peter Ruhrberg,'index.php?page=Thread&postID=196199#post196199 schrieb:Bei Magnetbandherstellern kenne ich es nicht anders, dass ausschließlich k3 bestimmt wird (höhere Harmonische sind vernachlässigbar gering).

an der Beschränkung auf den dritten Teilton wollte ich mich garnicht stören - einzig, die Abkürzung THD dafür kannte ich in der Form bisher eben nur von EMTEC, was sonst überall "Total" statt "Third" meint. Namen sind Schall und Rauch - und in der Tat immer Kontextbehaftet...

kaimex,'index.php?page=Thread&postID=196203#post196203 schrieb:er würde am liebsten BH bei der BB werden

Berufsheizer bei der Bundesbahn Big Grin ?

kaimex,'index.php?page=Thread&postID=196203#post196203 schrieb:die grüne Kurve steigt mit der dreifachen Steigung der roten an.
Was soll sie auch anderes machen ?
Kubische Verzerrung heißt, ein Signal x(t) wird zu x(t)+a* x^3(t). Der zweite Term ist die Verzerrung. In der logarithmischen Darstellung bzw. in dB wird aus "hoch 3" die 3-fache Steigung. Wenn du die Verzerrung durchs Original teilst: a x^3 /x wird daraus der Klirrgrad a x^2, der also quadratisch mit dem Signal ansteigt.

Darüber musste ich erstmal eine Weile nachdenken - und in der Formelsammlung nachschlagen, wie eigentlich sin³(x) zu einem Anteil mit sin(3x) führt. Danke für den Denkanstoß!

Dann dachte ich nämlich: Wenn die Steigung der "Klirrgeraden" immer gleich die dreifache Steigung der Pegelgeraden ist, bräuchte man ja nur einen einzigen Messpunkt, um sie vollständig zu bestimmen. Praktisch hieße das, es gäbe einen festen Zusammenhang zwischen Klirrfaktor bei Bezugspegel und Aussteuerbarkeit! Das sähe dann so aus: Aussteuerbarkeit = (Klirrgrenze in dB - Klirrlevel bei Bezugspegel in dB) durch zwei.

   

Ein paar Zahlen aus den greifbaren Datenblättern eingesetzt zeigt leider Diskrepanzen. Beispiel LPR 35 bei 19 NAB:

Code:
(-30.5) - (-48.5)
----------------- = 9.0
        2

Als MOL 1 kHz / 3% sind aber 7.5 dB über Bezugspegel angegeben. In den meisten Fällen liegt der MOL laut Datenblatt niedriger als nach dieser Formel berechnet - manchmal aber auch dicht dran (SM 911 bei 19) oder genau drauf (SM 900 bei 38 ). Ich nehme mal an, die darunterliegende Funktion ist in Wahrheit doch komplizierter als A * x(t) + B * x³(t).

Auch in meinem Beispiel hier habe ich die Steigung beider Geraden mittels Fit verglichen: Das Verhältnis ist 3.17 (den Bereich unter der 2 natürlich ausgeschlossen).

kaimex,'index.php?page=Thread&postID=196203#post196203 schrieb:Bei der Äußerung über entfallende Filterung hatte ich im Hinterkopf die Vorstellung, daß du auch noch Analyse per FFT betreibst.

Dagegen habe ich mich in diesem Fall entschieden, weil es mir so kompliziert erschien, und etliche Fehlerquellen birgt, die ich auf dem einfachen Filter-Weg nicht habe. Außerdem ist dieser ja dem klassischen Klirranalysator prinzipiell ähnlich, nur eben mit digitalem Filter, und das Millivoltmeter danach (meine RMS-Funktion) ist wieder gleich.

kaimex,'index.php?page=Thread&postID=196203#post196203 schrieb:Wenn du stattdessen lieber mit Filtern arbeiten willst, wäre mal wieder der Goertzel-Algorithmus oder inverse Notchfilter empfehlenswert. Damit bekommst du bei geringerem Aufwand (Filterlänge) eine kleinere Rauschbandbreite als mit einem Bessel- oder Butterworth-Bandpass.

Hm, den Butterworth-Bandpass habe ich genommen, weil er mir als erster scheinbar passender Filter in scipy.signal über den Weg gelaufen ist. Ist er gut genug? Würde ich nach den erfolgreichen Testmessungen an den synthetischen Signalen zumindest mal vermuten. Was könnte ich durch mehr Aufwand (=mehr Code und Zeiteinsatz) gewinnen? (Ernsthafte Frage, soll keine Polemik sein!)

Beim Goertzel-Algorithmus ging es meiner Erinnerung nach vor allem um effizientes Ausführen, auch bei schwacher Rechenleistung - was in diesem Kontext egal ist, ich bin ja nicht in einer Echtzeit- oder Embedded-Umgebung, sondern auf einem gelangweilten Desktop-Rechner. Ist eine geringere Filterlänge erstrebenswert, wenn es auf einen Faktor 100 bei der Asuführungszeit nicht ankommt?

Wie von Dir im zur FFT beschrieben:

kaimex,'index.php?page=Thread&postID=196210#post196210 schrieb:Die exakte Passung von Grundwelle und Harmonischen in FFT-Bins hat man nur vor Band.
Hinter Band muß man mit Geschwindigkeitsabweichungen und -schwankungen rechnen, die die Passung beinträchtigen.

Warum sollte ich ein noch schmaleres Durchlassband anstreben? Bekomme ich dann nicht potentiell Probleme, wenn die Bandgeschwindigkeit mal nicht ganz konstant ist?

Einen inversen Notchfilter gibt es hier, versuchen kann ich es ja mal: http://scipy.github.io/devdocs/generated...rpeak.html

Peter Ruhrberg,'index.php?page=Thread&postID=196199#post196199 schrieb:Die nächsten Fortschritte bei deiner automatisierten Ermittlung von Magnetband-Arbeitspunktkurven werde ich interessiert verfolgen.

Ich auch Wink - ist wie immer vor allem eine Zeitfrage. Ich halte Euch auf dem laufenden.

Viele Grüße
Andreas
Zitieren
#8
BB war richtig
Bei BH würden anständige Leute an "Buchhalter" denken.
Zu der Zeit des Sketches war allerdings BB ein Kürzel für eine französische Filmschauspielerin mit Sexappeal, in welchem Kontext die "Buchhalter" - Interpretation natürlich keine Chance in den Hirnen weniger anständiger Kerle hat.

Die reale Welt läßt sich mehr Schweinereien einfallen, als ein einfaches kubisches Verzerrungsmodell, insbesondere stimmt diese Approximation nicht, je größer die Verzerrungen werden. Daher kommen dann die Abweichungen von der einfachen Approximation. Am oberen Ende muß schließlich jede Kennlinie in starker Kompression enden, und das ist nicht von kubischer Natur. Bei kleineren Pegeln dominieren quadratische und kubische Verzerrungen, aber leider meist nicht mit konstanten Koeffizienten.
In der HF- Technik ist aber tatsächlich üblich, Verstärker mit IP3 und IP2 zu charakterisieren. Damit sind gemeint die Intercept-Punkte dritter bzw zweiter Ordnung, das sind die Schnittpunkte der nach oben extrapolierten Geraden (in logarithmischer Darstellung) von k3 und k2 mit dem Grundwellenpegel. Verkaufsförderer nennen meist die Intercept-Punkte am Ausgang, der Meßtechniker interessiert sich für die Intercept-Punkte am Eingang.

Egal, ob du mit FFT oder digitalem Filter arbeitest, bei Wiedergabe vom Band hast du ein potentielles Geschwindigkeitsproblem. Insofern darf das Filter nicht zu schmal sein. Deshalb ist da ein inverses Notchfilter sicher nicht der Weisheit letzter Schluß. Soweit ich mich an Beschreibungen des Goertzel_Algorithmus erinnere, realisiert der praktisch die Bestimmung eines einzelnen FFT-Bins mit Methoden eines digitalen IIR-Filters suf einer endlichen Sample-Anzahl. Sollte sich also bezüglich Bandbreite genauso verhalten wie ein FFT-Bin.
Butterworth und Besselfilter sind unter den üblichen Filtertypen eher die "Schlappis" bezüglich Formfaktor, also Flankensteilheit in Relation zur Bandbreite. Der Rechenaufwand hängt auch davon ab, ob sie als IIR oder FIR-Filter realisiert werden.

Schmalbandigere Fillter sind nützlich, wenn man allerlei Stör-Untergrund hat, der sich Bandbreiten-proprtional verfälschend auswirkt.
Wenn man sich nur für das obere Kennlinienende interessiert, ist kein besonderer Aufwand erforderlich. Wenn man zu Dokuzwecken den k3 bis unter die "Grasnarbe" verfolgen will, schon eher.

MfG Kai
Zitieren
#9
Hallo Kai,

kaimex,'index.php?page=Thread&postID=196243#post196243 schrieb:Die reale Welt läßt sich mehr Schweinereien einfallen, als ein einfaches kubisches Verzerrungsmodell, insbesondere stimmt diese Approximation nicht, je größer die Verzerrungen werden.

hm, eigentlich wie immer - wäre ja auch zu einfach gewesen.

kaimex,'index.php?page=Thread&postID=196243#post196243 schrieb:Egal, ob du mit FFT oder digitalem Filter arbeitest, bei Wiedergabe vom Band hast du ein potentielles Geschwindigkeitsproblem. Insofern darf das Filter nicht zu schmal sein.

Das nahezu vollständige "Fehlen" von Tonhöhenschwankungen finde ich - als Organist besonders - eine der größten Errungenschaften des Digitalzeitalters. Das letzte Überbleibsel sind leicht auseinanderlaufende Takte, die man dann mit WordClock-Verkabelungen bekämpfen muss. In der Praxis stellt sich mir auch dieses Problem nicht, solange ich die 8 Kanäle meines Wandlers nicht überschreite.

kaimex,'index.php?page=Thread&postID=196243#post196243 schrieb:Butterworth und Besselfilter sind unter den üblichen Filtertypen eher die "Schlappis" bezüglich Formfaktor, also Flankensteilheit in Relation zur Bandbreite.

Das glaube ich gerne - und freue mich dennoch, dass es mir hier ausreicht. Und:

kaimex,'index.php?page=Thread&postID=196243#post196243 schrieb:Wenn man sich nur für das obere Kennlinienende interessiert, ist kein besonderer Aufwand erforderlich.

Ja, in diesem Bereich bewege ich mich, wenn ich nach 3% Klirr als Aussteuerungsgrenze suche. Damit lasse ich vorerst weitere Versuche mit anderen Filtern oder FFT-Messungen, und gehe bei der Automatisierung der Messung voran. Ein paar Fortschritte habe ich dort gemacht - aber davon berichte ich heute nicht mehr, sondern eher am Wochenende.

Danke für Deine Beiträge!

Viele Grüße
Andreas
Zitieren
#10
Zur Illustration des Verlaufs der Stärke von Verzerrungen als Funktion des Pegels eines Sinus-förmigen Eingangssignals habe ich das mal für drei typische Kennlinien berechnet. Hier die drei betrachteten Kennlinien:
   

Die erste (tanh) findet man näherungsweise bei einem Transistor-Differenzverstärker mit konstanter Summe der beiden Emitterströme (ohne Gegenkopplung). Die modifizierte arctan-Funktion verläuft noch "sanfter" im Kompressionsbereich.
Die dritte Kennlinie hat zB. ein ADC oder Hard-Limiter.

Hier die Pegel von Grundwelle und den ersten 3 ungeraden Oberwellen im Ausgangssignal
zunächst für die tanh-Funktion, links die Absolut-Pegel, rechts relativ zur Grundwelle:
       

Die Eingangspegel wurden zwischen 0,2 <= x <= 2 variiert.

Hier die Ergebnisse für den Hard-Limiter bzw ADC:
       

Wenn das Eingangssignal einen Gleichspannungs-Offset hat, treten auch gerade Harmonische auf.
Hier für einen Offset von 0,2 die Ergebnisse für die tanh-Funktion, jetzt zusätzlich mit der 2ten Harmonischen:
       

MfG Kai
Zitieren
#11
Hallo Andreas,

um mal etwas zu rechnen, was mehr mit deinem Vorhaben zu tun hat, habe ich versucht, ein numerisches Modell des Aufnahmevorganges auf Magnetband zu erstellen. Die Ergebnisse sind nicht ganz kompatibel mit meinen Erwartungen. Ich weiß nicht, ob es an mangelnder Realitätsnähe des Modells liegt, oder an etwas zu blau-äugigen Vorstellungen. Deshalb lade ich dazu ein, es kritisch zu betrachten und, soweit möglich/vorhanden, durch Daten aus der realen Welt zu seiner Verbesserung beizutragen.
Das Modell geht davon aus, daß beim HF-Bias-Verfahren die Übertragung der Analog-Signale auf das Band über die Remanenz-Kennlinie des Bandes erfolgt. Das habe ich der Beschreibung dem Buch: Friedrich Engel, "Schallspeicherung auf Magnetband", AGFA-GEVAERT, 1975, entnommen.
Bänder werden typisch mit vier magnetischen Daten charakterisiert: Koerzitiv-Feldstärke Hc [A/m], Sättigungs-Remanenz Br [T], Relative Remanenz (das Verhältnis von Br zur Sättigungs-Flußdichte/Induktion Bs [T] und die remanente Flußdichte. Für die Verwendung in SPICE Programmen gibt es ein Hysterese-Modell von J.Chan, das mit den drei Parametern Hc, Br und Bs auskommt und gute Dienste bei der Analyse von Schaltungen mit Leistungs-Transformatoren geleistet haben soll.
Aus mehren unterschiedlich alten Datenblättern von BASF DP26xx Band habe ich folgende Daten komponiert:
Hc = 26 kA/m, Br = 0,145 T, Bs = 0,193 T
Aus dem Modell ergibt sich auch, wie man aus der Hysterese-Kurve zur Remanenz-Kennlinie kommt. Beide werden in den folgenden Bildern illustriert:
       

In blau die magnetische Induktion B(H), gestrichelt die "Neukurve",
in rot die entsprechenden Kurven für die Magnetisierung J(H) (B enthält zusätzlich den Luft-Term µ0*H (gepunktete Linie)).
Fett in schwarz die Remanenz-Kurve. Sie gibt das remanente Br(H) an für Hysterese-Schleifen zwischen [-H,+H].
Das nächste Bild zeigt den positiven Ast der Remanenz-Kurve im Detail. Der gekrümmte Abschnitt für Felder |H|<25 kA/m ist für die starken Verzerrungen ohne HF-Bias verantwortlich.
Diese Kennlinie habe ich in skalierter Form in das Analyse-Programm gesteckt, das ich schon im vorigen Beitrag zur Berechnung von harmonischen Verzerrungen benutzt hatte. Ein sinusförmiges Testsignal wird zusammen mit einem additiven HF-Bias auf diese Kennlinie gegeben und dann analysiert.
Dies Bild zeigt die umskalierte Kennlinie, zum Vergleich y=x und rot gestrichelt den bei den folgenden Ergebnissen verwendeten HF-Pegel (Spitzenwerte).
   

Dieses Bild zeigt dafür neben dem Ideal y=x (blau) den Verlauf der Grundwelle als Funktion des Eingangspegels in grün, in rot die 3te Harmonische, in türkis die 5te, in magenta die 7te Oberwelle. Die integrale Linearität ist sichtlich "suboptimal" (aber eine riesige Verbesserung gegenüber der Remanenz-Kurve), oberhalb Pegel x=1 setzt starke Kompression ein. Allerdings ist bei x=0,9 noch k3<1%.
   

Um die Klirrfaktoren näherungsweise zu erhalten, muß man die ki natürlich noch durch den Pegel der Grundwelle dividieren. das ist im nächsten Bild durchgeführt:
   

Bemerkenswert ist, daß trotz k3<1% bei x=0,9 "kritische" 3% bei x=0,5 und sogar nochmal bei x=0,1 auftreten, also ca. 20 dB unter einer Aussteuerungsgrenze bei 0,9<x_max<1. Das hat mich überrascht, weil es anders ist als bei Verstärkern (ohne Übernahmeverzerrungen), bei denen die Verzerrungen idR mit abnehmenden Pegel monoton kleiner werden. Da frag ich mich, ob das Realitäts-konform ist.
Dabei ist mir außerdem aufgestoßen, daß die Tonband-Datenblätter garnichts darüber aussagen, wie die Klirrfaktoren bei kleineren Pegeln sind. Sie werden anscheinend nur für den Bezugspegel angegeben. Das wäre bei geeigneter Skalierung so, als würde ich nur den Klirrfaktor bei x=0,9 angeben, aber nicht die größeren 6 dB darunter.

Wenn ich den HF-Bias geringfügig auf 0,42 erhöhe, wird die integrale Linearität etwas besser, aber k3 steigt bei x=0,5 auf 4%.
       

Höchste Empfindlichkeit bei niedrigen Pegeln erzielt man, wenn man die Spitzen des HF-Bias in die steilsten Punkte der Remanenz-Kennlinie legt. Das ist hier bei x = 0,5 der Fall:
   

Die integrale Linearität hat aber stark gelitten und k3 steigt auf 8% bei x = 0,5 und 3,5 % bei x = 1.
       

Kann jemand den Realitätsbezug dieser Simulation beurteilen ?
Verbesserungsvorschläge und reale Daten sind äußerst willkommen.
Ich hoffe, die Darstellung vermittelt zumindest einen kleinen Einblick in den offenbar schmalen Grat vorteilhafter HF-Bias-Einstellung.

MfG Kai
Zitieren
#12
Hallo Kai,

den Wunsch, einige einfache Grundlagen in ein Modell zu stecken, zu simulieren und dann die Ergebnisse mit real gemessenen Bandeigenschaften in Bezug zu setzen, hege ich schon länger im Herzen - ein Erfolg hier wäre wäre quasi die Bestätigung, die Theorie so weit "im Griff" zu haben. Daher fasziniert mich Deine Simulation!

Ich habe sie noch nicht im Detail nachvollzogen und werde es heute Abend auch nicht mehr schaffen - deshalb nur in aller Kürze: Das von Dir erwähnte alte Testament (also "Schallspeicherung auf Magnetband") beschreibt (aus der Erinnerung, ich muss mein Exemplar erst suchen gehen) dass die Remanenzkurven-Theorie zwar schön und verständlich ist, aber wesentliche Eigenschaften der Hochfrequenz-Vormagnetisierung nicht erklären kann - sozusagen wie das Bohrsche Atommodell...

Dies leistet erst das Preisach-Modell: Das Band wird als statistisches Ensemble von elementaren Magneten mit rechteckiger Hystereseschleife und einer Verteilung von Vorspannungen beschrieben. Jeder Elementarmagnet kippt bei einer unterschiedlichen Feldstärke. Die HF-Vormagnetisierung kann man sich dann als "Wischer" in einer Ebene (deren Achsen mir gerade wieder entfallen sind) vorstellen, der dann Flächen zurücklässt, die dem Nutzsignal entsprechen.

Dieser Prozess eignet sich eigentlich ganz gut dafür, ihn numerisch zu simulieren. Es hat mich zwar schon in den Fingern gejuckt, aber bisher konnte ich mich nicht aufraffen, weil ich befürchte, dass über die Eingangsgrößen (Form und Parameter der Verteilung der Einzelbezirke) garkeine Daten über reelle Bänder zugänglich sind, die eine Vergleichbarkeit von Simulation und Messung erhoffen lassen. Mein Physiker-Traum wäre trotzdem: Modell als Simulation schreiben, ein paar Bandparameter reinstecken, und die Kurven des Datenblatts vorhersagen.

Ich muss mich in einer stillen Stunde (oder zwei davon) nochmal durch die betreffenden Kapitel lesen, um sicher argumentieren zu können, ob oder warum Deine Remanenzkurvensimulation funktionieren sollte, oder eben auch nicht. Gefühlt würde ich hier ansetzen.

Viele Grüße
Andreas
Zitieren
#13
Das ist eine außerordentlich interessante Diskussion. Den Wunsch nach der Vorhersagbarkeit habe ich auch schon länger, auch wenn ich mich eher an effektive Modelle getraut hätte als an solche Grundsatzüberlegungen Smile Aber sowas ist natürlich viel interessanter.

Kai, könntest du nochmal genauer darlegen, was der dritte deiner Graphen darstellt? Wenn ich es richtig verstehe, ist das einfach Br(H(t)) mit H(t) = sin(ωt) + sin(Ωt) für ein Signal der Frequenz ω plus Vormagnetisierung mit Frequenz Ω ≫ ω. Dann würde ich jedenfalls verstehen, warum du so starke Verzerrungen erhältst: du vernachlässigst, daß die magnetische Anregung durch den Aufnahmekopf nicht nur punktuell wirkt. D.h., um Br(x₀) für eine Bandposition x₀ zu bestimmen, müßtest du eigentlich über H(ct - x₀,t) dt integrieren, wobei c die Bandgeschwindigkeit und H(Δx,t) die effektive Magnetfeldstärke zur Zeit t im Abstand Δx vom Aufnahmekopfspalt ist.

Wenn ich Andreas' Ausführung zum (mir bisher nicht bekannten) Preisach-Modell richtig verstehe, wird genau das durch die Faltung (das "Wischen") des Feldstärkenprofils mit der durch Elementarmagneten modellierten Bandmagnetisierung beschrieben.
Zitieren
#14
Moin moin,

danke für eure Kommentare.
Ich bin selbst erst dabei, mich in die Problematik einzulesen. Dies war mein erster Versuch einer Modellrechnung. Dabei wollte ich mal sehen, ob schon bei einem einfachen rein statischen Nichtlinearitätsmodell zumindest qualitativ Phänomene auftreten, wie man sie auch bei der realen Aufnahmetechnik findet.
Zuvor hatte ich im Buch von Ernst Altrichter, "Das Magnetband", 1958, den Abschnitt 2.144 ab Seite 91 "Wechsefeld-Vormagnetisierung (Hochfrequenz-Vormagnetisierung)" gelesen (wie meist allerdings nur "fragmentarisch"). Er geht dort mit dem Ansatz H=H0 sin(w_hf t) + h sin(w_nf t) (ich hab hier leider keine schönen Omegas) in ein analytisches Remanenz-Kurven-Modell Br(H)=a H^3 - b H^5, das aber allenfalls für kleinere und mittlere H bis zum Maximum Ähnlichkeit mit einer realen (statischen) Br-Kurve hat und jenseits davon ungültig wird. Dafür rechnet er analytisch den Pegel von Grundwelle bei w_nf und 3ter Oberwelle bei 3 w_nf aus. Beim Nachrechnen kam mein Computer-Algebra Programm auf etwas andere Ausdrücke und selbst seine eigenen hat er in einem Fall noch falsch aufgelöst. Und wie durch ein Wunder sind auf einmal die Abhängigkeiten vom Signalpegel h verschwunden.
Den weiteren Text hab ich dann "ich"noriert und erst heute morgen entdeckt, daß er auf S.99 nochmal 4 Gründe aufführt, weshalb ein statisches Modell nicht zum Erfolg führen kann. Dort zeigt er auch effektive Remanenzkurven, die erheblich von der statischen abweichen. Vielleicht ist darin noch Verbesserungspotential. Da muß ich wohl nochmal nachlesen.
Da hatte ich erstmal beschlossen, den analytischen Weg aufzugeben und stattdessen auf numerischem Weg auf Basis der statischen Remanenzkurve mit besserem Bezug zu einem realen Band Ergebnisse zu produzieren.

@Joseph: Ich nehme an, deine Frage bezieht sich nicht auf Bild 3 sondern Bild 4 meines vorigen Beitrages. Darin steckt tatsächlich der gleiche Feldansatz wie bei Altrichter für H(t). Darauf wird dann aber die sich aus dem J.Chan-Hysterese-Modell ergebende Br(H)-Kurve angewandt. Die Bilder zeigen die Fourier-Komponenten des Ausgangssignales, erst als Absolut-Pegel, im jeweils zweiten Bild relativ zur Grundwelle (deshalb ist die grüne Kurve nur noch ein horizontaler Strich bei y=1).

Mit dem Preisach-Modell habe ich mich auch noch nicht beschäftigt. Ich möchte mich auch nicht in einer mikroskopischen Theorie verlieren. Meine Hoffnung ist, das sich ein "effektives" Modell (im Sinne einer "effektiven" Theorie) auf Basis des Hysterese-Modells finden läßt, das zu einer brauchbaren Beschreibung führt.

@Joseph: Zu deinem Verweis auf die nicht punktuelle Wirkung des Aufnahme-Spaltes geht mir folgendes durch den Kopf: Man liest, daß sich der Aufnahmevorgang an & hinter der Hinterkante des A-Kopfes abspielt. Ich kann mich nicht an Angaben über die Breite dieser Zone erinnern. Wenn ich mal mutmaße, daß es sich um Längen von 1-2 Spaltbreiten handelt, über die dann der Effekt auch noch ?exponentiell? abklingt, dann würde ich erwarten, daß es etwas ähnliches ist wie ein Tiefpass- Faltungs-Integral, bekannt aus der sonstigen Elektronik, nur daß sich die Faltung nicht über die Vergangenheit sondern über die relative Zukunft erstreckt (bezüglich eines fiktiven Zeitcodes auf dem Band). Bei einer Spaltbreite von 7 µm und einer Geschwindigkeit von 19 cm/s ergibt das ein Zeit-Intervall von 37 µs . Das wären bei einer Meßfrequenz von 333 Hz gerade mal 1.23 % der Periodendauer (oder 4,4 °). Aus dem Bauch heraus würde ich die Auswirkung erstmal für vernachlässigbar halten. Erst bei Frequenzen um/ab 4 kHz sollte sich das auswirken.

MfG Kai
PS: Gerade noch bemerkt: Selbst bei der ja zu betrachtenden 3ten Oberwelle wären es erst 3,7% der Periodendauer, was mich Vernachlässigbarkeit hoffen läßt.
Zitieren
#15
Moin moin,

da seit dem letzten Beitrag schon wieder geraume Zeit verstrichen ist will ich mal einen kurzen Zwischenbericht über meine Simulationsversuche geben.
Aufgrund von Joseph's Hinweis hab ich weiter die klassische Literatur studiert und ein bischen nachgedacht. Dabei kam heraus, daß der obige Ansatz ziemlicher Unfug war.
Ein besseres Modell berücksichtigt, daß eine Stelle auf dem Band sich am Aufnahmekopfspalt vorbei bewegt und dabei aus dem entmagnetisierten Zustand heraus ein zunehmendes Feld bestehend aus Audio-Signal und HF-Vormagnetisierung sieht. Direkt vor dem Spalt gibt es dann ein Pegelplateau und hinter dem Spalte klingt das Feld allmählich wieder auf Null ab. Mit dieser zeitlichen Feldverlaufsfunktion wird die Hysterese-Schleife der Bandpartikel durchlaufen. Typische Feldverläufe sind zB im Buch von E.Christian "Magnettontechnik"(1969) S.148 abgebildet. Detailliertere Überlegungen führen sogar zu der Erkenntnis, daß für den auf Band gespeicherten Wert nur der Feldverlauf nach dem letzten Feldmaximum maßgebend ist. Da sich das zumindest Oberflächen-nah in der Nähe der Hinterkante des AK-Spaltes befindet, kommt daher auch die vereinfachte Aussage, daß die Aufnahme an der Hinterkante des Spaltes stattfindet und nicht etwa in der Mitte vor ihm.
Eine Simulation des Aufnahmevorgangs muß dies also nachbilden. Interessiert man sich zunächst mal für das Verhalten bei tiefen Audio-Frequenzen, kann man bei den hier relevanten Zeitverläufen weitere Vereinfachungen vornehmen:
Bei einer Spaltebreite von 7µm und einer Geschwindiglkeit von 19 cm/s benötigt eine Stelle auf dem Band ca. 37 µs für die Passage des Spaltes und wohl ähnliche Zeiten für die Auf- und Abklingzonen davor und dahinter. Bei einer Frequenz von 333 Hz sind das gerade mal 4,4°, bei 1kHz ~13°. In der Zeit ändert sich das Signal kaum, kann also näherungsweise als konstant betrachtet werden. Ein Faltungs-Integral über Vergangenheit und (relative) Zukunft sind erstmal unnötig. Die Vormagnetisierung macht bei 100 kHz gerade mal 3,7 Schwingungen in der Zeit. (Bei 9,5 cm/s verdoppeln sich natürlich die Grade und Schwingungen). Ein erster Ansatz würde also ein konstantes Basis-Feld plus ein paar Sinus-Schwingungen Bias mit einer grob als Trapez-förmig beschriebenen Pegelfunktion beaufschlagen und auf die Hysterese-Kurve "loslassen".
Das habe ich gemacht und dabei nacheinander zwei verschiedene analytische Hysterese-Bescherungen ausprobiert. Als Hystereskurve habe ich dabei Daten von BASF DP26 und die Form von AGFA FR4004 angezielt, da ich dafür Spezifikationen fand.
Das erste Hysteremodell von J.Chan macht leider teilweise unsinnige innere Hysterese-Schleifen, die sogar die Sättigungsschleife verlassen. In der Erweiterung/Verbesserung von M.Engelhardt werden die zwar beseitigt, aber die Beschreibung der Methode in seiner Patentschrift ist unvollständig und die Implementation (auch in LTspice, wofür er sie gemacht hat) stellte sich als numerisch unstabil heraus.
Als nächstes habe ich das "bewährte" und in der Literatur vielfach erwähnte Jiles & Atherton Modell ausprobiert. Die Implementierung ist auch nicht ganz "ohne" numerische Hürden, insbesondere, wenn die Sättigungshysteresschleife sehr steile Äste hat, schlimmer ist aber, daß innere Hystereseschleifen physikalisch unsinnige Verläufe zeigen. Dieses Modell ist wohl leider nur für Zyklen konstanter Amplitude geeignet. Für die Simulation der auf Band gespeicherten Remanenz ist aber ein "vernünftiger" Verlauf gerade der inneren Hysterese- Schleifen wesentlich.
Darauf hin habe ich diese Ansätze hinter mir gelassen und Literatur über das Preisach-Schwantke-Modell von Hysterese und Speicherung auf Band studiert. Außer den bereits genannten Büchern von F.Winckel, E.Christian, E.Altrichter und Friedrich Engel ist hier auch noch die ältere Ausgabe von F.Winckel 's Buch von 1960 lobend zu erwähnen, weil es nicht nur ein Vorläufer der Ausgabe von 1978 ist, sondern eine Fülle weiterer Detail-Informationen über Band-Eigenschaften enthält, die später anderen Information weichen mußten. Hinzu kamen noch ein paar spezielle PDFs aus dem Internet und persönliche Hinweise von F. Engel und Peter Ruhrberg, der mich auch auf diese klassischen Bücher aufmerksam gemacht hat.
Nach anfänglichem Graus vor dem Ansatz stellte sich dann die Implementierung als weit weniger schwierig als befürchtet heraus.
Inzwischen läuft die Simulation, allerdings wäre "schleicht" die passendere Beschreibung. Sie gewährt mehr einen "Zeitlupen-Einblick" in die Vorgänge. Die berechneten effektiven Remanenz-Funktionen zeigen richtiges Verhalten und die Empfindlichkeitsfunktion vs. Vormagnetisierungspegel sieht auch schon Literatur-ähnlich aus. Der Verlauf von MOL3% und k3 ist noch ein bischen von den typischen Kurven in Banddatenblättern entfernt. Da tüftele ich noch an den rechentechnischen Details herum.
Es kann auch daran liegen, daß das Preisach-Modell zwar "vernünftige" innere Hysteresschleifen gestaltet, daß ich da aber noch nicht genug Band-typisches Verhalten hinbekommen habe, einerseits wegen nicht vorhandener Daten, andererseits weil der verwendete Belegungsfunktions-Generator sich nur an der Sättigungsschleife orientiert. Die zweidimensionale "Belegungs"-Funktion ist der "Stoff" aus dem die Preisach-Methode das konkrete mathematische Hysterese-Modell erzeugt. Gibt's nicht beim Discounter, nur (leider auch nur unvollständig) in einigen klassischen Werken der 50er Jahre des vorigen Jahrhunderts.
Es gibt also noch was zu tun, sieht aber (viel)versprechend aus...
Ach so, falls von Interesse, ist alles in Octave programmiert.

MfG Kai
Zitieren


Gehe zu:


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