| Next revision | Previous revision |
| events:39c3:tontechnik:post-mortem-lautheitsprobleme-releasing [2026/01/13 09:59] – created simpel | events:39c3:tontechnik:post-mortem-lautheitsprobleme-releasing [2026/01/13 17:13] (current) – [Fazit] Ausführlichere Dokumentation/Kommentierung des Codes im Encoding-Profil simpel |
|---|
| Alle Talks, die an Tag 1 bis 17:26 an die Minions zum Encoding gegeben wurden, haben die richtige Lautheit. Um 18:27 wurde der nächste Talk zum Encoding gegeben. Ab diesem Zeitpunkt sind alle Talks mit der falschen Lautheit gerechnet und released worden. | Alle Talks, die an Tag 1 bis 17:26 an die Minions zum Encoding gegeben wurden, haben die richtige Lautheit. Um 18:27 wurde der nächste Talk zum Encoding gegeben. Ab diesem Zeitpunkt sind alle Talks mit der falschen Lautheit gerechnet und released worden. |
| |
| Am Tag 1 gegen 18 Uhr wurde Masterme aus der Releasing-Kette entfernt. Dies geschah mit voller Absicht, da alle Recordings bereits die korrekte Lautheit enthielten und nicht nochmal gelevelt werden sollten. | Am Tag 1 gegen 18 Uhr wurde master\_me aus der Releasing-Kette entfernt. Dies geschah mit voller Absicht, da alle Recordings bereits die korrekte Lautheit enthielten und nicht nochmal gelevelt werden sollten. Das Projekt wurde daher mit deaktiviertem master_me angelegt, in Unkenntnis des abweichenden Prozesses für den Congress in Teilen des Teams wurde es aber wieder aktiviert. |
| |
| Die Lautheit aller Talks sah dann plötzlich so aus: | Die Lautheit aller Talks sah dann plötzlich so aus: |
| - Intro: + 12 LU zu laut | * Intro: + 6 LU zu laut |
| - Talk: -6 LU zu leise | * Talk: -6 LU zu leise |
| - Outro: ±0 LU | * Outro: ±0 LU |
| |
| Die Nachricht über dieses merkwürdige Verhalten erhielten wir Mitte Tag 2 und konnte im Laufe des Congresses nicht mehr aufgeklärt werden. | Die Nachricht über dieses merkwürdige Verhalten erhielten wir Mitte Tag 2 und konnte im Laufe des Congresses nicht mehr aufgeklärt werden. |
| [[https://github.com/FFmpeg/FFmpeg/blob/ab66bc577681336e4a5e1d1811c251300ddeb621/libavfilter/af_amix.c#L281|Zeile 281 definiert scale_norm]] und ergibt bei 2 Quellen (Intro-Outro-Gebilde und Talk) den Wert **2**: | [[https://github.com/FFmpeg/FFmpeg/blob/ab66bc577681336e4a5e1d1811c251300ddeb621/libavfilter/af_amix.c#L281|Zeile 281 definiert scale_norm]] und ergibt bei 2 Quellen (Intro-Outro-Gebilde und Talk) den Wert **2**: |
| |
| ''s->scale_norm[i] = s->weight_sum / FFABS(s->weights[i]);'' | s->scale_norm[i] = s->weight_sum / FFABS(s->weights[i]); |
| |
| [[https://github.com/FFmpeg/FFmpeg/blob/ab66bc577681336e4a5e1d1811c251300ddeb621/libavfilter/af_amix.c#L233-L236|Zeilen 233 - 236]] widerum nutzen diesen Wert, um daraus die Gewichtung der Einzelsignale für die Mischung von jeweils **0,5** festzulegen: | [[https://github.com/FFmpeg/FFmpeg/blob/ab66bc577681336e4a5e1d1811c251300ddeb621/libavfilter/af_amix.c#L233-L236|Zeilen 233 - 236]] widerum nutzen diesen Wert, um daraus bei eingeschaltetem 'normalize' die Gewichtung der Einzelsignale für die Mischung von jeweils **0,5** festzulegen: |
| |
| ''if (!s->normalize) | if (!s->normalize) |
| s->input_scale[i] = FFABS(s->weights[i]); | s->input_scale[i] = FFABS(s->weights[i]); |
| else | else |
| s->input_scale[i] = 1.0f / s->scale_norm[i] * FFSIGN(s->weights[i]);'' | s->input_scale[i] = 1.0f / s->scale_norm[i] * FFSIGN(s->weights[i]); |
| |
| | ===== -6 LU bei den Talks ===== |
| | |
| | Das Gewicht von 0,5 wird für jede Quelle angewandt. Dieses Gewicht/Faktor entspricht exakt -6 dB, gleichbedeutend mit -6 LU. So erklärt sich, warum die Talks keine -16 bis -18 LUFS sind, sondern zwischen -22 und -24 LUFS liegen. |
| | |
| | ===== ±0 LU im Outro ===== |
| | |
| | Der Audio-Strom aus Intro, Stille und Outro ist etwas länger als der Talk selber, nämlich genau um die Länge des Outros. (Den Talks wird hinten keine Stille in Länge des Outros angehängt.) Somit hat 'aimx' nur noch eine Quelle und die Gewichtung wird ignoriert. Deswegen haben die Outros die korrekte Lautheit. |
| | |
| | ===== +6 LU im Intro ===== |
| | |
| | Die Intros sind sämtlich schon im gerenderten Zustand zu laut. Sie basieren alle auf demselben Ursprungsfile mit folgenden Messwerten: |
| | |
| | Integrated loudness: |
| | I: -6.2 LUFS |
| | Threshold: -18.4 LUFS |
| | |
| | Im nächtlichen, übermüdeten Zustand wurde der Threshold für die Integrated Lautheit gehalten und so kam dieses File in die Massenproduktion. Diese an sich 12 LU zu lauten Intros wurden dann durch das 'amix'-Verhalten auf +6 LU zu viel herunter gepegelt. |
| | |
| | ===== Fazit ===== |
| | |
| | Was lernen wir jetzt daraus? |
| | |
| | 1. Im Encoding-Profil muss explizit für jeden 'amix'-Filter der Parameter 'normalize=0' gesetzt werden. (Dies gilt ausschließlich für Veranstaltungen, bei denen die Eingangssignale gesichert technisch ok sind und bei denen das automatische Leveling in der Releasing-Kette ausgeschaltet ist.) |
| | 1. Intro und Outro müssen vom Audio-Department geprüft werden. |
| | 1. Jede Änderung im Encoding-Profil oder die Lautheit beinflussenden Projektparametern muss vom Audio-Department erneut geprüft werden. |
| | 1. Ausführlichere Dokumentation/Kommentierung des Codes im Encoding-Profil. (Das den Pegel absenkende Verhalten scheint anfangs (2018) durchaus aufgefallen und bekannt gewesen zu sein. So findet sich in einigen Profilen nämlich ein nachlaufender volume-Filter mit den Einstellungen volume=1.8 bzw. volume=1.9. Akustisch scheint das also aufgefallen und nahezu ausgeglichen worden zu sein. Jedoch findet sich keine Kommentierung, warum dieser Filter so eingesetzt wurde.) |
| | |
| | Bestenfalls könnte man entsprechende Prüfungen mit einem Leer-Release verbinden, bei dem die Eingangssignale Intro, Outro und "Ersatzsignale Talk" sowie "Ersatzsignale Translator" enthalten sind. Die Ersatzsignale sollten technisch eindeutig und nachvollziehbar sein und eventuelle Probleme wie Pegelabweichungen, Spurtausch, Mono-Stereo-Fehler und Phasenlage sichtbar machen. |