Forum: PC Hard- und Software PC-Midi-Latenzen-Ursachensuche


von Andre D. (audimax)


Lesenswert?

Hallo

habe mit meinem 2Ghz PC von Siemens, sound on Board,mit üblicher 
Ausstattung, Windows, mit einem allg. üblichen Musik und sequencer 
Programm 25 ms Zeitverzögerung zwischen Tastendruck und hörbarem Ton.
Bei einem Systemtakt von 2000 Mhz der main cpu und einem soundprozessor 
in der Soundkarte kann ich nicht verstehen , was da so lange dauert.
Mididaten abzufragen und den Ton zu erzeugen ist ja nun wirklich nicht 
so ein großes Ding.
Da kann ja jede poplige SPS mehr.
Oder ist die Software einfach nur zu ungünstig geschrieben?

Kann jemand sagen wo es genau klemmt?

Ich suche eine Erklärung aus Sicht der Prozessor und Code-Programmierer.
Die Sache mit ASIO- Treibern und Co wurde in den Musikerforen schon 
genügend diskutiert.

LG
Andre

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Was für ein "2GHz PC von Siemens"? Prozessor, Arbeitsspeicher, welches 
Windows?

Was für ein Programm? Was für ein Gerät mit Tasten? Wie an den PC 
angeschlossen, klassisches serielles Midi (mit DIN-Steckern) oder Midi 
über USB?

Was läuft sonst noch so auf dem Windows?

von Fragen über Fragen (Gast)


Lesenswert?

Womit wurden die "25 ms Zeitverzögerung" gemessen? Könnte es sein, daß 
es in Wirklichkeit nur 24ms sind?

von Jemand (Gast)


Lesenswert?

Andre D. schrieb:
> Da kann ja jede poplige SPS mehr.

Dass ein Echtzeitsystem das kann ist auch kein Wunder, ein normaler 
Allzweckcomputer ist aber ohne Weiteres keines.
Zur effizienteren Verarbeitung werden die Daten gepuffert, je größer der 
Puffer, desto effizienter (geringere CPU-Auslastung) und desto höher die 
Latenz.
Auf meinem System (Linux, Pulseaudio) beträgt die Latenz laut Software 
33,3 ms, ist mir noch nie störend aufgefallen, aber ich habe auch keine 
Instrumente o. Ä. dran hängen.

von Der E. (rogie)


Lesenswert?

Die hohe Latenz kommt von den Buffern, in die Windows (das u.a. KEIN 
Echtzeitbetriebssystem ist, ebenso wie Linux, da gibt es aber m.W. 
entsprechende Echtzeitderivate) die berechneten Audiodaten schreibt, 
diese sind eben entsprechend groß ausgelegt, damit nicht so viele 
Unterbrechungen für eine reibungslose Soundwiedergabe nötig sind. bei 
50ms Latenz z.B muss Windows "nur" 20mal pro Sekunde die Audiodaten 
"vorberechnen.". Bei passiven Musikhören stört das nicht, dem Hörer ist 
es egal, wenn die Musik nach drücken auf Start mit 50ms Verzögerung 
einsetzt.

Anders ist beim aktiven Musizieren. Wenn du dort niedrigere Latenz 
benötigst, dann muss dieser Buffer entsprechend verkleinert und die 
"Berechnungsrate" erhöht werden. Bei einer Latenz von z.B. nur 1ms muss 
Windows dann 1000mal pro Sekunde die Audiodaten neu berechnen, und dass 
kann tatsächlich problematisch in Form von Aussetzern werden, wenn die 
Daten nicht schnell genug berechnet werden können.

Bei solch einen gewünschten Echtzeitbetrieb ist es immer noch besser, 
dafür spezialisierte Hardware einzusetzen, z.B. eine Musik Workstation, 
Synthesizer oder auch ein Entertainer- Keyboard. Aus diesem Grund 
benutze ich auch keine virtuellen Softwaresynthesizer unter Windows, 
sondern einen echten Korg Kronos. Ich benutze ebenso einen analogen 
kabelgebundenen Kopfhörer, da ich mal einen digitalen drahtlosen 
Kopfhörer testweise benutzt hatte und schon dort trat eine störende 
Latenz auf (Klaviertaste gedrückt, Ton kam später).

: Bearbeitet durch User
von Feinschmecker (Gast)


Lesenswert?

> benutze ich auch keine virtuellen Softwaresynthesizer

Tja, damit lässt du dir das Beste entgehen.
Zum Einspielen kann man sicher besser MIDI in HW nehmen.

Aber für den finalen Mix.

So ein M-Tron und ein Addictive Keys und eine B4 und und und ...
(Liste nach belieben fortsetzen)

Einen MS10 hab ich übrigens auch. Ganz ohne MIDI.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Andre D. schrieb:
> Oder ist die Software einfach nur zu ungünstig geschrieben?
Was haben wir denn da für eine Software?
>
> Kann jemand sagen wo es genau klemmt?
Mit den dünnen Informationen vermutlich nicht. Ich nehme mal an, das es 
ein Fujitsu-Siemens ist und ne alte Kiste mit 2GHz. Aber du hast ja 
weder dein Midi Interface noch die Software beschrieben.

Echte Audiokarten kann man einstellen. Ich habe hier 2 Terratec Phase 88 
in einem Cubase 3 System mit 4GHz P4-HT (auch 'ne alte CPU) und XP. Die 
Karten sind gekoppelt (für 16 Kanäle) und auf kleinen Puffer 
eingestellt. Latenz etwa 1-2ms. Mehr ist beim Einspielen getrennter 
Spuren auch kaum akzeptabel, ein Gitarrist wird von 2ms schon irritiert, 
wenn man ihm sein Signal übers System zurückspielt.
Die Latenz auf den beiden Midi Interfaces der Karten ist unter 1ms.

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

Andre D. schrieb:
> Bei einem Systemtakt von 2000 Mhz der main cpu und einem soundprozessor
> in der Soundkarte kann ich nicht verstehen , was da so lange dauert.

Mit Windows Core Audio sind IIRC einstellige ms Zeiten möglich. Dieses 
API wird aber bei älteren und einfacheren Sachen nicht verwendet.

Soundprozessoren sind in modernen Soundchips nicht mehr üblich, 
jedenfalls nicht auf on-Motherboard Chips.

Windows 10 kann angeblich bis 1,3ms runter:

https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/low-latency-audio

Andre D. schrieb:
> Ich suche eine Erklärung aus Sicht der Prozessor und Code-Programmierer.

Der Anwender mag keine lärmenden Lüfter. Mit längeren Puffern kann die 
CPU tiefer schlafen bevor sie sich um neues Audio kümmern muss.

von temp (Gast)


Lesenswert?

Wieso reden hier alle von der Audiolatenz wenn es um Midi geht. 
Irgendwem scheint der Unterschied nicht klar zu sein.

Matthias S. schrieb:
> Latenz etwa 1-2ms. Mehr ist beim Einspielen getrennter
> Spuren auch kaum akzeptabel

Zwischendurch bitte auch mal etwas Rechnen. Midi in Hardware läuft mit 
31,25KBaud. 1 Byte braucht deshalb schon 0,32ms. 1 mal Note On mit 3 
Byte sind dann schon 1ms. Einmal kurz in die Tasten greifen und 4 Töne 
gleichzeitig sind dann schon 8ms die die Bits allein durch die serielle 
Schnittstelle brauchen. Vorrausgesetzt es geht rein und raus nur über 
Midi.
Und dann kommen noch die weiteren Latenzen hinzu wie USB hin und wieder 
zurück.
Und dann hoffen wir mal dass keiner an den Wheel-Rädern dreht, die 
fluten das ganze auch ordentlich mit Daten durch den Flaschenhals.
Vor dem Hintergrund sind Softwaresynties teilweise besser, weil wir da 
zwar auch eine Verzögerung haben, die ist aber auf der Audioseite 
ziemlich konstant und unabhängig von den gespielten Tasten. Die halbwegs 
moderner Rechner sind heute in der Lage ein paar Softwaresynthies ohne 
relevante zusätzliche Verzögerung zu berechnen.

Der E. schrieb:
> Bei solch einen gewünschten Echtzeitbetrieb ist es immer noch besser,
> dafür spezialisierte Hardware einzusetzen, z.B. eine Musik Workstation,
> Synthesizer oder auch ein Entertainer- Keyboard.

Mit der Aussage wäre ich auch vorsichtig. Solange es per seriellem Midi 
in die Geräte rein und wieder raus geht sind die Bedingungen die 
gleichen. Viele Keyboards haben intern eine Tonerzeugung die mit 
serielen Midi am Eingang arbeitet und eine Tastatur die auch nur seriell 
sendet. Ob dass dann intern oder extern Verkabelt wird spielt keine 
Rolle. Da müssten wir schon wirklich über die konkreten Geräte reden.

von Der E. (rogie)


Lesenswert?

Feinschmecker schrieb:
> Einen MS10 hab ich übrigens auch. Ganz ohne MIDI.

Im Kronos sind neun Sound Engines vorhanden:

http://www.korg.com/us/products/synthesizers/kronos_x/page_1.php

von Carlo (Gast)


Lesenswert?

Der E. schrieb:
> Bei einer Latenz von z.B. nur 1ms muss
> Windows dann 1000mal pro Sekunde die Audiodaten neu berechnen,

Nein, wieso? Der Rechenaufwand zur Erzeugung von Daten hat doch nichts 
mit der Verzögerung zu tun. Die kommt einzig von der Pufferung und den 
Zeitscheiben in Windows. Die Prozesse liegen in Listen, die zyklisch 
abgefragt werden, um zu entscheiden, ob sie bedient werden müssen, oder 
nicht. Solche Scheiben sind dann schon mal 100ms lang.

>Re: PC-Midi-Latenzen-Ursachensuche
Du hast in der Regel 3 Stellen:

1) MIDI-Gerät verpackt Tastendruck in MIDI Daten und schickt sie an 
einen Buffer. Eine Sendevorrichtung macht was Serielles draus.

Dann kommt die Bandbreite des Kanals ins Spiel. MIDI hat 30kHz und kann 
dadurch in 0,3ms pro Wort arbeiten.

Nun kommt der PC mit seiner UARt oder virtuellen MIDI-UART. Da kommen 
etlich ms zusammen. Müsste sich einstellen lassen.

Am Ende kommt noch die Tonerzeugung: Die braucht auch noch 
Reaktionszeit, besonders, wenn Filter drinstecken und mehrere Stimmen 
arbeiten sollen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Carlo schrieb:
> MIDI hat 30kHz und kann dadurch in 0,3ms pro Wort arbeiten.

Ein MIDI-Befehl (Note-On, Note-Off etc.) ist üblicherweise drei Bytes 
lang; mit der Datenrate von seriellem Midi (31250 kBaud bei 8n1) können 
3125 Bytes pro Sekunde bzw. etwas über 1000 Midi-Befehle pro Sekunde 
übertragen werden.

von Thomas M. (langhaarrocker)


Lesenswert?

Matthias S. schrieb:
> Mehr ist beim Einspielen getrennter
> Spuren auch kaum akzeptabel, ein Gitarrist wird von 2ms schon irritiert,
> wenn man ihm sein Signal übers System zurückspielt.

Hm. Schallgeschwindigkeit rund 343 m/s. 2ms Latenz ... also ist der 
Gitarrist auch dann irrigiert, wenn er weiter als - sagen wir mal rund 
70 cm von seiner Box entfernt steht. Ach was "stehen"! Um das zu 
erreichen muss er sich hinknien!

von Clemens L. (c_l)


Lesenswert?

Andre D. schrieb:
> soundprozessor in der Soundkarte

Das ist heutzutage unüblich. Welche Soundkarte ist es denn?

von Fragen über Fragen (Gast)


Lesenswert?

Clemens L. schrieb:
> Das ist heutzutage unüblich. Welche Soundkarte ist es denn?

Der TO ist leider nicht sehr gesprächig. Einen Thread zu eröffnen und 
dann "Toter Mann" spielen ist einfach nur ein mieser Stil!

von Andre Danker (Gast)


Lesenswert?

Hallo

Vielen herzlichen Dank für die Antworten.
Das ist für mich schon sehr aufschlussreich und erklärend, und habe mir 
schon sowas gedacht.
Also scheinen Echtzeitverarbeitung und Flaschenhals Midi selbst die 
Hauptgründe zu sein.
Ein Universalgerät wie ein PC sehe ich dann mal wie die Eier legende 
Milchwollsau die letztendlich nicht richtig fliegen, schwimmen und 
laufen kann, aber eben von jedem ein wenig.

Von meiner Seite nochmal besten Dank.
Ubrigens bin ich absoluter Freund von analog- modularen Synthesizern.
Warscheinlich liege ich da nicht so verkehrt, dieses System noch weiter 
mit Digitalerweiterungen zu ergänzen.

LG
Andre

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Andre Danker schrieb:
> Also scheinen Echtzeitverarbeitung und Flaschenhals Midi selbst die
> Hauptgründe zu sein.

Das muss so nicht sein, aber da Du nichts über Deine Hard- und Software 
verraten hast (außer äußerst vagen Angaben, wie Dein "2-GHz-PC", was 
Geräte, die in den letzten 15 Jahren erschienen sind, beschreiben kann), 
lässt sich nicht präziser eingrenzen, woher in Deinem spezifischen 
Fall die Verzögerungen kommen.

von Andre Danker (Gast)


Lesenswert?

Nun ich höre von den unterschiedlichsten Leuten von diesen Problemen, 
und nehme an, das es auch die verschiedensten PC's sind, welche genutzt 
werden.
Daher ist es eher ein allgemeines Problem, was sicher mit einigem 
Hardwareaufwand zu beheben ist.
Aber einer ewig neuen Materialschlacht möchte ich nicht folgen.Daher 
Ursachen suchen und daraus die richtige Entscheidung treffen.
Und so stehe ich den Ausführungen des Entwicklers recht nahe.

Übrigens ließ sich per Software die Latenz noch deutlich unter 15 ms 
runterstellen, was dann zu Tonaussetzern führte.

Anzumerken ist noch, das sowohl cubase, logic als auch Reason Nutzer mit 
unterschiedlichster Hardware mit diesem Thema zu tun hatten.

LG
Andre

von tommy (Gast)


Lesenswert?

Gib mal in einer Suchmaschine Deiner Wahl
"pc für audio optimieren" ein.

Funk-Maus, Funk-Tastatur, Logitech-Webcam, aktives W-Lan
und VirenScanner sind Deine Feinde ;-)

Bei http://www.virtualdj.com/wiki/DE%20Windows%207%20tuning.html
kannst Du mal die Links zu Latenz-Problemen anschauen:
http://www.thesycon.de/eng/latency_check.shtml
http://resplendence.com/latencymon

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.