Welche Bedeutung haben Latenzen im Audio PC?

music is my escape
Aktiver Hörer
Beiträge: 1528
Registriert: 03.07.2012, 10:56
Wohnort: Leipzig

Beitrag von music is my escape »

Hallo an alle,

Ergänzend zu Andrees Einwurf dieses Schaubild von der wtf-Website:

Bild

Es ist auch nach Jahren immer wieder erstaunlich zu hören, was für einen krassen Unterschied die Justage dieser Stellschrauben im Hörerlebnis ausmachen können. Bei einem neulich für einen Freund aufgesetzten und eingerichteten Volumio ist die Quantität der hörbaren Auswirkungen von versch. Latenzen beinah nicht zu glauben, und dies in einer Anlage, die zusammen soviel gekostet hat, wie einige Mitglieder hier aktuell für drei, vier Feinsicherungen ausgeben. :mrgreen:

Viele Grüße,
Thomas
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Es gibt nun einmal mannigfaltig Schaltstellen bzw. Problempunkte:
  • Auflösung Zeitgeber. Zeitgeber im PC haben keine beliebig feine Auflösung. Wer einmal genaue Zeitmessungen damit versucht hat, kennt die Problematik
  • Zuteilung von Prozesszeiten/Zeitscheiben. Das erledigt ein Scheduler, der nach proprietären Algorithmen Zeitzuteilungen erledigt. Wenn ein Prozess noch nicht dran ist, dann muss er warten
  • Prozessprioritäten. Sie beeinflussen ebenfalls die Zuteilung an Prozessorzeit. Ein Prozess mit niedrigerer Priorität muss warten, d.h. es können höhere Prioritäten dazwischenfunken. Logischerweise können nicht alle Prozesse eine Echtzeitpriorität haben, dann läuft gar nichts mehr.
  • Hyperthreading. Prozesse teilen sich Hardware-Ressourcen. Dabei sind FPUs (floating point unit) ausgenommen, d.h. virtuelle CPUs können nicht gleitkomma rechnen. Es entstehen also Ressourcenkonflikte
  • Callback-Funktionalität. Ein Prozess fragt z.B. ein Device nicht ständig ab (polling) sondern bekommt eine Rückmeldung (Beispiel Pufferumschaltung Asiotreiber). Die Rückmeldung wird erst dann verarbeitet, wenn der zugehörige Thread wiederum Prozessorzeit bekommt.
  • Events. Bei Windows (in anderen OS aber ähnlich) gibt es haufenweise Events, die mit der Audio-Ausgabe rein gar nichts zu tun haben. Mausbewegung, Bildschirmaktualisierung, Tastatur, Uhrzeit, DMA (direct memory access), USB Ein-/Ausgang, Ethernet, Dienste usw. usw. Man muss sich nur mal mit dem SysInternals Prozess-Explorer ansachauen, was da so alles passiert und der zeigt noch längst nicht alles.
Musik läuft also nicht kontinuierlich durch einen PC wie Wasser durch eine Leitung. Man sollte sich das besser so vorstellen wie ein möglichst kontinuierlicher Fluß bestimmter Packchen durch ein großes Paketverteilzentrum. Mit Fließbandarbeitern, Betriebsrat, Förderbändern, Pausenzeiten, Expresspaketen, Stau beim Pakettransport und was auch immer. Im PC geht es halt nur mit höherer Frequenz.

Die einzige wirkliche technische Lösung heisst Mehrfachpuffer, zumindest Doppelpuffer. Ein Puffer wird gefüllt während der zweite geleert wird. Das Befüllen muss schneller gehen als das Leeren. Und beim Leeren bestimmt der Verbraucher den Takt. Ist der eine Puffer leer, wird sofort der nächste Puffer verwendet und der leere wieder befüllt. Dann ist es letzlich egal, welche Abläufe ansonsten im PC oder Paketverteilzentrum stattfinden.
Idealerweise müssten dann die Puffer aber dann auch unanbhängige Adress- und Datenleitungen verwenden, sonst bilden diese den Ressourcen-Engpass. Und hier scheitert es dann meistens, man verlässt sich i.a. darauf, dass der Betrieb dort fix genug (Taktfrequenz bis GHz) ist.

Ist beim Empfänger, z.B. DAC so ein hinreichend großer Doppelpuffer realisiert, ist es egal, was auf dem PC stattfindet. Mit einer Ausnahme: es dürfen auf den gemeinsamen elektrischen Verbindungen (Masseleitung, Erdleitung etc.) keine zusätzlichen hochfrequenten Wechselwirkungen stattfinden, die dann "hintenrum" Störungen übertragen.

Aber obacht! Steckt im Empfänger (DAC) wiederum ein hochintegrierter Chip (FPGA, DSP, Lichtleiter/Ethernet-Receiver o.ä.), dann mag es zwar sein, dass auch größere Datenmengen gepuffert werden (das System spielt nach Abziehen der Leitung noch eine Weile weiter), aber dann ist auch die Prozesslogik wiederum in den DAC verlagert. Dann gibt es zwar nicht beliebig viele Prozesse und Threads, aber evtl. doch wieder Timing-Probleme beim Datenzugriff.

Fazit: Latenz ist ein großes Wort. Ob der PC die Musik heute oder morgen perfekt spielt ist nicht das Latenzproblem. Die Probleme finden beim koninuierlichen Datenstrom statt. Wenn Latenzen hier für eine turbulente anstelle einer laminaren Strömung sorgen, dann ist es bereits schiefgegangen.

Grüsse
Uli
Bild
Hifidistel
Aktiver Hörer
Beiträge: 267
Registriert: 11.12.2019, 14:03

Beitrag von Hifidistel »

So gesehen scheint ja doch viel für die CD zu sprechen - mal abgesehen von den Lesefehlern bei der optischen Erfassung der Datenpakete. Oder es spricht für simple Core-Lösungen, die für Audioanwendungen optimiert sind...
Lg
Sascha
Bild
StreamFidelity
Aktiver Händler
Beiträge: 1599
Registriert: 24.09.2017, 14:50
Wohnort: Hansestadt Rostock
Kontaktdaten:

Beitrag von StreamFidelity »

Hallo Horst,
Trinnov hat geschrieben: 05.01.2021, 12:46 - Ein Thesycon USB-Treiber in dem man auch den USB Puffer und nicht nur den ASIO Puffer einstellen kann
Wie kann ich den ASIO Puffer getrennt vom USB Puffer im Thesycon USB-Treiber einstellen?
Trinnov hat geschrieben: 05.01.2021, 12:46 Ein herzliches Danke auch an Gabriel für die aufwändige Aufarbeitung eines wichtigen Audio-PC Themas mittels dieses Threads.
Das geht bei mir jetzt aber runter wie Öl. Vielen Dank. :D

Hallo Thomas,
music is my escape hat geschrieben: 05.01.2021, 13:15 Ergänzend zu Andrees Einwurf dieses Schaubild von der wtf-Website:

Bild
Vielen Dank für den Hörbericht. Da die Forum Software keine "unsichere" Verlinkung erlaubt habe ich das Bild über die sichere Webside PicR neu verlinkt.

Grüße Gabriel
Bild
Trinnov
Aktiver Hörer
Beiträge: 971
Registriert: 13.11.2009, 19:02

Beitrag von Trinnov »

Hallo Gabriel,

ich habe von meiner grafischen Oberfläche der Puffer Einstellung drei Screenshots gemacht und dir hier in der Dropbox abgelegt.
https://www.dropbox.com/sh/oyulqpyje6c2 ... GmZLa?dl=0
Das geht schneller als der Weg über Abload usw.
Du darfst die Screenshots aber gerne hier im Forum einbinden.

Das ist ein Treiber von Holo3D, den ich für meinen Singxer SU-1 nutze.
Wie gesagt ist neben dem ASIO Buffer auch noch der USB Buffer einstellbar.

Je nach Hersteller der USB Hardware sind eben einfache oder bessere Treiber dabei, die per grafischer Oberfläche eine genaue Einstellung erlauben anstatt den Nutzer zu entmündigen. Das ist eine Kostenfrage hat mir mal ein USB DDC Hersteller erzählt. Thesycon verlangt dafür richtig Geld und das ist nur über den Verkauf von vielen Geräten bzw. Platinen wieder reinzuholen. Oft wird es daher einfach gehalten.

Ich kenne diese Oberfläche schon lange. Eine Zeitlang hatte ich diese Treibervariante noch nicht und habe stattdessen die Puffer Größen für USB und ASIO in der Registry gesetzt. Mit dem Klicken von entsprechenden Reg-Files konnte man dann im fliegenden Wechsel zum Testen die Werte umschalten. Diese Oberfläche ist ja auch nur eine Remote. Daher ist der alternative Weg über die Registry der Plan B.
Speziell ein niedriger USB Puffer bringt bei mir klanglich viel. Man sollte es aber auch nicht übertreiben. Einfach rantasten.

Von Thesycon gibt es sogar Treiber die das vollkommen automatisch auswählen. Erfahrungsgemäß werden dann die USB Puffer Werte viel größer als notwendig gewählt und der PC spielt klanglich nicht so gut wie er eigentlich könnte. Man nimmt eben sichere Puffer Größen und hat keinen Stress mit den Nutzern.

Beim ASIO Puffer überlasse ich die Einstellung allerdings doch der Automatik. Siehe meinen entsprechenden Screenshot.
Denn wenn man einen kleinen festen Wert für 44.1 wählt und das flüssig spielt, kans man sicher davon ausgehen dass es allerspätestens bei 192K sicher crasht. Die Automatik funktioniert hier gut und es passt für alle Sample Rates. Klanglich bemerke ich keine Abstriche im Gegensatz zur USB Einstellung.

Viele Grüße,
Horst
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Horst,

welche Registry-Einträge sind dafür zuständig?

Grüsse
Uli
Bild
StreamFidelity
Aktiver Händler
Beiträge: 1599
Registriert: 24.09.2017, 14:50
Wohnort: Hansestadt Rostock
Kontaktdaten:

Beitrag von StreamFidelity »

Hallo Uli,
uli.brueggemann hat geschrieben: 05.01.2021, 13:26Man sollte sich das besser so vorstellen wie ein möglichst kontinuierlicher Fluß bestimmter Packchen durch ein großes Paketverteilzentrum. Mit Fließbandarbeitern, Betriebsrat, Förderbändern, Pausenzeiten, Expresspaketen, Stau beim Pakettransport und was auch immer.
Eine schöne Analogie. :D

Hallo Horst,

vielen Dank. Das ist mir neu, denn mein T+A Treiber (vorher Denafrips) stammt auch von Thesycon und diese Auftrennung ist nicht vorhanden. Hier sind Deine Bilder.

Bild

Bild

Bild

Grüße Gabriel
Bild
Trinnov
Aktiver Hörer
Beiträge: 971
Registriert: 13.11.2009, 19:02

Beitrag von Trinnov »

uli.brueggemann hat geschrieben: 05.01.2021, 16:54 Horst,

welche Registry-Einträge sind dafür zuständig?

Grüsse
Uli
Hallo Uli,

da muss ich erst mal wieder suchen, wo ich die reg-Files hin habe. Ich hatte das damals mühsam ausgeknobelt.
Dann melde ich mich wieder.
Das könnte nämlich auch für Gabriel interessant sein, wenn er kein erweitertes Control Panel findet.

Viele Grüße,
Horst
Bild
Dipolaktiv
Aktiver Hörer
Beiträge: 571
Registriert: 24.11.2019, 11:48
Wohnort: Zürich

Beitrag von Dipolaktiv »

uli.brueggemann hat geschrieben: 05.01.2021, 13:26
....
Ist beim Empfänger, z.B. DAC so ein hinreichend großer Doppelpuffer realisiert, ist es egal, was auf dem PC stattfindet. Mit einer Ausnahme: es dürfen auf den gemeinsamen elektrischen Verbindungen (Masseleitung, Erdleitung etc.) keine zusätzlichen hochfrequenten Wechselwirkungen stattfinden, die dann "hintenrum" Störungen übertragen.


Grüsse
Uli
Hallo

die Aussage von Uli entspricht auch meiner Erfahrung.
Ein guter DAC der richtets sofern er genug Daten bekommt. Falls der Datenfluss stockt ist es auch recht schnell klar, denn dann hört man Aussetzter.
Was die Ursache für die frappenten Auswirkungen der Latenz sind die hier berichtet werden ist mir ein Rätsel, konnte ich jedenfalls bei meinem Setup nicht nachvollziehen.

Gruss

Peter
Bild
music is my escape
Aktiver Hörer
Beiträge: 1528
Registriert: 03.07.2012, 10:56
Wohnort: Leipzig

Beitrag von music is my escape »

Dipolaktiv hat geschrieben: 05.01.2021, 17:52 Ein guter DAC der richtets sofern er genug Daten bekommt.
Hallo Peter,

Dem stimme ich theoretisch ebenfalls zu - allerdings gibt es demnach praktisch keinen guten DAC, zumindest ist keiner bekannt.

Leider, denn das würde vielen hier eine ganze Menge ersparen.

Beste Grüße,
Thomas
:cheers:
Bild
Trinnov
Aktiver Hörer
Beiträge: 971
Registriert: 13.11.2009, 19:02

Beitrag von Trinnov »

uli.brueggemann hat geschrieben: 05.01.2021, 16:54 Horst,

welche Registry-Einträge sind dafür zuständig?

Grüsse
Uli
Hallo Uli,

das ist eigentlich sogar einfach.
Bei mir sind es diese Einträge, die sich verändern, wenn ich den USB Buffer Wert umstelle:

HKLM\SYSTEM\ControlSet001\Services\holousbaudio\Parameters\Settings\UsbStreamingMode: 0x00000001
HKLM\SYSTEM\CurrentControlSet\Services\holousbaudio\Parameters\Settings\UsbStreamingMode: 0x00000001

Natürlich heißt das USB Device bei jedem anders, je nachdem welche Hardware er besitzt. Somit muss der Pfad jeweils angepasst werden. Das obige soll ein Beispiel sein. Jedenfalls ist das Device in der Registry jeweils unter xxxxx\Services zu finden und zwar in ControlSet und in CurrentControlSet.

Also ganz einfach für jeden gewünschten Buffer Wert ein Reg File basteln mit dem obigen Pfad und die letzte Ziffer jeweils, bzw. bei 10 und 20 die beiden letzten Ziffern wie folgt für die gewünschte Latenz eintragen.
Anschließend ausführen und somit setzen.

Letzte Ziffer:
1 = Minimale Latenz
2 = Niedrige Latenz
4 = Standard
8 = Stabil
C = zuverlässig
10 = Sicher
20 = Extra sicher

Ich hoffe ich habe es verständlich genug erklärt.

Viele Grüße,
Horst
Bild
WongP
Aktiver Hörer
Beiträge: 215
Registriert: 02.03.2016, 00:03

Beitrag von WongP »

music is my escape hat geschrieben: 05.01.2021, 19:13
Dipolaktiv hat geschrieben: 05.01.2021, 17:52 Ein guter DAC der richtets sofern er genug Daten bekommt.
Dem stimme ich theoretisch ebenfalls zu - allerdings gibt es demnach praktisch keinen guten DAC, zumindest ist keiner bekannt.
Hallo zusammen,

ich finde da macht ein Sony NW-A55 einiges richtig ;)
Ein Manko hat er aber, der DAC hält leider so lange Daten vor, dass ein Video/Film anschauen so nicht möglich ist.
dito: die Aussage von Uli entspricht auch meiner Erfahrung. Insbesondere was Verbindungen (Masseleitung, Erdleitung etc.) anbelangt. Hier mal mein kleiner Testaufbau, der überraschend verlief.

Beste Grüße,
Michael
Bild
StreamFidelity
Aktiver Händler
Beiträge: 1599
Registriert: 24.09.2017, 14:50
Wohnort: Hansestadt Rostock
Kontaktdaten:

Beitrag von StreamFidelity »

Hallo Horst,
Trinnov hat geschrieben: 05.01.2021, 19:33HKLM\SYSTEM\CurrentControlSet\Services\holousbaudio\Parameters\Settings\UsbStreamingMode: 0x00000001

Natürlich heißt das USB Device bei jedem anders, je nachdem welche Hardware er besitzt.
Jugend forscht geht weiter. :mrgreen:

Vielen Dank für die Recherche. Bei meinem T+A USB Treiber ist es dieser Pfad:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TA-BpUsbAudio\ParametersDriver\Settings

Die Werte ändern sich, wenn ich die ASIO Puffer Einstellungen verändere. Eine zusätzliche USB Puffer Einstellung ist nicht zu finden.

Bild

Ich erinnere mich an einen alten Holo Audio Spring Treiber, bei dem ich auch ASIO und USB getrennt administrieren konnte. Hier war es kritisch einen festen ASIO Puffer beim Formatwechsel vorzugeben. Etwas ähnliches hattest Du auch berichtet.

Bild

Dieser alte Treiber wurde durch neuere Thesycon Treiber ohne Auftrennung ersetzt. Ich nehme an, dass diese Auftrennung nicht mehr erforderlich ist, da mein T+A Treiber den ASIO Puffer je nach Samplingrate automatisch anpasst. Der ASIO Puffer wurde automatisch von 32 Samples (DSD 256) auf 128 Samples (PCM 705,6kHz) gesetzt. Der Registry Eintrag blieb unverändert, was für mich logisch ist. Das Ziel einer niedrigen Latenz (Eingang1,18ms/Ausgang1,5ms) blieb ja gleich.

Bild

Grüße Gabriel
Bild
Trinnov
Aktiver Hörer
Beiträge: 971
Registriert: 13.11.2009, 19:02

Beitrag von Trinnov »

Hallo Gabriel,

schade dass das deinTreiber dies nicht hergibt.
Vielleicht willst du einfach mal einen neuen DWORD-Wert ergänzen mit Namen UsbStreamingMode und den auf Wert (HEX) 1 oder 2 setzen.
Das muss wie gesagt an zwei Stellen der Registry erfolgen.
Kannst ja wieder rauslöschen, wenn es klanglich keinen Unterschied bringt.

Viele Grüße,
Horst
Bild
StreamFidelity
Aktiver Händler
Beiträge: 1599
Registriert: 24.09.2017, 14:50
Wohnort: Hansestadt Rostock
Kontaktdaten:

Latenzen im Audio PC selbst messen

Beitrag von StreamFidelity »

Liebe Latenzianer,

weiter vorne wurde schon klargestellt, dass es uns nicht auf die Audio Latenzen ankommt (wir betreiben ja kein Tonstudio), sondern auf die Latenzen auf OS-/Prozessebene. :wink:

Wer das selbst messen will und über ein Windows OS verfügt, kann dafür LatencyMon verwenden.

Ein Beispiel aus meinem System. Der Roon Server liegt bei mir auf dem NAS. Von dort gehen die Musikfiles an den HQPlayer im fis Audio PC.

Bild

Unten ist zu sehen, dass ein Musikfile in Red Book (CD 44.1kHz/16Bit) an den HQPlayer gesendet wird und dieser daraus DSD256 (4fach DSD) macht. Da alles über Ethernet (NAA) an den DAC weitergleitet wird, ist viel Traffic auf der Leitung.

Bild

RipNAS Solid V4

Beim NAS wird ein "normaler" Lan Anschluss vom Motherboard ASUS Q170T verwendet. Dieses Board hat zwei und ich nutze den Anschluss von Intel. Den Netzwerkadapter habe ich auf niedrige Latenzen eingestellt. Im Allgemeinen ist alles sehr gut.

Bild

Wer es jetzt genauer wissen will klickt auf den Reiter "Drivers". Dort werden zu den einzelnen Treibern einige Daten ausgewertet. Interessant ist die letzte Spalte rechts "Highest execution (ms)". Es werden die höchsten Latenzen in Millisekunden angezeigt. Dafür sollte LatencyMon mindestens 5 Minuten laufen. Der TCP/IP-Treiber hat eine Latenz von rund 0,15ms, der NDIS-Treiber hat eine Latenz von rund 0,13ms. Dahinter folgen die System-Treiber mit deutlich weniger Latenzen von <0,05ms.

Bild

fis Audio PC mit Solarflare Netzwerkadapter

Zum Vergleich der fis Audio PC, der aufgrund DSD viel mehr Daten über das Ethernet bewältigen muss. Im Allgemeinen ist auch da alles sehr gut.

Bild

Nun wieder der Blick auf die einzelnen Treiber. Im Vergleich zum NAS sind die Netzwerktreiber mit den Systemtreibern enger zusammengerückt. Der NDIS-Treiber hat eine Latenz von nur noch rund 0,06ms und der TCP/IP-Treiber ist mit rund 0,02ms sogar schneller als der Systemtreiber.

Bild

Mit Messdaten kann belegt werden mit welchen geringen Latenzen der Solaflare SFN8522 Netzwerkadapter arbeitet. Über diese Karte und wie gut sie sich anhört hatte ich hier berichtet: XILINX Solarflare Flareon Ultra SFN8522 - LWL Netzwerkadapter . :cheers:

Grüße Gabriel
Bild
Antworten