Information ausblenden

32-Bit, Headroom und Clipping

Dieses Thema im Forum "Mixing" wurde erstellt von KoolKolle, 10.03.06.

Status des Themas:
Beachte, dass dieses Thema älter als ein Jahr ist! Möglicherweise ist es sinnvoller, einen neuen Thread zu erstellen.
  1. KoolKolle

    KoolKolle Themenersteller Überschätzte Legende

    Registriert seit:
    01.06.03
    Punkte:
    62.368
    62368
    Es traten ja jetzt schon in vielen Threads Bemerkungen zu diesem Thema auf. Mich würde mal konkret interessieren wie das denn genau ist. Ein 32-bit Sequenzer der im Mixer einen Clip anzeigt übersteuert also nicht zwingend - ich kann die Clipanzeige also getrost ignorieren solange es sich nicht verzerrt anhört... Wird mir schwer fallen (ich habe noch nicht lange einen 32-Bit Sequenzer). Mir ist die ganze Materie dewegen auch sehr neu. In der Tat konnte ich aber auch trotz Clipping oft keine Übersteurungsverzerrung hören.

    Gibt es eine Faustregel wieviel dB das Signal Clippen darf bevor es übersteuert? ist das auch Spektrumabhängig?
    Das Ding ist ja auch - jetzt mal reinhypothetisch - nehmen wir an ich leite das clippende 32-Bit Summensignal in einen anderen Sequenzer oder einen Audiorecorder der mit 16-Bit arbeitet und nehme auf. das ergebnis ist klar - die Aufnahme wird dann Übersteuert klingen. Wenn das Programm jetzt wavelab ist und ich stelle es um auf 32-BitAufnhame dürfte das dann ja nicht mehr der falls sein. Aber wenn ich die 32-Bit Datei dann auf Audio-CD Brenne wo sie dann ja umgewandelt wird dürfte sie wieder übewrsteuern.

    Kann mir das jemand mal genau erklären?
     
    KoolKolle, 10.03.06
    #1
  2. Brainsaw

    Brainsaw

    Registriert seit:
    24.11.03
    Punkte:
    3.997
    3997
    Na ja, da kann ich eigentlich nur 2 Sachen dazu sagen: erstens kann natürlich auch ein 32 Bit Wort übersteuert werden. Im Computer haben einfach alle Zahlen eine Ober- und eine Untergrenze. Zweitens: alte Regel: "if it sounds right it is right". Viele Hersteller bauen einen zusätzlichen Headroom ein, es wird praktisch schon ein paar DB vor dem Übersteuern Clipping angezeigt.
     
    Brainsaw, 10.03.06
    #2
  3. KoolKolle

    KoolKolle Themenersteller Überschätzte Legende

    Registriert seit:
    01.06.03
    Punkte:
    62.368
    62368
    kKlar können 32-Bit Dateien auch übersteuern. mich würde nur interessieren von was das genau abhängt (Nur Lautstärke allein scheint es ja nicht zu sein - ich vermute auch allein von der Logik her die Addfierungen von Signalen innerhalb eines Spektrums) und ob es Faustregeln gibt - abgeshen vom Ohr.

    und wie das ist wenn eine 32-Bit datei eigentlich klippt, man es aber nicht hört wegen dem Headroom in eine 16-Bit datei umgewandelt wird.

    Weiß das jemand genauer?
     
    KoolKolle, 10.03.06
    #3
  4. InSomnius

    InSomnius

    Registriert seit:
    07.04.04
    Punkte:
    15.773
    15773

    also, wenn die dateien nach der umwandlung dann doch clippen würden, hätte es ja überhaupt keinen sinn, mit 32 bit zu arbeiten, weil man zwar THEORETISCH den fader noch gaaaaaaaanz weit nach oben ziehen könnte, das aber nicht darf, weil sonst hinterher die 16bit-datei für die cd clippt. man würde es sich also quasi unnötig schwer machen und unnötig speicherplatz verbraten. ;)


    Der Gruß

    Griffin
     
    InSomnius, 10.03.06
    #4
  5. KoolKolle

    KoolKolle Themenersteller Überschätzte Legende

    Registriert seit:
    01.06.03
    Punkte:
    62.368
    62368
    Also ist das arbeiten mit 32-Bit dateien quasi sowas wie ein "natürlicher Maximizer"?
     
    KoolKolle, 10.03.06
    #5
  6. soultan

    soultan

    Registriert seit:
    04.12.05
    Punkte:
    814
    814
    Du hast doch Wavelab.Teste es doch einfach! Aber ich glaube kaum dass es da eine allgemein gültige Regel gibt, ausser wie gesagt das Ohr.

    Wenn du keine CDs verbrauchen willst, mach doch einfach ein image. alles was eigentlich schlussentlich auf der CD wäre, hast du dann als eine Datei auf der HD.
     
    soultan, 10.03.06
    #6
  7. OldWise

    OldWise Moderator Mitarbeiter

    Registriert seit:
    29.05.03
    Artikel:
    31
    Punkte:
    7.325
    7325
    wenn du mit 32bit aufgenommen hast und dann deine Datei auf auf 16bit renderst, dann werden die überschüssigen Bits ganz einfach abgeschnitten. Dies kann stellenweise zu häßlichen Klängen im Endergebnis führen. Deshalb ist das Dithering wichtig.

    Solange es nicht hörbar klippt ist es auch nicht so schlimm, da ja gute Sequenzer einen entsprechenden Headroom haben. Die Signale die aber über der 0db Grenze sind werden dann beim Mixdown aber einfach abgeschnitten. Das kann man sogar sehen.
     
    OldWise, 10.03.06
    #7
  8. he

    he

    Registriert seit:
    04.04.05
    Punkte:
    134
    134
    32Bit sind fast immmer Floating-Points, 16 fast immer Integers. Aber man darf niemals Floating-Points mit Integern in einen Topf werfen, da die Darstellung der Zahlen komplett unterschiedlich ist. 32Bit-Floats wirst du niemals zum Übersteuern bekommen, da du dafür weit über die 700dB gehen müsstest. Integer sind normalerweise so skaliert, das sie bis maximal 0dB gehen.
    Reden wir hingegen jeweils über Integers (sowohl bei 16, als auch bei 32Bit), was sehr unwarscheinlich ist, dann wird dir in der Regel keines von beiden einen größeren Headroom verschaffen. Allerdings kann man Integer so skalieren, dass sie mehr Headroom haben, dafür aber weniger Genauigkeit, was aber unabhängig von 16 oder 32Bit geschieht. Dabei handelt es sich dann aber um spezielle implementierungen.

    Da wir aber vermutlich über die üblichen Darstellungen reden, wie sie auch von z.B. Wave-Dateien verwendet werden gilt das anfangs gesagt: 32-Bit FP unübersteuerbar, 16-Bit Int übersteuert über 0dB
     
    he, 10.03.06
    #8
  9. ruecking

    ruecking

    Registriert seit:
    15.05.05
    Punkte:
    341
    341
    hey he,
    du scheinst dich auszukennen. was ist jetzt der genaue unterschied zwischen floating point und integer?
    ich weiß integer sind nur ganze zahlen. aber bei floating point ist ja auch irgendwann schluss.
    ein computer kann nur diskrete information speichern. irgendwann wird abgeschnitten.
    32 bit heißt für mich nur, dass halt sehr viele nachkommastellen gespeichert werden.
    aber das ist doch keine andere info, als wenn ich ganze zahlen mit mehr spielraum nach oben (rein zahlentechnisch) nehme.
    seh ich da was falsch? du betonst ja den unterschied zwischen integer und floating point so sehr, was steckt da dahinter?
    grüße,
    ruecking
     
    ruecking, 10.03.06
    #9
  10. netco

    netco

    Registriert seit:
    05.08.04
    Punkte:
    236
    236
    Hallo ruecking,

    floating point heißt im Deutschen Fließkomma. Das ist also eine Zahl, bei der sich das Komma verschiebt. Um dies zu realisierenn arbeitet man mit 10-Potenzen. So ist z.B. 100 das gleiche wie 0,1 mal 10 hoch 3. Für den PC gibt es bei floating point nur Zahlen der Form

    0, ... mal 10 hoch ...

    Mit dieser Konvention muss er nur noch die Zahlen speichern, die hier mit ... dargestellt sind. Für die Zahlen nach dem Komma, verwendet der Rechner 24 bit (eins fürs Vorzeichen, 23 bit für die Ziffern) kann also von 16 Mio. verschiedene Zahlen darstellen. Die restlichen 8 bit werden für die Potenz verwendet (wiederum eins fürs Vorzeichen). So habe ich Potenzen von -128 bis +128. Damit komme ich sehr nah an die Null ran, mit 10 hoch -128 (also nach dieser System auf ein 0, mit 128 folgenden Nullen, aber auch in sehr große Zahlbereiche, eben mit 1 und 127 Nullen dran (keine Ahnung, wie eine solche Zahl heißt.)) Systembedingt werden die Abstände zwischen den Zahlen immer größer. Aber man spart sehr viel Speicherplatz.

    Für den Musiktreibenden ist nur wichtig, dass durch diese große Reichweite der Zahlen, ein Übersteuern unmöglich ist. (hier stand eben was von 700db, das kann sicher stimmen :) )

    Ich hoffe, ich habe nicht zu viel Verwirrung gestiftet,

    Netco
     
    netco, 10.03.06
    #10
  11. ruecking

    ruecking

    Registriert seit:
    15.05.05
    Punkte:
    341
    341
    ok. es ist also einfach eine geschickte art zahlen abzuspeichern.
    so wie auch der taschenrechner besonders kleine zahlen
    mit x*exp{-y} darstellt. hab ichs kapiert?
     
    ruecking, 10.03.06
    #11
  12. he

    he

    Registriert seit:
    04.04.05
    Punkte:
    134
    134
    Fließpunktzahlen haben eine Mantisse und einen Exponenten. Bei 32Bit Floats ist die Mantisse 24Bit groß. Der Exponent belegt den Rest. Mit Hilfe des Exponents kann nun der Wertebereich quasi verschoben werden.

    Integers haben eine bestimmte Anzahl von Ziffern, die gespeichert werden kann.

    Das ganze will ich mal an Beispielen verdeutllichen. Da viele hier wohl nicht ganz so fit im Binärrechnen sind verwende ich einfach mal das Dezimalsystem. Damit das ganze übersichtlich bleibt, verwende ich nicht 16 oder mehr Ziffern (bei Integern äquivalent zu Bits), sondern nur 8.

    Dann können wir beispielsweise die Zahl 12345678 speichern und zwar so wie sie ist:
    12345678
    Die größte Zahl die möglich ist, ist
    99999999
    , die kleinste Zahl ungleich 0 ist
    00000001, also 1
    . Wollen wir kleinere Zahlen ungleich 0 speichern geht das nicht. Wollen wir größere als 99999999 speichern geht das auch nicht. Ersteres bedeutet sehr schlechte Genauigkeit bei leisen Signalen, letzteres bedeutet Übersteuern bei zu lauten Signalen.


    Bei FPs sieht das ganze etwas anders aus. Nehmen wir ebenfalls 8 Ziffern, die gespeichert werden können, allerdings werden sechs für die Mantisse und zwei für den Exponenten verwendet. (Allerdings wird der Bereich für den Exponenten nicht 0 bis 99 sein, sondern -50 bis +49, also trotzdem insgesammt 100 verschiedene Zahlen. Bei FP-Zahlen im Binärsystem ist das genauso. Da ist es allerdings auch bei der Mantisse so.)

    Die Beispielszahl 12345678 würde als
    123456*10^+02
    gespeichert. Also erstmal weniger Genauigkeit, bei selber Gesammtgröße (nur die ersten sechs Stellen, statt der gesammten acht Stellen).
    Allerdings ist die größte Zahl
    999999*10^+49
    Also ausgeschreiben:
    999999000000000000000000... ( insgesammt 49 Nullen, also verdammt riesig!)
    Die kleinste Zahl ist
    999999*10^-50
    Ausgeschreiben:
    0,0000000000...000999999 (mit 49 Nullen zwischen dem Komma und der ersten 9, also verdamt klein)



    Integers verhalten sich also ganz anders als FPs. Die Genauigkeit von Integern wird nur voll ausgenutzt, wenn das Signal die volle Lautstärke erreicht. Die Genauigkeit von FPs wird quasi immer voll ausgenutzt (es sei denn man nähert sich den extremst kleinen Zahlen, die dann in sogenannter denormalisierter Form gespeichert werden müssen, aber das geht jetzt über den kurzen Exkurs hinaus. Vielleicht habt ihr aber schonmal von dem Problem gehört, das Prozessoren mit Denormalen haben (Verarbeitung deutlich langsamer, vor allem beim Pentium 4). Bei Plugins, die nicht verhindern, dass die Zahlen zu klein werden, spricht man auch schonmal vom Denormal-Bug).
    Dafür ist die Genauigkeit von Integern besser, wenn sie optimal ausgenutzt werden kann (wenn sowohl Integer, als auch FP die selbe Zahl an Bits hat).
     
  13. he

    he

    Registriert seit:
    04.04.05
    Punkte:
    134
    134
    OK, ich hab was länger gebraucht und glaube meine Erklärung war trotzdem nicht besonders verständlich. Die vor mir ist vermutlich viel einfacher zu verstehen.

    Ja.
     
  14. ruecking

    ruecking

    Registriert seit:
    15.05.05
    Punkte:
    341
    341
    cool. kapiert.
    merci auch für deine erklärung he.
    doppelt hält besser.
     
    ruecking, 10.03.06
    #14
  15. he

    he

    Registriert seit:
    04.04.05
    Punkte:
    134
    134
    Fast. Es werden in wirklichkeit Zweierpotenzen verwendet. Aber das ist ja nur ein Detail.
     
  16. Brainsaw

    Brainsaw

    Registriert seit:
    24.11.03
    Punkte:
    3.997
    3997
    Brainsaw, 13.03.06
    #16
Status des Themas:
Beachte, dass dieses Thema älter als ein Jahr ist! Möglicherweise ist es sinnvoller, einen neuen Thread zu erstellen.