[linux-l] Suche: Frequenzgenerator/analyzer.

Jan-Benedict Glaw jbglaw at lug-owl.de
Mi Mär 14 22:22:03 CET 2007


On Wed, 2007-03-14 12:16:53 +0100, Norm at nSteinbach <norm at nsteinbach.de> wrote:
> Jan-Benedict Glaw wrote:
> > > > Oder willst Du unbedingt eine Karte im PC haben,
> > > > der das erledigt?
> > > Ja: Eine einfache PCI-Soundkarte dürfte hoffentlich ausreichen. Wenn sie 
> > > onbard ist, wäre es nichtmal eine Karte.
> > > Oder können die keine Frequenzen mit 2 Dezimalstellen Genauigkeit 
> > > generieren? Wie können die dann Musik in 16Bit Stereo mit 48KHz 
> > > Samplerate abspielen? Ich gebe zu: Der Analyzer ist eher ein 
> > Soundkarten haben einen Taktgeber, der dem kleinesten gemeinsamen
> > Vielfachen aller abspielbarer Sampleraten entspricht. Von da aus
> > werden die einzelnen Sampleraten durch entsprechende Taktteilung
> Ähm, ist dieser Sachverhalt irgendwo etwas genauer erklärt, also wie das 
> mathematisch funktioniert. Weil, NOCH hab ichs nämlich nicht kapiert...

Keine Ahnung. Aber versuchen wir's mal mit'm Beispiel:

Unsere erdachte Sound-Karte kann laut Verpackung mit 44100 Hz und
48000 Hz Sampla-Raten umgehen. Dann ist irgendwo gemäß

	kgV(44100, 48000) = 7056000

ein Taktgeber mit 7056000 Hz versteckt. Aus diesem werden dann die
beiden Sample-Raten erzeugt, indem die Ausgangs-Frequenz durch 160
(für 44100 Hz) bzw. durch 147 (für 48000 Hz) geteilt wird. (Es gibt
noch andere Methoden, aber die sind nicht so anschaulich:-)

Der Punkt ist: Ob nach der Teilung durch z.B. 160 hinterher wirklich
exakt 44100 Hz herauskommen, ist ausschließlich von der Qualität der
Taktquelle abhängig. Wenn sie ein Prozent zu schnell ist, ist auch Dein
Ausgangssignal ein Prozent zu schnell.

> > erzeugt. Wenn der Taktgeber also nicht /genau/ der gewünschten
> > Frequenz entspricht, hast Du einen Fehler.
> In der Tat. Und nichtmal einen, den ich messen könnte.
> Also bräuchte ich wirklich einen analogen Frequenzgenerator. Gefickt 
> eingeschädelt, PCs so zu entwickeln, dass sie gewisse Dinge einfach 
> NICHT können (obwohl man es von ihnen glauben würde weil die 
> Einschränkung nicht offensichtlich ist).

Ein analoger Frequenzgenerator hat genau dasselbe Problem, nur gaukelt
er Dir eine Genauigkeit vor, die garnicht vorhanden ist.

Natürlich kannst Du mit ein paar Zeilen Programmierei die Soundkarte
auf die höchste Sampla-Rate stellen und da 440 Hz Sinus-Welle
einfüttern, auf 10 Stellen hinterm Komma genau.

Du mußt Dir nur im Klaren darüber sein, daß bereits die erste
Vorkomma-Stelle aufgrund systematischer Fehler (-> Falschgang der
Takterzeugung) in der Ausgabe falsch sein kann.

Alle davon abgeleiteten Töne sind natürlich gleichermaßen falsch,
daher fällt das bei /einem/ PC, der eine Folge von harmonischen Tönen
abspielt, bestenfalls dem geübten Ohr auf. Aber die Töne sind
zueinander "stimmig."  Der Unbewanderte kann den Fehler aber sofort
hören, wenn Du zwei PCs gleichzeitig exakt denselben Ton abspielen
läßt: Durch Überlagerung bzw. Auslöschung der Schallwellen wirst Du
deutlich ein Leiser- und Lauterwerden der Töne hören. Wären die beiden
Taktgeber sauber gleichschnell (was noch nicht bedeutet, daß sie
beide auch die richtige gewünschte Frequenz haben; sie könnten auch
denselben Fehler aufweisen!),  würdest Du einen gleichmäßigen, immer
gleichlauten Ton hören.

> > Test: Zwei PCs nebeneinanderstellen und einen (angeblich gleichen) Ton
> > abspielen lassen. Wenn Du das gewohnte Blubbern hörst, geht mindestens
> > ein PC nicht ordentlich im Takt :)
> Und wenn ich nur einen PC testen will, benötige ich dazu ein 
> Gitarrenstimmgerät? ;-)

...das auch nicht auf mehrere Stellen hinter dem Komma genau ist. Der
Trick ist, daß Dir analog angezeigt wird, wie weit Du von einem Normal
(meist 440 Hz) entfernt bist.

Von da aus werden alle übrigen Saiten gestimmt, sodaß sie zu der
ersten Saite passen. Auch hier wird also ein (kleiner) Fehler bei
der ersten Saite akzeptiert, aber alle übrigen sollen zumindest
gleichermaßen neben der Soll-Frequenz liegen, damit sich ein
harmonischer Ton ergibt (und eben kein Lauter- und Leiserwerden.)

> Was meinst Du mit "geht nicht ordentlich im Takt"? Ist damit sowas 
> gemeint, dass (wie bei meinem Athlon) 2 GHz draufstehen, der Proz. aber 
> in Wirklichkeit auf 1999,9MHz läuft?

Genau.

> Könnte man so einen Fehler nicht (dank echtzeituhr) messen und 
> kompensieren? Diese Frage ist rein prinzipiell, da mir hierfür ohnehin 
> die Programmierkenntnisse fehlen.

Theoretisch kannst Du, wenn Du eine gesicherte gute Frequenzquelle
hast, den Falschgang durch leichte Korrektur der ausgegebenen
Zielfrequens (also z.B. 438 Hz statt 440 Hz, wenn man weiß, daß die
Taktquelle etwas zu schnell ist) korrigieren.

Praktisch klappt das nicht unbedingt wirklich gut, weil der Fehler
mehrere Ursachen hat. Einmal ist die Grundfrequenz etwas falsch; dazu
kommt aber noch, daß die Frequenz auch von Faktoren wie instabiler
Spannung, Luftdruck und Temperatur abhängig ist. Das kann man bei
einer Soundkarte sicherlich auch nachweisen.

Viel einfacher ist es, sich das anhand der PC'schen Echtzeituhr (die
im Prinzip dieselben Probleme hat) anzusehen.

Installier' einfach mal einen ntpd und protokollier' den
"frequency"-Wert. Der gibt, vereinfacht, nämlich genau an, wie groß
momentan die benötigten Korrekturen sind.

Wenn der Rechner idle ist und in einem Zimmer mit deutlichen
Temperaturschwankungen (Tag vs. Nacht) steht oder wenn die Maschine
schlecht belüftet ist und ab und zu mal ordentlich Last hat, wirst Du
sehr schön sehen können, daß sich das auf den
"frequency"-Korrekturwert auswirkt.  Ja, auf diesem Wege kann man eine
Uhr als Thermometer benutzen :D

MfG, JBG

-- 
      Jan-Benedict Glaw      jbglaw at lug-owl.de              +49-172-7608481
Signature of:              Alles sollte so einfach wie möglich gemacht sein.
the second  :                          Aber nicht einfacher.  (Einstein)
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Digital signature
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20070314/1903fd87/attachment.sig>


Mehr Informationen über die Mailingliste linux-l