hi. digitale verzerrungen enstehen dann, wenn 2 oder mehr sampels hintereinander 0 dBfs (also voll ausgesteuert) haben. hört sich sehr übel an. wegkriegen kann man diese verzerrungen, indem man in einem waveeditor das audiomaterial leiser macht, an die entsprechenden stellen ranzoomt und die kanten "rundmalt" cu, jonny
Guten Tag Kann mir vielleicht jemand dieses Thema etwas genauer erklären? Wodurch entstehen digitale Verzerrungen? Bin für jede Antwort dankbar.
Hi, mal ne bloede Frage! 0dBfs ist eigentlich doch noch keine Verzerrung, oder doch? Das bedeutet doch nur, dass Du die volle bit-Anzahl ausgenutzt hast, Du darfst dann aber nichte mehr drueber gehen. Und warum 2 oder mehr samples? Indem Moment wo Du einen peak hast (und sei er nur ein sample lang) der durch die volle Bit-Zahl nicht mehr dargestellt werden kann ist das signal doch schon verzerrt (nicht mehr das gleiche, was es urspruenglich war), egal ob man das nun hoert oder nicht. Gruss,
Hallo HaJo, gehen wir mal etwas ins Theoretische: Wenn der Maximalwert einer Schwingung (muß nicht unbedingt sin- oder cos-förmig sein) gerade 0 dBfs hat, dann ist dies selbstverständlich gerade noch keine Verzerrung. Wenn aber 2 Samples mit 0 dBfs aufeinander folgen, dann muß ja der Maximalwert der Schwingung darüber liegen, nur das System kann es nicht mehr darstellen. Der 1. Wert ergibt sich dann durch die aufsteigende, der 2. Wert durch die absteigende Signalflanke. Allerdings sind diese Verzerrungen keineswegs immer hörbar. Es ist also nicht unbedingt notwendig, diese durch den Malstift in Wave-Lab oder ähnliche Programme zu korrigieren. Solange man es nicht hört, genügt es, das Soundfile einfach um 1...2 dB im Pegel zu reduzieren.
Wie ist eigentlich dBfs definiert? Was ist es _genau_? Digitale Codevalues sind proportional zur Signalspannung (bei Audio). Also ist 0dBfs = der Pegel einer Sinusschwingung, die gerade noch im System darstellbar ist? Oder wird dB hier für Spannungen (d.h.) (Betrag der) Codevalues definiert? Ist übrigens im Dickreiter nicht erklärt.
digitale Codevalues reichen für Anzahl der Bits n von (2^n)/2 bis -((2^n)/2+1) D.h. für 16bit von +32768 bis -32767. Daher leicht unsymetrisch, wenn's unten schon clippt, kann's oben gerade noch gehen. Wird das vernachlässigt?
Wie ist eigentlich dBfs definiert? Was ist es _genau_? Digitale Codevalues sind proportional zur Signalspannung (bei Audio). Also ist 0dBfs = der Pegel einer Sinusschwingung, die gerade noch im System darstellbar ist?
Oder wird dB hier für Spannungen (d.h.) (Betrag der) Codevalues definiert?
digitale Codevalues reichen..... Wird das vernachlässigt?
Der log des momentanen Spannungswertes zum maximalen Spannungswert. Beispiel: wenn der digitale Wert die Zahl "1000" und der maximale Wert 65536 ist, dann ist der Pegel = 20 x log(1000/65536) richtig. Muß nicht unbedingt sin-Schwingung sein. Bezugswert ist der ganze Wertevorrat.
Das ist richtig. Man kann aber den Fehler vernachlässigen.
Hallo In einem Beitrag weiter oben steht:" Indem Moment wo Du einen peak hast (und sei er nur ein sample lang) der durch die volle Bit-Zahl nicht mehr dargestellt werden kann ist das signal doch schon verzerrt (nicht mehr das gleiche, was es urspruenglich war), egal ob man das nun hoert oder nicht." Wie kann es denn vorkommen , das ein Sample durch die volle Bitzahl nichtmehr dargestellt werden kann. Beispiel: 16 Bit! Dort müsste doch der Maximalpegel bei 32678 liegen. Oder??? gruß Björn
Hallo Björn, das ist ganz einfach zu erklären: Wenn das (analoge) Eingangssignal zum AD-Wandler dessen Aussteuerungsgrenze überschreitet. d.h.: Wenn es einen Wert erreicht, der eine höhere Bit-Zahl erfordern würde als der Wandler hergeben kann. Nehmen wir an - und der Wert ist durchaus realistisch - daß bei einem Eingangssignal von 10 Volt gerade alle 16 bit eines 16-Bit-Wandlers auf "1" sitzen. Dann ist die Ausssteuerungsgrenze erreicht. Ein Eingangssignal das nun größer ist als 10 Volt wird ebenfalls "nur" mit 16 Einsen dargestellt und bei der Rückwandlung in ein analoges Signal ist die Spitze die über die 10 Volt hinausging einfach "abgeschnitten". Ein Sinussignal beispielsweise sieht dann auf dem Oszilloskop flach abgeschnitten aus.
Der log des momentanen Spannungswertes zum maximalen Spannungswert. Beispiel: wenn der digitale Wert die Zahl "1000" und der maximale Wert 65536 ist, dann ist der Pegel = 20 x log(1000/65536)
OK. Nur noch mal zum Verständnis: Also angenommen ich jage einen Sinus von 1kHz mit 13dBu in meinen AD-Wandler. Und mal angenommen, es stimmt und dieser Wert führt gerade noch nicht zum Clippen. Dann ist bei t=0ms, U=0V CV = 0 t=0.25ms, U=3.46V normiert auf 1 CV = max = 32768 = 01111111 11111111 t=0.5ms, U=0V CV = 0 t=0.75ms , U=-3.46V normiert auf 1 CV = min = -32768 = 10000000 00000000 (Codevalues als signed integer) Habe ich jetzt 0dBs? Oder ändert sich der Wert mit t? Und ist bei einer viertel Periode maximal und nach einer dreiviertel negativ oder minimal?
Hallo Thomas, völlig richtig, Du hast jetzt 0 dBfs, das System wird voll ausgesteuert. Nach 1/4 Periode ist der max-Wert erreicht und nach einer 3/4 der min-Wert, und der min-Wert ist definitionsgemäß der negative Wert des Signals. Soweit ich es auswendig weiß, werden negative Signalwerte im 2-er Komplement dargestellt. Grüße Rainer G
völlig richtig, Du hast jetzt 0 dBfs, das System wird voll ausgesteuert. Nach 1/4 Periode ist der max-Wert erreicht und nach einer 3/4 der min-Wert, und der min-Wert ist definitionsgemäß der negative Wert des Signals. Soweit ich es auswendig weiß, werden negative Signalwerte im 2-er Komplement dargestellt.
Also vergleicht man - obwohl man es machmal tut - sprichwörtlich immer Äpfel mit Birnen wenn man dBu mmit dBfs in Beziehung setzt? Da dBu als Effektivwert und dBfs als Momentanwert definiert ist. Also wieder eine der vielen Ungenauigkeiten. (die absoluten Zahlen meines obigen Beispiele sind im Übrigen falsch, man multipliziere sie mit sqrt(2) ) Ja. Habe ich auch so dargestellt mit den Bitmustern. 0 = alle Bits 0 negative Werte = (unsigned)MAXVALUE + wert + 1 Also für alle c(++) Programmierer: signed int(short) nehmen.... Für alle Java programmierer auch, wenn denn jemand ernsthaft mit Java Audio programmieren will.....
Also vergleicht man - obwohl man es machmal tut - sprichwörtlich immer Äpfel mit Birnen wenn man dBu mmit dBfs in Beziehung setzt? Da dBu als Effektivwert und dBfs als Momentanwert definiert ist. Also wieder eine der vielen Ungenauigkeiten.
Ist völlig klar: das "dBu" ist ein absoluter Spannungspegel der auf den Effektivwert von 0,775 Volt bezogen ist, während das "dBfs" auf einen Maximalwert bezogen ist. Der Bezugwert ist dann auch keine physikalische Einheit sondern ein reiner Zahlenwert. Außerdem geht aus dem Suffix "fs" (Full scale) ja zunächst nicht hervor, ob es sich um ein 16-bit, ein 20-bit, ein 24-bit oder sonst irgendein Digitales System handelt. Grüße Rainer P.S.: Mail geht gleich raus
sondern ein reiner Zahlenwert. Außerdem geht aus dem Suffix "fs" (Full scale) ja zunächst nicht hervor, ob es sich um ein 16-bit, ein 20-bit, ein 24-bit oder sonst irgendein Digitales System handelt. P.S.: Mail geht gleich raus
Das ist ja auch egal! Denn erstens kann man es immer normiert betrachten und zweitens kann man die höhere Auflösung als zusätliche (low significant bits) binäre Nachkommastellen betrachen. Wie bei digital Video (CCIR 601). 10bit Videocodevalues gehen (dezimal) auch nur von 0 bis 254. Danke.