Knackser in der Aufnahme und Ausstzer in der Wiedergabe: Der Audio-Buffer

von livebox, 08.01.13.

Sponsored by
QSC
  1. livebox

    livebox Mod Emeritus Ex-Moderator HFU

    Im Board seit:
    22.09.06
    Zuletzt hier:
    23.11.18
    Beiträge:
    10.527
    Ort:
    Landkreis BB oder unterwegs
    Zustimmungen:
    1.511
    Kekse:
    59.164
    Erstellt: 08.01.13   #1
    Mal wieder ein Thema, welches aus dem x32 Userthread entstand. Da es aber allgemein um Recording geht, ist es in dieser Ecke besser aufgehoben.

    Vorweg: Ich kann nicht für die Richtigkeit dieses Artikels garantieren. Ich kenne mich nicht wirklich gut mit Audiohard- und software aus. Was ich hier geschrieben habe, habe ich mir zusammengereimt aus Stücken nachgeschlagenen Wissens, eigenen Wissens und Erfahrung. Da ich aber beruflich aus der IT-Ecke komme, glaube ich, ganz ordentlich gereimt zu haben. Sollte es jemand besser wissen (und nicht nur besser vermuten, oder wenn doch dann nicht unbegründet), möge er mich bitte per PN kontaktieren. Ich verbessere es dann gerne, natürlich auch mit entsprechenden Lorbeeren.



    Buffer (deutsch: Puffer) sind kleine Zwischenspeicher für Daten; Audiobuffer arbeiten als FIFO. Benötigt werden sie, weil Daten vorgehalten müssen, während... nun ja, während was? Der Prozessor eines Rechners hat neben dem laufen lassen einer Audio-Anwendung noch ein paar andere Dinge zu tun - z.B. muss er so ganz nebenbei ein Betriebssystem am Leben erhalten. Zwar wird ein Prozessor auf die laufenden Anwendungen aufgeteilt. Doch passiert dies nicht in Kuchenstücken, sondern in zeitlicher Abfolge. Jeder Prozess bekommt also eine bestimmte Rechenzeit zugewiesen. Ist diese abgelaufen, wird der Prozess wieder schlafen gelegt bis er wieder dran kommt. (Das Procedere der Zeitzuteilung ist heutzutage hinreichend komplex und hier auch nicht relevant... nur so viel, es geschieht nicht einfach nach dem Karusell-Prinzip.) Das bedeutet: Einer Anwendung (oder einem Teil von ihr, wenn sie in mehreren Prozessen oder Threads läuft) stehen kurzzeitig 100 % der CPU zur Verfügung, und dann für eine Weile wieder gar nichts.
    Zum Abspielen von Audiomaterial wäre das natürlich extrem uncool, wenn ständig Unterbrechungen und Wartezeiten drin wären - auch wenn sich das in sehr kleinen Zeiteinheiten abspielt. Also wird die Soundkarte vorher mit Material gefüttert, das sie abspielen soll, während der Audio-Prozess schlafen muss.
    Umgekehrt bei der Aufnahme auch: Die Soundkarte muss die einkommenden Signale zwischenspeichern, bis der DAW Prozess wieder aufwachen darf und die Daten annehmen kann.

    Nun hat der Buffer also eine bestimmte Größe. Und ganz logisch: Je größer er ist, desto mehr Daten sind in dieser Buffer-Warteschlange gespeichert und desto länger dauert es, bis sie nach draußen (oder drinnen) kommen. Die Verzögerung wird Latenz genannt. Im Interesse niedriger Latenzen ist es also gut, die Buffergröße minimal zu halten.
    Wenn der Buffer allerdings zu klein ist, kann es beim Abspielen von Audio vorkommen dass er leer läuft, während der Audio-Prozess noch schläft - also kommt es zu kurzen Aussetzern. Bei der Aufnahme kann es vorkommen, dass er überläuft, weil der Prozess noch nicht wieder aufgewacht ist - also gehen ein paar Daten verloren und es knackst auf der Aufnahme. (Da Buffer oft als Ringspeicher implementiert sind, müssen nicht zwangsläufig die letzten Daten verloren gehen, sondern können auch die ersten im Buffer überschrieben werden. Ist im Endeffekt aber egal, knacksen tut es irgendwo, halt ein paar Millisekunden früher oder später.)


    Wie nun auch wieder logisch sein dürfte, gibt es zwei Möglichkeiten, die Latenz zu reduzieren:
    - mehr Rechenpower
    - oder aber, und das dürfte in den allermeisten Fällen der angebrachte Weg sein: Den Bedarf an Rechenleistung anderer Programme reduzieren.

    Noch so viel Rechenleistung bringt nichts, wenn es Prozesse gibt, die extrem viel Leistung für sich einnehmen. Besonders schlimm ist das bei vorinstallierten Computern, auf denen noch unzählige schwachsinnige Anwendungen mitgebracht werden. Vor allem bei Notebooks, bei denen noch diverse Software für Spezialtasten drauf ist, für Fingerabdruckleser und so weiter. Doch auch schon eine nackte Windows-Installation hat mehr als genug Prozesse im Hintergrund laufen. Es empfiehlt sich deshalb dringend a) die Installation minimal zu halten und b) den Computer mal ordentlich zu entrümpeln (und das auch ab und an zu wiederholen). Wie das geht, steht z.B. hier in den gepinnten Threads:
    https://www.musiker-board.de/f258-computertechnik-rec/

    Latenz hängt allerdings nicht alleine am Rechner, dessen Leistung und Prozessen, sondern auch am Interface. Wie immer muss das Gesamtsystem betrachtet werden.



    Die Größe des Audio-Buffers kann vom Benutzer eingestellt werden. Wie sollte die Buffergröße eingestellt sein? Diese Frage kann nicht pauschal beantwortet werden. Die Parameter hängen ab von der Rechenleistung, der Nutzung dieser Leistung, der Soundkarte und wer weiß von was noch alles. Es gibt nur einen Weg: Ausprobieren, und zwar praxisnahe, lange und gründlich!


    Zur Praxisrelevanz von Latenz ein paar alltägliche Szenarien:
    - reines Recording
    Hier ist die Latenz unwichtig. Ob das Material jetzt 10 ms früher oder später in der DAW landet, ist irrelevant. Selbst wenn aus der DAW ein Playback abgespielt wird, zu dem neue Spuren aufgenommen werden: Die DAW errechnet die Zeitversetzung und passt die neuen Spuren dementsprechend in das bestehende Projekt ein. Bei manchen DAWs muss der Latenzausgleich wohl explizit aktiviert werden. (Dank für den letzten Satz an Trommler53842.)
    Also: Buffergröße hoch und auf Sicherheit setzen.

    - Routing durch den Rechner und wieder raus
    Wird z.B. verwendet für Monitoring während Aufnahmen oder der Rechner wird als Effektgerät benutzt. Die Eingangs- und Ausgangslatenz addieren sich, und je nach Anwendung kommt auch noch eine Latenz von der Rechenzeit einer Klangbearbeitung oben drauf. Latenz ist hier anwendungskritisch und muss minimal gehalten werden.
    Meine persönliche Meinung: Im Studio empfiehlt es sich, die Buffergröße eine Stufe höher als notwendig einzustellen. Es ist nicht nur extrem ärgerlich, wenn durch Knackser ein hammergeiler Take verloren geht, sondern auch höchst unprofessionell. (Auch für Heim- / Projektstudios. Denn das sind vermeidbare Fehler.) Kleine Knackser fallen beim ersten Abhören der Aufnahme vielleicht sogar nicht mal gleich auf und können hinterher einen großen logistischen Aufwand nach sich ziehen, um einen Take noch mal zu wiederholen - manchmal ist es sogar unmöglich.
    Im live-Einsatz sollte der Buffer besser um 2-3 Stufen über dem empirischen Minimalwert liegen. Murphy's law. Und eigene Erfahrung damit :D Sollte die Latenz dadurch zu hoch sein, muss optimiert werden. (Oder eben auf Risiko an der Buffergröße gespart.)

    Für diesen Anwendungsfall gibt es oft auch Alternativen, bei denen das Audiosignal nicht durch den Rechner muss. Ist am Ende des Tages oft eine Kostenfrage, die aber gut abgewogen sein will, weil oft mehr dran hängt als man im ersten Moment denkt. (Schadenszahlung, Ruf, Folgeaufträge,...)

    - Softwareinstrumente
    Die Latenz der Steuerdaten vom Eingabegerät zur DAW sind vernachlässigbar. Die Latenz ergibt sich aus der Rechenzeit des Software-Instruments und der Ausgangslatenz.

    Auch zu Software-Instrumenten gibt es Alternaiven. (Wer hätte das gedacht :D)



    So viel mal zum Thema. Bei Fragen fragen.

    MfG, livebox
     
    gefällt mir nicht mehr 6 Person(en) gefällt das
Die Seite wird geladen...

mapping