Beeble, vielleicht ist dein Beitrag einfach missverständlich formuliert oder wir reden aneinander vorbei.
wahrscheinlich beides
Ok. Ich versuche mal: 10 Finger auf dem Keyboard greifen in die Tasten, ein Midiwort wird erstellt und auf die Reise geschickt. Nicht gleichzeitig sondern schön der Reihe nach wie bei serieller Übertragung üblich.
dieses ganze Signal ist ist etwa 10ms lang, je nachdem was noch an Daten mitgeschickt wird auch länger. Ohne Verzögerung kommt das Signal am USB Port an. Blöderweise wird aber nur alle 1-5 Millisekunden der Port abgefragt.
(normalerweise einmal pro ms, ich habe aber gelesen das die Hersteller gerne auch 5ms nehmen um auf Nummer sicher zu gehen. Wusste ich bisher auch nicht)
Im schlimmsten Fall kommen die Daten erst nach 5ms in den Rechner. da stehen sie dann aber sofort zum Weiterverarbeiten zur Verfügung.
Die Reiseroute des Midisignals sieht dann so aus:
-Vom drücken der Tasten bis zur Ankunft des Signals am USB Eingang vergehen etwa 32 Microsekuden, hier reden wir mal nicht von Latenz, das läuft noch unter Echtzeit.
Den Job erledigt ein UART Chip, dieser ist diskret, also kein Prozessor und hat Null Latenz.
- Jetzt gibts dann die erste Verzögerung auf die wir keinen Einfluss haben, nämlich den Datenstau am USB Port, der mindestens 1-5ms beträgt.
- die Software die jetzt mit den Daten macht was sie soll unterliegt dem Prozessortakt und auch da findet alles im nano- und microsekundenbereich statt.
also entweder werden die Daten einfach nur gespeichert oder auch von einem VSTi wie in unserem Fall verarbeitet. Zwischengespeichert bzw. gebuffert wird da nix, da es sich hier um Echtzeitanwendung handelt.
Vom drücken der Klaviatur bis zum Auftauchen in der DAW vergehen also bis zu 5ms.
Nun zum VSTi:
Die Daten müssen in Echtzeit verarbeitet werden, wenn das nicht klappt wird nicht gewartet sondern schlimmstenfalls gehen Daten verloren. Meistens läuft aber die Software dann gar nicht oder lässt sich auf entstprechend schwachen System nicht instalieren oder betreiben oder läuft einfach nicht zufriedenstellend.
Nun kommt der nächte Teil der Kette auf den wir keinen Einfluss haben und der auch wieder eine Verzögerung mit sich bring, die D/A Wandlung über das Audiointerface.
Die Performance ist abhängig von der Hardware des Geräts und der Hardware des Rechners sowie der dazugehörigen Software(Treiber)
Ähnlich wie beim USB Port werden hier die Signale zwischengespeichert. Das ist die Samplerate. Das bedeutet die Signale werden Portionsweise gewandelt. Je kleiner die Portionen(Samplerate) desto schneller werden sie ausgegeben und die Latenz wird kleiner. Je größer der Buffer desto größer wird die Latenz. Man könnte meinen das man einfach immer die kleinstmögliche Samplerate einstellt um so die kleinstmögliche Latenz zu bekommen.
Der Haken ist , das alles in Echtzeit rausgeht, egal ob die Hardware mit dem Umwandeln fertig ist oder nicht, alles muss raus, auch wenns nicht fertig geworden ist. Man hört Knackser und Aussetzer im schlimmsten Fall gibts Mecker und Abstürze, der Rechner ist überfordert. Wählt man eine hohe Samplerate, dauert es länger bis das Paket rausgeht, aber es ist auch genügend Zeit sauber zu rechnen. Das Resultat ist ein sauberes Signal aber eine höhere Latenz.
Der Datenstrom ist dabei immer gleich. Ob wenig, dafür aber schnell hintereinander, oder viel und dafür langsam.
Trotzdem der Vollständigkeit halber: Ein Note on/off ist 3 Bytes lang und die Übertragung über ein Midi-Kabel dauert 0,96ms.
Kann man sich vorstellen wie ein Zug der das Keyboard verlässt. Die Lok ist schon im Bahnhof(USB Port)angekommen während der letze Wagon noch im Keyboard steckt.
Der Bahnhof hat aber nur alle paar ms mal geöfnet und im schlimmsten Fall schaft es nicht der ganze Zug vor Schliessung einzufahren
Dann käme hier noch mal Latenz hinzu!? Also im schlimmsten Fall ein vielfaches von 5ms je nach länge des Midiworts.
Rechnen wir mal zusammen:
in <1ms ist das Signal am USB Port des Rechners, je nach Länge dauert es nochmal 10ms bis alles drin ist.
Danach wird flux gerechnet im für uns nicht relevanten "Echtzeitbereich" von einigen Nanosekunden.
Schnell raus mit den Daten ans Interface zum wandel..ups..dh. ja wieder über USB raus und wieder warten.. nochmal 5ms im schlimmsten Fall.
Das flotte Interface braucht vielleicht 6ms, bis endlich ein Audiosignal zum Lautspecher geht.
sind zusammen 1ms+10ms+10ms+6ms
Also haben wir eine Latenz von ca.27ms die wir einkalkulieren müssen.
Ach ja, beim Drummodul kommen wirklich noch einige ms Latezn hinzu, da intern noch gerechnet wird.
Roundabout sollte man als eDrummer eine Latenz von 30ms einplanen
Habe ich noch was vergessen?