ars ultima
HCA Recording
Latenzen bei Audio-Interfaces
Immer wieder wenn es ums Aufnehmen mit dem PC geht taucht das Thema Latenz auf. Manche stoßen einfach auf Probleme mit Verzögerungen, andere benutzen den Begriff ständig, ohne überhaupt zu verstehen was dahinter steckt. Und geben dann oft falsche oder nicht weiterhelfende Antworten wie das liegt an deiner Onboard-Soundkarte, du musst dir ein USB-Interface kaufen.Was ist Latenz?
Latenz heißt zunächst mal einfach Verzögerung, die beim Übertragen und Verarbeiten von Signalen auftreten kann. Hier geht es aber konkret um die Latenz, die beim Aufnehmen und Wiedergeben von Audiosignalen auf dem PC über die Ein- und Ausgänge einer Soundkarte bzw. eines Audiointerfaces entsteht. Es gibt also eine Eingangs- und eine Ausgangslatenz.Wodurch entsteht die Latenz?
Auf dem Weg von der Soundkarten-Eingangsbuchse bis in den Arbeitsspeicher und vom Speicher an den Soundkarten-Ausgang gibt es diverse Möglichkeiten, die das Signal verzögern. Diese Verzögerungen sind bei jeder Soundhardware anders, können von vielen Dingen abhängen, und man kann dagegen auch im Grunde nichts machen. Meistens sind sie aber eh recht gering. Der dicke Batzen an Latenz aber (auf den man jedoch Einfluss hat) entsteht durch das Zwischenspeichern der Audiodaten. Ein unmittelbares Streamen ist bei einem Audiostrom nicht möglich, denn es kann immer mal sein, dass der Rechner irgendwas anderes zu tun hat, die Verbindung kurz unterbrochen wird usw. Dann würden direkt Samples (aus denen so ein digitaler Audiostrom besteht) fehlen und man würde das in Form von Knacksern usw. hören. Daher werden die Daten erst in einen Puffer geladen, aus dem sie dann unterbrechungsfrei ausgelesen werden können, selbst wenn der Strom vor dem Puffer mal kurz abreißt. Dieser Puffer muss aber zunächst geladen werden und das dauert eben einen Moment. Dadurch entsteht dann eine Latenz.Welche Probleme entstehen durch die Latenz?
Im normalen Windows-Betrieb hat man in der Regel keine Problem mit der Latenz. Dass die Musik des Mediaplayers erst kurz nach drücken der Play-Taste zu hören ist, ist im Normalfall egal. Beim Musik machen mit dem Rechner dagegen ergeben sich theoretisch zwei Probleme:1. Monitoring. Damit meint man das sich selbst hören beim Spielen oder Aufnehmen. Wenn ich z.B. eine E-Gitarre an den PC anschließe und über die PC-Boxen hören will, dann hat man eben die Verzögerung auf dem Signalweg. Man schlägt also die Saiten an und der Ton ist erst einen Moment später aus den Boxen zu hören. So kann man natürlich nicht spielen. Gleiches gilt für ein MIDI-Keyboard, mit dem ich Software-Instrumente spiele. Allerdings hat man da nur mit der Ausgangslatenz zu kämpfen, denn die MIDI-Übertragung ist quasi latenzfrei.
2. Aufnehmen mehrerer Spuren im Overdub-Verfahren. Man hat z.B. eine Schlagzeug-Spur vorliegen und will dazu eine Gitarren-Spur aufnehmen. Dann setzt man sich Kopfhörer auf, hört darauf das Schlagzeug und spielt dazu Gitarre. Aufgrund der Ausgangslatenz höre ich aber das Schlagzeug zu spät, aufgrund der Eingangslatenz wird meine Gitarre zu spät aufgenommen. Somit sind die beiden Spuren dann nicht synchron, obwohl man eigentlich perfekt im Timing gespielt hat.
Wie lassen sich diese Probleme lösen?
Das Monitoring-Problem lässt sich dadurch lösen, dass man das Signal erst gar nicht durch den Computer laufen lässt, sondern stattdessen Direct Monitoring oder Hardware Monitoring verwendet. Dabei wird das Eingangssignal mehr oder weniger direkt zum Soundkarten-Ausgang geleitet. Das sollte mit jeder Soundkarte bzw. mit jedem Interface möglich sein. Bei Onboard-Soundkarten macht man das einfach über den Windows-Wiedergabemixer. Die meisten einfachen USB-Interfaces haben einen Regler mit dem man das Eingangssignal zumischen kann. Größere Interfaces haben meist einen integrierten Digitalmixer, der sich per Software steuern lässt. Über den können die Ein- und Ausgangssignal gemischt und an die Ausgänge geleitetet werden. Bei manchen Geräten wirbt der Hersteller großspurig mit Zero Latency Monitoring - damit ist genau das gemeint, weshalb das auch eigentlich gar kein erwähnenswertes Feature ist.Die Unsynchronität der Spuren beim Overdubbing könnte man theoretisch manuell lösen, indem man die neu aufgenommen Spur entsprechend zurück schiebt. Ist aber nicht nötig: Jedes aktuelle Mehrspur-Aufnahmeprogramme sollte das automatisch machen. Somit existiert dieses Problem eigentlich nicht auf näheres gehe ich gleich noch ein.
Und was ist mit Software-Effekten und Software-Instrumenten?
Ja, da sind wir nun an dem Punkt, wo eine niedrige Latenz wirklich erforderlich ist. Es gibt nunmal Situationen, wo man das Hardware Monitoring nicht nutzen kann. Nämlich bei notwendigen Softwareeffekten (verbreitetste Anwendung wohl E-Gitarre spielen mittels Amp-Modelling-Software) und bei Software-Instrumenten, die man z.B. mit einem MIDI-Keyboard spielt.Ich schrieb ja oben, dass die Latenz vor allem durch das Puffern der Daten entsteht. Je größer dieser Puffer ist, umso größer ist logischerweise auch die Latenz. Für die üblichen Anwendungen stellt sich der Windows-Soundtreiber den Puffer automatisch so groß ein, dass die Wiedergabe problemlos funktioniert. Bei bestimmten Audioanwendungen kann man den aber auch manuell einstellen. Da stellt man dann aber schnell fest, das man da nicht in so niedrige Bereiche kommt, dass die Latenz unhörbar klein ist. Weil vorher schon längst Knackser/Aussetzer/Fehler im Sound sind. Das Windows-Standard-Treibermodell ist einfach nicht für niedrige Latenzen ausgelegt.
Daher hat die Firma Steinberg mal den ASIO-Treiberstandard erfunden. Über den kann die Software sehr direkt mit der Hardware kommunizieren auch mit sehr kleinen Puffern. Recording-Soundkarten und Interfaces werden immer mit solchen ASIO-Treibern ausgeliefert. Das ist auch ein Grund, warum in vielen Köpfen noch drinsteckt, dass man sich ein Recording-Interface kaufen muss um eine niedrige Latenz zu bekommen. Allerdings ist es mittlerweile so, dass z.B. auch Creative für ihre Soundblaster-Karten einen ASIO-Treiber mitliefert. Vor allem aber hat ein netter Herr namens Michael Tippach einen universellen ASIO-Treiber namens ASIO4ALL entwickelt, den er kostenlos im Internet zum Download anbietet. Der arbeitet mit allen möglichen Soundkarten (mehr oder weniger gut) zusammen, wodurch auch Benutzer von Onboard-Soundkarten in den Genuss von geringer Latenz kommen. Gleichzeitig gibt es auch zunehmend billige USB-Recording-Interfaces mit offiziellem ASIO-Treiber, der aber auch offenbar nicht so gut programmiert ist und man nur schlecht eine unhörbar niedrige Latenz eingestellt bekommt.
Die Puffergröße kann man in jedem ASIO-Treiber einstellen. Bei einigen direkt mit Werten von meist 64 bis 2048 Samples. Dieser Wert gilt jeweils für Eingangs- wie Ausgangspuffer. Bei der Digitalisierung eines Audiosignals werden zu bestimmten Zeitpunkten Proben (Samples) genommen und die Amplitude zu diesem Zweitpunkt als Zahlenwert gespeichert. Ein Sample ist also die kürzeste Einheit eines digitalen Audiosignals. Wenn man mit der üblichen Abtastrate von 44,1KHz arbeitet, dann ist ein Sample 1/44100 Sekunden lang, also 0,02268 Millisekunden. Wenn man nun einen ASIO-Puffer von 512 Samples einstellt, dann betragen Eingangs- und Ausgangslatenz theoretisch folglich jeweils 11,6ms. Hinzu kommt dann in der Praxis eben eine mehr oder weniger große Latenz, die durch die Soundkarte und das drumherum an sich erzeugt wird. Bei manchen ASIO-Treibern heißt diese Einstellmöglichkeit nicht Puffergröße oder Buffersize sondern wirklich Latenz oder Latency und man stellt dort eben einen Millisekunden-Wert ein (oder gar nur so grobe Werte wie low, middle und high). Tatsächlich stellt man natürlich auch dort die Puffergröße ein.
Es reicht übrigens nicht den ASIO-Treiber einfach zu installieren die Software muss ihn auch benutzen. Daher ist der erste Schritt bei einer Audiosoftware (die natürlich ASIO-Treiber unterstützen muss - beim beliebten Audacity ist das nicht der Fall) immer den gewünschten ASIO-Treiber auszuwählen. Man kann daher auch problemlos zusätzlich ASIO4ALL installieren und ihn dann bei Bedarf alternativ zum ASIO-Treiber, der eigentlich zum Recording-Interface dazugehört, benutzen.
Bei mir sind nacheinander aufgenommene Spuren aber nicht synchron!
In der Tat berichten hier öfters mal Leute von diesem Problem, obwohl die Software ja die Spuren automatisch angleichen sollte. Das hat aber mit der tatsächlichen Latenz nicht direkt was zu tun, stattdessen heißt das zunächst mal nur, dass das Aufnahmeprogramm die neue Spur nicht passend zurück schiebt. Irgend woher muss das Programm wissen, um wie viel sie die Spur zurück schieben soll. Diesen Wert liefert der ASIO-Treiber. Wenn in einem Programm die Latenzzeit angezeigt wird, dann ist das immer dieser Wert (und nicht die tatsächliche Latenz; die kann ein Programm gar nicht wissen, das kann man nur messen), und um diesen wird dann auch die Spur verschoben. Die eingestellte Puffergröße ist da immer eindeutig und das mindeste, aber wie oben gesagt kann dann doch noch was hinzukommen. Und das ist dann auch meist das Problem. Wenn ein Soundkartenhersteller sein Gerät kennt und weiß welche Latenz es noch so erzeugt, dann schreibt der das so in den Treiber rein, so dass die Aufnahmnesoftware einen möglichst realistischen Latenzwert mitgeteilt bekommt. Wenn ich z.B. bei meiner M-Audio Delta Soundkarte einen ASIO-Puffer von 256 Samples einstelle, dann nennt der Treiber als Eingangslatenz 284 und als Ausgangslatenz 299 Samples.(sprich: Diese Werte zeigt mir die Aufnahmesoftware an und diese benutzt sie beim Latenzausgleich). Und das kommt bei mir auch recht gut hin. Das ist aber wohl leider nicht immer so.Da der ASIO4ALL-Treiber ja eh für diverse Soundkarten ausgelegt ist die unterschiedlichste Latenz erzeugen kann man dort manuell solche Korrekturwerte eingeben. Und zwar hat man in der erweiterten Darstellung oben rechts Regler für den Latenzausgleich. Diese haben eben mit der tatsächlichen Latenz nichts zu tun, sondern erhöhen nur den Wert entsprehend, den die Software dann übernimmt. Wenn man also einen Puffer von 512 Samples einstellt, beim Eingangslatenzausgleich 32 Samples und beim Ausgangslatenzausgleich 64 , dann bekommt die Aufnahmesoftware 544 Samples Eingangslatenz und 576 Samples Ausgangslatenz mitgeteilt. Ob auch die Hersteller mancher Audiointerfaces in den zugehörigen ASIO-Treibern diese Möglichkeit bieten, weiß ich nicht. Sinnvoll wäre es offenbar in einigen Fällen.
Man kann aber in der Aufnahmesoftware einen entsprechenden Korrekturwert eingeben, zumindest bei den mir bekannten Programmen Reaper und Magix Samplitude. Bei Reaper macht man das in den Preferences, dort im Abschnit Audio->Recording. Ganz unten ist standardmäßig der Haken bei Use audio driver reporterd latency. Das kann man auch deaktiveren, und dann hat man gar keine Latenzkorrektur. Rechts daneben kann man dann eben manuell Werte eingeben. In Magix Samplitude findet man in den Systemoptionen im Bereich Aufnahme die Möglichkeit einen Aufnahme-Offset einzugeben.
Um da jeweils Werte einzusetzen muss man sie natürlich kennen. Am einfachsten kann man das vor der ersten richtigen Aufnahme messen. Man legt einfach eine Testspur an (am besten einen Impuls oder einen Klick, dessen Start man eindeutig sehen kann, wenn man ganz nah ranzoomt), verbindet Ein- und Ausgang der Soundkarte miteinander, und nimmt eine neue Spur auf während man die erste abspielt. Den Versatz kann man dann messen, bei jeder Aufnahmesoftware sollte es möglich sein die Maßeinheit auf Samples einzustellen. Natürlich misst man so nur die Gesamtlatenz und weiß nicht, wie sich diese auf Ein- und Ausgangslatenz verteilen. Für das Problem der versetzten Spuren bei einer Audio-Overdub-Aufnahme ist das aber irrelevant.
Welche Bedeutung hat das Latenzproblem also in der Praxis?
Wie oben ausführlich erklärt ist eine hohe Latenz für die meisten normalen Aufnahmesituation also irrelevant. Man sollte sich also nicht zu sehr Sorgen machen, wenn man nur normales Audio aufnehmen will und sich ein Interface kauft, wo alle sagen, dass man damit keine niedrigen Latenz hinbekommt. Wenn man aber nun tatsächlich eine geringe Latenz braucht und die mit der Onboard-Soundkarte zunächst mal offenbar nicht hat, dann lautet die Lösung nicht einfach kauf dir ein USB-Interface. Denn möglicherweise erzielt man mit ASIO4ALL und der Onboard-Soundkarte niedrigere Latenzen als mit einem USB-Interface und dessen zugehörigem ASIO-Treiber. Irgendwelche Latenzwerte, die mir die Software anzeigt, sagen auch nichts darüber aus, ob diese Latenz die tatsächliche ist oder ob man mit dieser arbeiten kann weil es ja einfach nur der Wert ist, den der Treiber nennt bzw. den man dort eingestellt hat. Somit bringt es auch nichts mit diesen Werten zu prahlen oder zu fragen, ob diese Werte gut oder normal sind. Zumal Zahlenwerte nicht interessieren sondern nur das Gehör, da ist auch jeder unterschiedlich empfindlich.Die einzig relevante Frage ist also: Bekomme ich mit dem Setup (also Computer, Soundkarte/Interface, Treiber) eine so niedrige Latenz eingestellt, dass ich sie nicht mehr wahrnehme, aber es dennoch keine Störungen im Sound gibt?
Pauschale Empfehlungen zu Audiointerfaces kann man schlecht geben. Offenbar ist es so, dass interne Lösungen (Also PCI oder PCIe) doch gewisse Vorteile gegenüber USB und FireWire zu haben scheinen. Speziell bei USB scheint es wohl nicht so einfach zu sein. Im Endeffekt liegt es aber hauptsächlich daran, ob die Interface-Hersteller gute Treiber programmieren. Mittlerweile bekommen sie das wohl ganz gut hin, es gibt viele USB-Interface-Benutzer, die wohl problemlos mit unhörbar niedrigen Latenzen arbeiten können. Im Endeffekt liegt es vor allem am Treiber, daher hilft es auch, mal auf der Website des Herstellers nachzusehen, ob es nicht verbesserte aktuelle Treiber gibt.
Und was ist mit Macs?
Die Standard-Audioarchitektur Core Audio unter Mac OS X ermöglicht niedrige Latenzen. Daher ist dort die Behelfslösung ASIO nicht nötig. Die OS X Treiber bieten dann auch keine Möglichkeit manuell den Puffer einzustellen, da Core Audio automatisch den Wert so einstellt, dass eine fehlerfreie Aufnahme und Wiedergabe möglich ist.
- Eigenschaft