LW IT Solutions
« Blog Overview /Music Production / Samplerate-Wandlung von 48 auf 44,1 kHz: Aliasing,...
This post in other languages:

Samplerate-Wandlung von 48 auf 44,1 kHz: Aliasing, Höhenverlust und Spitzen von swr und soxr gemessen

Samplerate-Wandlung von 48 auf 44,1 kHz: Aliasing, Höhenverlust und Spitzen von swr und soxr gemessen
Inhalt
  1. So wurde gemessen
  2. Durchlassbereich: Der Standard von ffmpeg dämpft schon unter 20 kHz
  3. Über 22,05 kHz: Aliasing zwischen −9,5 und unter −180 dB
  4. Spitzen: Der True Peak blieb, der Sample Peak stieg um bis zu 1,3 dB
  5. Vorschwinger und Rechenzeit: kaum Unterschiede
  6. Was daraus für den Export folgt
  7. Einordnung und Grenzen
  8. Fragen und Antworten
  9. Quellen

FL Studio exportiert mit der Samplerate des Projekts. Das Exportfenster hat dafür keine eigene Einstellung, sie gehört laut Handbuch in die Audio Settings. Läuft ein Projekt mit 48 kHz und wird eine Datei mit 44,1 kHz gebraucht, rechnet ein Resampler die Abtastwerte um. Beim Absenken der Abtastrate muss er vorher entfernen, was über der halben neuen Abtastrate liegt, bei 44,1 kHz also über 22,05 kHz: Julius O. Smith beschreibt, dass die Grenzfrequenz des Tiefpasses dafür unter die Hälfte der neuen, niedrigeren Abtastrate rückt. Was darüber stehen bleibt, faltet sich als Aliasing in den Bereich darunter.

Die Messung vergleicht die beiden Resampler, die ffmpeg mitbringt: den eigenen swr mit drei Filterlängen, darunter der Standard, und den SoX Resampler soxr in zwei Qualitätsstufen. Gemessen wurden Sinustöne, ein Einzelimpuls und zwei laute Master aus dem Testmix der Messung True Peak nach dem Encoding, diesmal mit 48 kHz erzeugt.

Zwei Liniendiagramme für fünf Verfahren. Links der Pegel von Sinustönen zwischen 15 und 22 kHz nach der Wandlung: swr mit filter_size 16 fällt schon ab 18 kHz ab und liegt bei 20 kHz 3 dB tiefer, der Standard von swr 1,3 dB, swr mit filter_size 128 und beide soxr-Stufen bleiben bis 20,5 kHz fast bei 0 dB und fallen erst danach steil ab. Rechts der Pegel der gefalteten Anteile für Töne zwischen 22,5 und 23,9 kHz: swr mit filter_size 16 bei −10 bis −16 dB, der Standard bei −14 bis −34 dB, filter_size 128 um −100 dB, soxr zwischen −137 und −162 dB, soxr mit precision 28 unter −180 dB. Darunter vier Kennzahlen
Pegel im Durchlassbereich und Aliasing beim Wandeln von 48 auf 44,1 kHz, je Verfahren.

So wurde gemessen

  • Verfahren: ffmpeg 7.1.5, Filter aresample mit Ausgabe 44,1 kHz in 32 Bit Gleitkomma. swr mit filter_size 16, 32 (Standard) und 128, soxr mit precision 20 (Standard, laut Dokumentation SoX „High Quality“) und 28 („Very High Quality“). Die Grenzfrequenz blieb überall beim Standard: bei swr 0,97 der halben Abtastrate als 6-dB-Punkt, bei soxr 0,91 als 0-dB-Punkt.
  • Kontrollen: -ar 44100 ohne weitere Angabe lieferte dieselben Abtastwerte wie aresample mit Standardwerten. Ohne die NEON-Routinen des ARM-Rechners (-cpuflags 0) lag die größte Abweichung bei swr 131 dB unter dem Pegel der Töne, bei soxr gab es keine.
  • Sinustöne: je eine Sekunde mit −6 dBFS bei 48 kHz, ausgewertet über die mittlere halbe Sekunde per Ausgleichsrechnung. Töne von 1 bis 22 kHz zeigen den Pegel im Durchlassbereich. Töne von 22,5 bis 23,9 kHz liegen über der neuen Nyquist-Frequenz von 22,05 kHz; gemessen wurde, was davon bei 44,1 kHz minus Tonfrequenz ankommt.
  • Einzelimpuls: Dauer der Vorschwinger vor dem Hauptwert bis −60 und −100 dB.
  • Master: der Testmix, bei 48 kHz neu erzeugt, einmal mit Limiter auf −9 LUFS und −1 dBTP, einmal bei −1 dBFS hart gekappt auf −8 LUFS. Die Hi-Hats aus gefiltertem Rauschen reichen bis 24 kHz, der Anteil über 20 kHz lag 28,5 und 27,3 dB unter der Gesamtenergie. True Peak nach ITU-R BS.1770-5 und als Gegenprobe 16-fach, dazu Sample Peak und Abtastwerte über 0 dBFS.
  • Rechenzeit: der Limiter-Master je Verfahren dreimal gewandelt auf einem Raspberry Pi 4, gewertet die kürzeste Zeit einschließlich Lesen und Schreiben der Dateien.

Durchlassbereich: Der Standard von ffmpeg dämpft schon unter 20 kHz

Verfahren 18 kHz 19 kHz 20 kHz 20,5 kHz 21 kHz
swr, filter_size 16 −0,81 dB −1,67 dB −3,03 dB −3,95 dB −5,04 dB
swr, Standard (filter_size 32) −0,01 dB −0,22 dB −1,28 dB −2,43 dB −4,18 dB
swr, filter_size 128 0,00 dB 0,00 dB 0,00 dB 0,00 dB −1,01 dB
soxr, Standard (precision 20) 0,00 dB 0,00 dB −0,01 dB −0,07 dB −3,75 dB
soxr, precision 28 0,00 dB 0,00 dB 0,00 dB −0,03 dB −4,06 dB

Mit den Standardwerten verlor swr bei 19 kHz 0,22 dB und bei 20 kHz 1,28 dB, mit filter_size 16 waren es bei 20 kHz schon 3,03 dB. Mit filter_size 128 und mit beiden soxr-Stufen blieb der Pegel bis 20 kHz innerhalb von 0,01 dB und bis 20,5 kHz innerhalb von 0,07 dB; der steile Abfall beginnt dort erst darüber.

Über 22,05 kHz: Aliasing zwischen −9,5 und unter −180 dB

Verfahren Ton 22,5 kHz, Alias bei 21,6 kHz Ton 23 kHz, Alias bei 21,1 kHz Ton 23,5 kHz, Alias bei 20,6 kHz Ton 23,9 kHz, Alias bei 20,2 kHz
swr, filter_size 16 −9,5 dB −11,5 dB −13,8 dB −15,8 dB
swr, Standard (filter_size 32) −14,3 dB −19,9 dB −27,1 dB −34,4 dB
swr, filter_size 128 −96,2 dB −94,7 dB −104,0 dB −97,9 dB
soxr, Standard (precision 20) −136,6 dB −148,6 dB −141,6 dB −162,2 dB
soxr, precision 28 unter −180 dB unter −180 dB unter −180 dB unter −180 dB

Ein Ton bei 22,5 kHz lässt sich mit 44,1 kHz nicht darstellen; bleibt er stehen, erscheint er gespiegelt bei 21,6 kHz. Der Standard von swr dämpfte ihn nur um 14,3 dB, filter_size 16 um 9,5 dB. Erst weiter von der Nyquist-Frequenz entfernt wuchs die Dämpfung, beim Standard bis 34,4 dB für 23,9 kHz. swr mit filter_size 128 erreichte 94,7 bis 104,0 dB, soxr 136,6 bis 162,2 dB und mit precision 28 mehr als 180 dB. Smith nennt den Preis steiler Filter: Für eine gegebene Sperrdämpfung braucht ein Tiefpass mit jeder Halbierung des Übergangsbereichs etwa doppelt so viele Rechenschritte je Abtastwert.

Spitzen: Der True Peak blieb, der Sample Peak stieg um bis zu 1,3 dB

Master True Peak 4-fach True Peak 16-fach Sample Peak Werte über 0 dBFS
Limiter, −9 LUFS, −1 dBTP: Master bei 48 kHz −1,05 dBTP −0,79 dBTP −2,31 dBFS 0
Limiter: swr, filter_size 16 −1,16 dBTP −1,07 dBTP −1,53 dBFS 0
Limiter: swr, Standard (filter_size 32) −1,03 dBTP −0,96 dBTP −1,44 dBFS 0
Limiter: swr, filter_size 128 −1,04 dBTP −0,98 dBTP −1,35 dBFS 0
Limiter: soxr, Standard (precision 20) −1,05 dBTP −0,95 dBTP −1,40 dBFS 0
Limiter: soxr, precision 28 −1,05 dBTP −0,95 dBTP −1,41 dBFS 0
Harte Kappung bei −1 dBFS, −8 LUFS: Master bei 48 kHz +0,38 dBTP +0,72 dBTP −1,00 dBFS 0
Harte Kappung bei −1 dBFS: swr, filter_size 16 +0,28 dBTP +0,38 dBTP +0,01 dBFS 2
Harte Kappung bei −1 dBFS: swr, Standard (filter_size 32) +0,41 dBTP +0,54 dBTP +0,18 dBFS 18
Harte Kappung bei −1 dBFS: swr, filter_size 128 +0,47 dBTP +0,64 dBTP +0,27 dBFS 41
Harte Kappung bei −1 dBFS: soxr, Standard (precision 20) +0,45 dBTP +0,64 dBTP +0,26 dBFS 42
Harte Kappung bei −1 dBFS: soxr, precision 28 +0,44 dBTP +0,64 dBTP +0,26 dBFS 44

Die Lautheit blieb bei allen Wandlungen gleich (Auflösung 0,1 LU). Der True Peak änderte sich 4-fach gemessen um höchstens 0,11 dB, in der 16-fachen Gegenprobe sank er um 0,08 bis 0,34 dB, am stärksten mit filter_size 16, das die Höhen am stärksten dämpft. Die Abtastwerte trafen nach der Wandlung dagegen andere Stellen der Wellenform. Beim Limiter-Master stieg der Sample Peak von −2,31 auf bis zu −1,35 dBFS. Der hart gekappte Master hatte bei 48 kHz keinen Wert über −1,00 dBFS, nach der Wandlung lagen 2 bis 44 Abtastwerte über 0 dBFS, mit soxr 42 und 44. In einer Datei mit 16 oder 24 Bit werden solche Werte gekappt. Die Grenze auf den Abtastwerten bei 48 kHz schützt die 44,1-kHz-Datei also nicht; der True Peak der 48-kHz-Datei zeigte dagegen schon vorher, wie hoch die Werte reichen können.

Vorschwinger und Rechenzeit: kaum Unterschiede

Verfahren Rechenzeit für 32 s Stereo schneller als Echtzeit Vorschwinger bis −60 dB bis −100 dB
swr, filter_size 16 0,50 s 64-fach 0,14 ms 0,18 ms
swr, Standard (filter_size 32) 0,55 s 58-fach 0,27 ms 0,36 ms
swr, filter_size 128 0,81 s 39-fach 0,68 ms 1,41 ms
soxr, Standard (precision 20) 0,70 s 46-fach 0,98 ms 1,93 ms
soxr, precision 28 0,79 s 40-fach 1,32 ms 2,27 ms

Vor und nach dem Impuls schwangen alle fünf Verfahren gleich lang, wie bei linearphasigen Filtern. Bis −60 dB dauerten die Vorschwinger 0,14 ms mit filter_size 16 bis 1,32 ms mit soxr und precision 28, bis −100 dB höchstens 2,27 ms. Die genaueren Verfahren kosteten auf dem Raspberry Pi 4 wenig Zeit: 32 Sekunden Stereo brauchten mit dem Standard von swr 0,55 s, mit soxr 0,70 s und mit precision 28 0,79 s, jeweils einschließlich Lesen und Schreiben der Dateien.

Was daraus für den Export folgt

  • Für eine 44,1-kHz-Datei aus einem 48-kHz-Export lieferte -af aresample=44100:resampler=soxr bis 20 kHz einen um höchstens 0,01 dB veränderten Pegel und für Anteile über 22,05 kHz mindestens 137 dB Dämpfung; :precision=28 kostete 0,1 s mehr.
  • -ar 44100 allein nutzt den Standard von swr: 1,3 dB weniger bei 20 kHz und nur 14 dB Dämpfung für Anteile knapp über 22,05 kHz. Innerhalb von swr brachte filter_size=128 die Abweichung bis 20 kHz unter 0,01 dB und die Dämpfung auf 95 bis 104 dB.
  • Maßgeblich für die Spitzen nach der Wandlung ist der True Peak der 48-kHz-Datei, nicht ihr Sample Peak. Das LUFS- und True-Peak-Messgerät misst beide im Browser.
  • Die Wandlung auf 16 Bit mit Dither folgt als letzter Schritt nach der Samplerate-Wandlung, siehe Dither beim Export auf 16 Bit.
  • Dasselbe Prinzip beschreibt das Handbuch von FL Studio für die Interpolation beim Transponieren von Samples: Lineare Interpolation kann Aliasing erzeugen, und für den finalen Export empfiehlt es Einstellungen über 64-point Sinc, wenn mit einfacheren Verfahren Aliasing zu hören ist. Die Einstellung steht im Mastering-Tutorial für FL Studio.

Einordnung und Grenzen

Gemessen wurden die Resampler in ffmpeg, nicht die Umrechnung in FL Studio oder in anderen Programmen. Der Testmix ist synthetisch; seine Hi-Hats aus gefiltertem Rauschen reichen bis 24 kHz, viele Aufnahmen enthalten über 20 kHz weniger. Ein Hörtest war nicht Teil der Messung: Die gefalteten Anteile landen zwischen 20,2 und 21,6 kHz, und ob sie dort hörbar werden, hängt von Material, Gehör und Wiedergabe ab. Die Rechenzeiten gelten für den Raspberry Pi 4 der Messung; auf anderer Hardware ändern sich die absoluten Werte.

Fragen und Antworten

Warum liefert ausgerechnet der genauere Resampler beim hart gekappten Master mehr Werte über 0 dBFS?

Weil er die Wellenform zwischen den Abtastwerten treuer nachbildet. Die harte Kappung bei −1 dBFS erzeugt Kanten mit Anteilen bis an die obere Bandgrenze, und die Wellenform, die diese Abtastwerte beschreiben, schwingt zwischen ihnen über die Kappungsgrenze hinaus: Der True Peak der 48-kHz-Datei lag 16-fach gemessen bei +0,72 dBTP, obwohl kein Abtastwert −1,00 dBFS überschritt.

Ein Resampler berechnet neue Abtastwerte zu anderen Zeitpunkten, liest diese Wellenform also an neuen Stellen ab und trifft dabei auch Stellen nahe den Spitzen. Je flacher sein Durchlassbereich, desto vollständiger bleiben die Höhen erhalten, aus denen die Überschwinger bestehen. filter_size 16 dämpft bei 20 kHz schon um 3,03 dB, glättet damit die Spitzen und kam auf 2 Werte über 0 dBFS; soxr und filter_size 128 lassen die Höhen stehen und kamen auf 41 bis 44.

Das Problem liegt also im Master, nicht im Resampler. Maßgeblich ist der True Peak der 48-kHz-Datei: Wird sie so weit abgesenkt, dass er mit etwas Reserve unter 0 dBTP liegt, oder erfolgt die Begrenzung erst nach der Wandlung, bleiben die Abtastwerte der 44,1-kHz-Datei unter 0 dBFS, auch bei 16 oder 24 Bit.

Lässt sich das Aliasing von swr auch über eine niedrigere Grenzfrequenz beheben statt über filter_size?

Nur auf Kosten der Höhen. Die Grenzfrequenz, bei swr ein 6-dB-Punkt bei 0,97 der halben Abtastrate, also rund 21,4 kHz, legt fest, wo der Übergangsbereich liegt; filter_size legt fest, wie breit er ist. Mit dem Standard von 32 ist er so breit, dass er zugleich unter 20 kHz hinabreicht und über 22,05 kHz hinaus: daher 1,28 dB Verlust bei 20 kHz und nur 14,3 dB Dämpfung bei 22,5 kHz.

Eine niedrigere Grenzfrequenz schiebt diesen breiten Bereich nur nach unten. Die Dämpfung knapp über 22,05 kHz steigt dann, der Verlust unter 20 kHz wächst aber im selben Zug; gemessen wurde das nicht, es folgt aus der Lage des Übergangsbereichs. Schmaler wird der Übergang erst mit einem längeren Filter, und genau das beschreibt Smiths Faustregel: Jede Halbierung des Übergangsbereichs kostet etwa doppelt so viele Rechenschritte je Abtastwert. Auf dem Raspberry Pi der Messung war dieser Preis gering: filter_size 128 brauchte 0,81 statt 0,55 s für 32 Sekunden Stereo.

Spielt es eine Rolle, ob erst auf 16 Bit und dann auf 44,1 kHz gewandelt wird?

Ja. Der Resampler berechnet neue Abtastwerte, die nicht mehr auf dem 16-Bit-Raster liegen, und seine Ausgabe muss danach ein zweites Mal gerundet werden, dann ohne passenden Dither oder mit einer zweiten Rauschschicht. Dazu kommen die Werte über 0 dBFS, die beim Wandeln entstehen können und in einer 16-Bit-Datei gekappt werden. Deshalb steht die Wandlung auf 16 Bit mit Dither am Schluss.

Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Kommentar schreiben

Erfahrungen mit anderen DAWs und Plugins, abweichende Messwerte und Rückfragen sind hier willkommen.

Die E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind mit einem Stern versehen.

ALL ARTICLES & CATEGORIES

CCTV

Diese Rubrik per RSS verfolgen

Cloud & AI

Diese Rubrik per RSS verfolgen

Data Privacy

Alle 16 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Digital Analytics

Alle 53 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Digital Marketing

Alle 36 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

IT & Networks

Alle 17 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Music Production

Alle 14 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Raspberry Pi

Diese Rubrik per RSS verfolgen

Smart Home

Alle 18 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Web Entwicklung

Diese Rubrik per RSS verfolgen

WordPress-Plugins & Tricks

Diese Rubrik per RSS verfolgen