Latenzen

axifist

Well-known member
Mitglied seit
Nov 14, 2013
Beiträge
1.925
Also meine Meinung und mein Verständnis. Beruht nur auf Beobachtungen und Annahmen!

1. Shunts brauchen natürlich auch Prozessorleistung, aber sehr minimal und ich glaube nicht, dass die Latenzen verursachen. Wie komme ich darauf? Ich habe einmal fix mit dem FM3 zwei Presets gebaut. Eins mit In1 -> direkt in Out1 und ein mit In1 ganz links und Out1 gaaanz rechts. Das Ganze mit Shunts verbunden, beides gemessen und ich kann keine unterschiedliche Latenz zwischen beiden Presets erkennen. Warum auch? Wenn ihr Presets mit Effekten baut, wollt ihr dann ja auch immer die gleiche Latenz und nicht je nach Preset eine andere. Das ist ein stabiler Wert. Prozessorleistung ist dabei nicht gleich der Latenz!

2. Feedback Send/Return Schleifen verursachen höhere Latenz, wenn man damit das Grid "künstlich" verlängert.
Darüber war ich erst geschockt und dachte, dass das doch nicht sein kann. Ich habe das auch gemessen und tatsächlich. Je länger ich aber darüber nachdenke, ist es auch logisch und richtig, aber natürlich unschön. Warum ist es logisch? Das Grid hat eine feste Breite. Warum ist das so? Warum hat das Cliff nicht gleich flexibel gestaltet? Mit diesem fest definiertem Grid ist eine bestimmte Latenz möglich. Jeder Block im Grid hat eine bestimmte zulässige Laufzeit. Bis dahin muss er seine Signale verarbeitet haben. Nur so kann Fractal eine Latenz von X ms gewährleisten.

Wird nun das Grid aber künstlich mit den Feeback-Blöcken verlängert, muss es ja zwangsläufig zu längeren Latenzen führen. Das Grid besteht nun aus mehreren Blöcken und somit auch aus weiteren Latenzen. Das muss sich dann natürlich aufsummieren. Alles andere wäre ja eine spontane Verringerung der Latenzen pro Block. Wie soll das gehen?

Verständlich, wie ich das sehe? Aber wie gesagt, alles nur reine Spekulation.
Was passiert, wenn man direkt vor dem Send den Input setzt und direkt hinter dem Return den Output? Dann ist das Grid ja eigentlich nicht länger, als wenn man die Standardlänge voll ausnutzt.
 
G

Gelöschtes Mitglied 10924

Guest
Das hatte ich auch so verstanden. Bin zwar kein gelernter "IT-ler", nur Physiker, erstelle aber auch Software - für selbst entwickelte Messgeräte. Daher kenne ich das Problem nur allzu gut! :biggrin:
Sollte auch nur eine Erklärung sein.
Physiker ist schonmal gut ;-) Die sind intellektuell breit aufgestellt und können sich in unterschiedlichste Themenbereiche gut reindenken.
Und wenn Du selbst schon Programmiererfahrung hast, weißt Du ja auch bereits, dass so eine Software vom User von aussen betrachtet eine Black-Box ist und dass User idR. keine Vorstellung von der Komplexität des Programmcodes haben, der da im Hintergrund die eigentliche Arbeit verrichtet.
Bei der Diskussion hier haben wir nach meiner Auffassung bereits die Grenzen des allgemeinen Verständnisses überschritten.
Das meine ich weder kritisch, noch herablassend, noch wertend.
Es ist ein nüchtern sachliche Feststellung.
Von diesem Punkt an hilft eigentlich nur noch ein Programmierkurs.
Das meine ich ganz ohne Wertung und so, wie ich es sage.

Um zu verstehen, was so eine Bedieneroberfläche wie dieses Grid darstellt, wie es in codierter Form aussieht und wie es verwaltet wird, muss man einfach diese Vorgänge (Software-Engeneering und Codierung) kennen.

Von aussen sieht es so aus, als müssten sich die Daten durch ein Gitter aus einzelnen Zellen "arbeiten".
Hierbei entstünden dann Zeitverluste, weil dieser Prozess resp. die Daten unseres digitalisierten Gitarrensignals ja "einen langen Weg gehen muss".
Das ist aber eine verzerrte Wahrnehmung, die zwangsläufig dann entsteht, wenn man keine Kenntnis davon hat, dass dieses Grid im Quellcode nur in Form von textuellen Beschreibungen existiert, wie dieses Grid aussieht, welche Komponenten (Buttons, Schieber, Schalter, Poris, Textfelder etc.) darauf sichtbar sind und insbesondere, wie die Benutzung dieser Komponenten (Mausklicks, Mausbewegungen bei gedrückter Taste etc.) im Quellcode/Programmcode behandelt wird.

In diesem Grid gibt es bspw. auch Bestandteile, die auf die reine Verabeitung der Daten/Gitarrensignale keinerlei Auswirkung haben.
Sie sind aber möglicherweise wichtig, um Informationen darüber zu erhalten, welche Wege Daten/Signale bei der Verarbeitung gehen sollen.
Aber das kann man auch nur wissen, wenn man selbst solche Programme entwickelt hat und die Unterschiede zwischen dem Bild einer visuellen Oberfläche und den vielen Codezeilen dahinter kennt.

Für mich ist das auch immer mal wieder schwierig in solchen Diskussionen, weil ich zwangsläufig bei der Betrachtung dieser Firmware immer das System in seinen Einzelteilen vor meinem inneren Auge sehe.
Als Psychologe sehe ich hier auf der Plattform automatisch immer auch den thematischen Hintergrund, was Verhaltensweisen von Menschen und deren Ursachen betrifft.
Deshalb bemühe ich mich ja auch immer wieder, Sachverhalte so verständlich wie nur möglich zu beschreiben oder erklären, damit der Fokus immer auf der Information und nicht auf einer persönlichen Bewertung des Gegenübers liegt.

Mir ist heute noch ein kleines Beispiel eingefallen, um sich ne Vorstellung davon zu machen, dass zBsp. die Verbindungen/Shunts keinen Einfluss auf die Laufzeit der Verarbeitung haben (dürfen).

Excel; Kennen die meisten hier.
Dass man in die Zellen nicht nur Zahlen oder Text, sondern auch Formeln eingeben kann, auch.
Nehmen wir die oberen linken Zellen in der Tabelle ( Grid! );
A1 und B1;
Rechts neben der Zelle B1, in C1 geben wir die Zahl 100 ein.
In Zelle Z5000, viel weiter rechts und sehr weit unten, geben wir ebenfalls die Zahl 100 ein.
So weit, so einfach. Kann jeder, kennt jeder.

Nun geben wir in A1 die Formel "=C1 * 2" ein.
Sinn der Aktion; In dieser Zelle A1 solle eine Berechnung erfolgen, nämlich dass der Inhalt von C1 (=100) mit 2 multipliziert werden soll.
Wie in Excel üblich, wird nach Drücken der Enter-Taste in dieser Zelle dann das Ergebnis (200) angezeigt.
Die Formel ist im Hintergrund zwar existent, aber unsichtbar, ausser wir bearbeiten den Zellinhalt.

In Zelle B1 machen wir das Gleiche, allerdings mit dem Unterschied, dass die Formel so aussieht: "=Z5000 * 2".
Die Berechnung ist die gleiche, allerdings soll sich diese Formel den Wert 100 aus der weit unten liegenden Zelle Z5000 holen.

Nun die Frage: Wenn es möglich wäre, was physisch nicht möglich ist, in die Zellen A1 und B1 die Formeln einzugeben und erst dann
GLEICHZEITIG für beide Zellen die Enter-Taste zu drücken, welches Ergebnis (in welcher Zelle) würde als erstes erscheinen?

Hier ende ich jetzt mal.
Da den Vorgang niemand real nachvollziehen kann, darf man jetzt mal den Verstand bemühen… ;-)
Tricksereien mit VBA (Visual Basic for Applications) oder ähnlichessollte hier mal keine Rolle spielen.
 
G

Gelöschtes Mitglied 10924

Guest
Was passiert, wenn man direkt vor dem Send den Input setzt und direkt hinter dem Return den Output? Dann ist das Grid ja eigentlich nicht länger, als wenn man die Standardlänge voll ausnutzt.
Dann beugt man den Raum… 😂
Würde Harald Lesch jetzt antworten…

Die ernsthafte Antwort ist (auch wenn sie mir nicht gestellt wurde).
Wenn die Firmware ordentlich (im Hinblick auf eine DSP Software) programmiert ist, müsste das Signal vom Eingang ohne Verzögerung (abgesehen von den fest eingebauten Blöcken wie Input-Gate und Ausgangsmischer etc.) an den Ausgang/Wandler weitergeleitet werden.
"Leere" Verbindungen dürfen keinen Einfluss auf die Laufzeit der Signale haben.
Ausser den Einfluss durch die Prozessverarbeitung des Programms selbst und den Hardware-Verzögerungen wie Leiterbahn-Widerstände, Zeitscheibe (Verteilung der Prozessorleistung) usw..

Da die beiden Blöcke "Send" und "Return" aber im Quellcode der Firmware als Funktionen hinterlegt sein werden (sie können nämlich Parameter behandeln), wird es eine Laufzeit-Differenz zwischen einer einfachen, geradlinigen Verbindung vom Input zum Output und der Verwendung der beiden Blöcke zur Herstellung dieser Verbindung Input/Output geben.
 
D

Deleted member 1155

Guest
Das Routing im Grid sollte lediglich dazu dienen, die Abfolge der Rechenprozesse festzulegen.
Da die DSP-Programmierung ja Echtzeit-Verarbeitung umzusetzen hat, sollte jede Art von Latenz-Risiko vermieden werden.
Meiner Ansicht nach ist da irgendwas zwischen zweiter und dritter Generation der FAS-Geräte verändert worden. Das AX8 hat knapp 2ms - egal wieviele Blöcke in Reihe geschaltet werden. Ebenso verhält sich ja auch das Line6 HX Stomp (welches ich ausführlich durchgemessen hatte) - beim FM3 redet FAS von einer "Base-Latency" von 2.6ms - sprich, wenn Du nur Shunts geladen hast. Je nach Block addiert sich die Verzögerung. Ich bin kein Programmierer und Du hast auf diesem Gebiet zweifelsohne tausendmal mehr Erfahrung als ich - ich stelle nur fest, dass sich zwischen zweiter und dritter Modellgeneration irgendwas verschoben hatte. Ich nenne es als Laie "dynamische CPU-Performance" (lasse mich da gerne korrigieren).

leere Blöcke sollten nichts addieren, wenn sie das tun, dann ist das sicher ein Bug. Dass ein Bypass geschalteter Block etwas ändert, kann ja eventuell auch damit zusammengehen, dass die Prozessorlast eben die effektive Audioperformance beeinflusst - ein bypass geschalteter Block benötigt nach wie vor CPU Ressourcen.
 
G

Gelöschtes Mitglied 10924

Guest
Meiner Ansicht nach ist da irgendwas zwischen zweiter und dritter Generation der FAS-Geräte verändert worden. Das AX8 hat knapp 2ms - egal wieviele Blöcke in Reihe geschaltet werden. Ebenso verhält sich ja auch das Line6 HX Stomp (welches ich ausführlich durchgemessen hatte) - beim FM3 redet FAS von einer "Base-Latency" von 2.6ms - sprich, wenn Du nur Shunts geladen hast. Je nach Block addiert sich die Verzögerung. Ich bin kein Programmierer und Du hast auf diesem Gebiet zweifelsohne tausendmal mehr Erfahrung als ich - ich stelle nur fest, dass sich zwischen zweiter und dritter Modellgeneration irgendwas verschoben hatte. Ich nenne es als Laie "dynamische CPU-Performance" (lasse mich da gerne korrigieren).

leere Blöcke sollten nichts addieren, wenn sie das tun, dann ist das sicher ein Bug. Dass ein Bypass geschalteter Block etwas ändert, kann ja eventuell auch damit zusammengehen, dass die Prozessorlast eben die effektive Audioperformance beeinflusst - ein bypass geschalteter Block benötigt nach wie vor CPU Ressourcen.
Absolut.
Das mit den Generationen kann ich wiederum nicht beantworten.
Ich habe ja nicht alle Generationen mitgemacht.
Und es ist ja auch klar, dass ich nur bis zu einem gewissen Grad beurteilen kann, was die da gemacht haben.
Da liegt die Prio auf dem, was ich in ca. 50 Jahren gelernt und gemacht habe.
Oder anders; es gibt Sachen, die macht "man" in der Entwicklung und Codierung auf bestimmte Arten und Weisen.
Und daher ist die Wahrscheinlichkeit recht hoch, dass man bei FAS gleich oder zumindest ähnlich verfährt.
Einiges von dem, was ich beschrieben hatte, betrifft ja auch grundlegende Verfahrensweisen, wie eben die Gestaltung
und aber auch gleichzeitige Verwaltung von Bedieneroberflächen etc..
Generell, und da bist Du ja ebenso im Bilde, ist DSP-Programmierung eben zeitkritisch von wegen Echtzeitverarbeitung und so.
Da sind die Anforderungen an die Software etwas andere, als an eine kaufmännische Software, oder Tabellenkalkulation, oder Datenbankanwendungen oder wie in meinem Fall viele Jahre, Adressenverarbeitung, Abgleichprogramme, Namensanalysen usw..
Also doch sehr unterschiedliche Baustellen.

Und so wie Du sehe ich das ja auch.
Leere Blöcke, die Latenzen verursachen, sind Mist ;-)
Deaktivierte Blöcke können aber durchaus CPU Ressourcen beanspruchen.
Ob das aber zugleich auch mit einer zusätzlichen Latenz verbunden ist, ist nicht immer zwangsläufig.
Die Frage ist, beieinflusst die zusätzliche CPU-Last den Signalfluss oder Programmkomponenten, die ihrerseits den Signalfluss beeinträchtigen…
Ist alles von aussen schwierig zu beurteilen.
Da muss man schon den Code sehen und die Struktur erkennen.
Da haben Entwickler auch immer zu einem guten Teil ihre ganz eigenen Vorgehensweisen und Geflogenheiten.
Ich gehe gerne auch mal unkonventionelle Wege, wenn der Effekt resp. die Wirkung dem angestrebten Ziel zugute kommt.

Was ich garnicht wusste, war das, was Du zum Thema Latenz bei den Bodentretern zu Heinzi gesagt hattest.
Aber gut zu wissen.
Ich habe ja mittlerweile 10 Geräte vor das Axe geschaltet 😂
Die meisten Drives und Preamps.
Aber ich komme ohne Probleme gut klar, auch wenn im Schnitt 4 Geräte gleichzeitig eingeschaltet sind.

OK; muss jetzt mal Tatort gucken.
Hatte bis jetzt keine Zeit.
Bis später.
 
D

Deleted member 1155

Guest
Wenn ich bei meiner DAW die Gesamtlatenz bei Echtzeit-Audio verringern will, wird dadurch die CPU Belastung grösser. Beim AxeFx ab der dritten Generation steigt mit jedem verwendeten Block die Gesamtlatenz was wiederum bedeutet, dass man mehr Wert auf eine möglichst grosse CPU Auslastung und detailgetreue Performance, als auf eine möglichst effiziente Performance setzt. So hat das für mich den Anschein. Beim AF3 kann man es umschalten (Best Quality vs. Best Performance)

Aber darüber wird scheinbar nicht gerne gesprochen. Ausser es geht darum die Konkurrenz schlecht zu reden -> siehe dazu auch: https://forum.fractalaudio.com/threads/latency-of-amp-modelers.184918/page-2#post-2280807

Latenz ist so ein Reizthema. Latenzen sind etwas "Schlechtes" - also will man lieber nichts damit zu tun haben. Deswegen ist es auch ein Reizthema in Foren, gerade wenn man ein Gerät besitzt, welches scheinbar die Referenz des Machbaren darstellen soll.....
Ich glaube manchmal, dass GAS ja nicht nur von eventuellen Möglichkeiten herrührt, sondern oft auch von der Gewissheit Technik zu haben, die besser ist als die eigenen Fähigkeiten damit umzugehen. Und da wäre es ja jammerschade wenn man nicht das eine Gerät besitzt, welches keine Schwachstellen aufweist.

Was ich garnicht wusste, war das, was Du zum Thema Latenz bei den Bodentretern zu Heinzi gesagt hattest.
Aber gut zu wissen.
Ich habe ja mittlerweile 10 Geräte vor das Axe geschaltet 😂
Die meisten Drives und Preamps.
Bei Drives und Preamps spielt es keine Rolle, wenn es sich um analoge Schaltkreise handelt. Bei digitalen Geräten kommt es nur darauf an, ob das Gerät "analog dry through" kann, sprich das "trockene Signal" mit dem Effekt-Signal auf analoger Ebene gemischt wird. Zahlreiche Geräte können das - es gibt aber auch Ausnahmen.

Drives und Preamps addieren, sofern analog, rein gar nichts an zeitlichen Verzögerungen. Es kann höchstens sein, dass die Phasenlage verändert wird - je nach Schaltungen. Was wiederum aber nur eine Rolle spielt, wenn Du parallele Konfigurationen nutzen willst. In Serie geschaltet brauchst Du Dir dazu absolut keine Gedanken zu machen.....
 
G

Gelöschtes Mitglied 10924

Guest
Bei Drives und Preamps spielt es keine Rolle, wenn es sich um analoge Schaltkreise handelt. Bei digitalen Geräten kommt es nur darauf an, ob das Gerät "analog dry through" kann, sprich das "trockene Signal" mit dem Effekt-Signal auf analoger Ebene gemischt wird. Zahlreiche Geräte können das - es gibt aber auch Ausnahmen.

Drives und Preamps addieren, sofern analog, rein gar nichts an zeitlichen Verzögerungen. Es kann höchstens sein, dass die Phasenlage verändert wird - je nach Schaltungen. Was wiederum aber nur eine Rolle spielt, wenn Du parallele Konfigurationen nutzen willst. In Serie geschaltet brauchst Du Dir dazu absolut keine Gedanken zu machen.....
Ja OK.
Der Rest war mir schon bewusst.
Ich konnte mit dem analog dry through nicht sofort etwas anfangen.
Aber was Du beschreibst, schafft Klarheit.
Danke für den Hinweis! 👍
Der letzte Absatz ist ja soweit auch klar.
Aber das ergibt sich hier bei mir eh nicht.
Da achte ich immer drauf.
 
Oben
mainframe-fourhanded
mainframe-fourhanded