Thomas Becker Softwareentwicklung
Das Diagnoseprogramm EwmsDiag bestimmt u.a. die Genauigkeit der von der Soundkarte gelieferten Wiedergabepositionen, die über einen Aufruf der entsprechenden Funktion der DirectSound-Schnittstelle von Windows angefordert werden. Diese Funktion wird benötigt, wenn Reaktionen auf auditive Ereignisse innerhalb längerer Sounddateien erfaßt werden sollen.
Ziel der Diagnose ist es, das Ausmaß des bei der Reaktionszeitmessung zu erwartenden Fehlers zu bestimmen, der durch ungenaue Positionsmeldungen der Soundkarte entsteht. So können z.B. Soundkarten mit inakzeptabel hohen Fehlerwerten durch zuverlässigere Modelle ersetzt werden.
Für den Fall, daß der ermittelte Fehler hauptsächlich in einer konstanten zeitlichen Abweichung der Wiedergabepositionen besteht, kann diese Abweichung zur Korrektur der Reaktionszeitdaten eingesetzt werden.
Zusätzlich können mittels EwmsDiag sowohl die Wiedergabe- als auch die Aufnahmelatenz (wichtig u.a. bei der Reaktionserfassung mittels Voice Key) gemessen werden.
Im Rahmen eines Projektes war folgende Aufgabe zu realisieren:
Der Untersuchungsperson (UP) werden Audioaufnahmen von Gesprächssituationen präsentiert. Die Aufgabe der UP besteht darin, auf das Auftreten der Stimme einer oder mehrerer vorgegebener Zielpersonen mittels Tastendruck zu reagieren. Die Gesprächsaufnahmen können mehrere Minuten lang sein und enthalten in der Regel mehrere Reaktionsabschnitte. Die Einsätze der Zielpersonen, die die jeweilige Reaktionszeitmessung starten, werden als Wiedergabeposition der Audiodatei spezifiziert.
Die programmiertechnische Hauptanforderung bzgl. der Soundausgabe besteht hier darin, die aktuelle Wiedergabeposition jederzeit exakt bestimmen zu können, um beim Auftreten einer Tastenreaktion die Reaktionszeit als Differenz aus dem Zeitpunkt des Tastendrucks und dem Zeitpunkt, zu dem die kritische Wiedergabeposition (letztes Auftreten der Zielperson) erreicht wurde, berechnen zu können.
Eine naheliegende Idee bestünde vielleicht darin, zunächst den Zeitpunkt des Wiedergabestarts zu bestimmen und dann den Zeitpunkt des Erreichens der kritischen Wiedergabeposition zu berechnen.
Wird z.B. eine Audiodatei mit der Samplingrate 22050 wiedergegeben, und soll eine Reaktionszeitmessung nach der Ausgabe von 44100 Samples gestartet werden, läßt sich der zeitliche Abstand zum Wiedergabebeginn leicht berechnen:
44100 / 22050 = 2 (Sekunden)
Durch Addition dieses Wertes zum zuvor gemessenen Startzeitpunkt der Wiedergabe erhält man den Zeitpunkt für den Reaktionsstart.
Dieses Verfahren setzt aber voraus, daß die Soundkarte die gewünschte Samplingrate äußerst exakt einhält, was meistens nicht der Fall ist. Und bereits eine Abweichung der Samplerate um ein Promille würde pro Minute einen (kumulativen) Rechenfehler von 60 ms ergeben.
Genaugenommen besteht das Problem auch dann, wenn die Samplingrate exakt eingehalten wird.
Es ist nämlich zu beachten, daß hier zwei voneinander unabhängige Zeitbasen miteinander kombiniert werden:
zum einen der Timer des Rechners, der z.B. für die Messung des Zeitpunkts des Wiedergabebeginns und des Reaktionsereignisses verwendet wird (Rechnerzeit) und
zum anderen der Taktgenerator der Soundkarte, der den Takt der Datenausgabe (Samplingrate) bestimmt (Soundkartenzeit).
Sobald beide Zeitbasen voneinander abweichen, führen Berechnungen, die Werte des einen Systems in Werte des anderen transformieren, zu einem Fehler, dessen Ausmaß exakt der relativen Abweichung der beiden Zeitbasen entspricht.
Beispiel:
Es wird angenommen, daß der Timer korrekte Werte liefert. Die reale Samplingrate dagegen weicht um 1 Promille vom Ideal (22050) ab: 22027,95. Berechnungen zur Vorhersage der Sampleposition (Soundkartenzeit) zu einem bestimmten Zeitpunkt (Rechnerzeit) sind so mit einem relativen Fehler von
(22050 - 22027,95) / 22050 = 0.001
behaftet. Die Größe des resultierenden absoluten Fehlers wächst proportional zum Abstand der vorherzusagenden Position vom Wiedergabebeginn:
nach 20 ms 0,02 ms nach 1.000 ms 1,00 ms nach 2.000 ms 2,00 ms nach 60.000 ms 60,00 ms nach 300.000 ms 300,00 ms
Theoretisch könnte die Abweichung der beiden Zeitbasen voneinander gemessen und als Korrekturfaktor für die Umrechnung zwischen den Systemen eingesetzt werden. Die dafür erforderliche Meßgenauigkeit würde aber extrem lange Messungen bedingen. Und wenn die Parameter eines Systems z.B. aufgrund von thermischen Einflüssen variieren, sind gar keine brauchbaren Werte zu ermitteln.
Da die aktuelle Wiedergabeposition also nicht hinreichend genau berechnet werden kann, muß ein alternatives Verfahren eingesetzt werden. Erfreulicherweise bietet die DirectSound-Schnittstelle prinzipiell die Möglichkeit, jederzeit die aktuelle Position der Audiowiedergabe als Anzahl der bereits ausgegeben Samples abzurufen.
Darauf aubauend wurde folgende Methode verwendet:
Die aktuelle Wiedergabeposition wird alle 18 ms abgefragt.
Die Position für Zeitpunkte innerhalb des Meßintervalles (Zwischenwerte) kann ohne weiteres berechnet werden, da der resultierende Fehler bei derart kurzen Intervallen vernachlässigbar klein ist.
Kleinere Abfrageintervalle würden zwar die Genauigkeit weiter erhöhen, hätten aber zwei Nachteile: Erstens würde weniger Rechenzeit für parallel auszuführende Aktionen wie z.B. das Laden der Sounddaten von der Festplatte übrig bleiben und zweitens haben meine Untersuchungen gezeigt, daß manche Soundkarten zu kurze Abfrageintervalle übelnehmen und ihr Mißfallen dann in Form von unsinnigen Positionsangaben oder sogar Wiedergabeartefakten kundtun.
Prinzipiell könnte das Abfrageintervall auch vergrößert werden, ohne daß dadurch ein relevanter Genauigkeitsverlust entstehen würde. Leider liefern aber manche Soundkarten hin und wieder unsinnige Werte für die aktuelle Wiedergabeposition. Meine Lösung analysiert jeden Wert im Kontext der Werte der letzen paar Sekunden und filtert derartige Ausreißer aus. Das klappt zuverlässiger, wenn mehr Meßwerte zur Verfügung stehen, so daß eine Erhöhung des Abfrageintervalles hier nachteilig wirken würde.
Beim Einsatz des o.g. Verfahrens sollte eine etwaige Latenz des Wiedergabebeginns keine Rolle mehr spielen, denn eine kurze Verzögerung des Wiedergabebeginns ist bei diesem Experiment unkritisch und die Latenz beeinträchtigt auch nicht die Genauigkeit der Abfrage der Wiedergabepositionen, da diese relativ zum realen Wiedergabebeginn zu interpretieren sind.
Problem gelöst? Die Antwort lautet 'Ja', sofern man nicht so genau hinschaut...
Wie ist es denn um die Genauigkeit der von der Soundkarte gelieferten Wiedergabepositionen bestellt? Ist sie hinreichend oder gibt es einen relevanten konstanten oder gar variablen Fehler?
Zur Klärung dieser Fragen wurde das Diagnoseprogramm EwmsDiag entwickelt. Seine Meßverfahren wurden so konzipiert, daß sie ohne aufwendige externe Hardware auskommen, somit also auch problemlos außerhalb eines Labores eingesetzt werden können.
Die Diagnose besteht aus einer wählbaren Anzahl (typisch 50) identischer Messungen, deren Ergebnisse gemittelt werden. Jede Einzelmessung folgt (stark vereinfacht) diesem Schema:
Bei jedem Meßdurchgang werden 750 ms an Sounddaten ausgegeben.
Die Wiedergabe wird durch das Senden des entsprechenden Kommandos an die Soundkarte gestartet. Der Zeitpunkt, zu dem das Kommando geschickt wird, wird gemessen und gilt als Wiedergabebeginn.
Bis zum Wiedergabeende wird alle 18 ms die aktuelle Wiedergabeposition von der Soundkarte abgerufen. Sowohl der so erhaltene Positionswert als auch der Zeitpunkt der Abfrage werden zu späteren Auswertung gesammelt.
Nach Abschluß der Messung werden aus den Meßwerten jeder einzelnen Positionsabfrage zwei Zeitpunkte berechnet:
Sollzeitpunkt: Die Differenz aus dem Abfragezeitpunkt und dem des Wiedergabebeginnes. Als Zeitbasis dient der hochauflösende Timer des Rechners ('Rechnerzeit').
Positionszeitpunkt: Der aus der von der Soundkarte gelieferten Position berechnete Zeitpunkt. Zeitbasis ist der Taktgenerator der Soundkarte ('Soundkartenzeit').
Zeitpunkt-Abweichung bezeichnet die Differenz aus Positions- und Sollzeitpunkt. Je größer der Betrag dieses Wertes ist, desto ungenauer sind die von der Soundkarte gelieferten Positionsangaben.
An dieser Stelle kommt nun doch wieder die Latenz des Wiedergabebeginns ins Spiel. Da sich der tatsächliche Wiedergabebeginn um die Größe der Wiedergabelatenz verzögert, werden die Sollzeitpunkte entsprechend unterschätzt. Und so geht die Wiedergabelatenz als Fehler in den Ergebnisparameter Zeitpunkt-Abweichung ein und verhindert eine sinnvolle Interpretation.
Es ist also erforderlich, die Wiedergabelatenz zu messen, und sie dann zu jedem Sollzeitpunkt zu addieren.
Zur Messung der Wiedergabelatenz wird die Meßmethode folgendermaßen erweitert:
Die ausgegebenen Sounddaten enthalten ab Position 350 ms einen 50 ms langen Ton, der Rest der Daten ist 0 (Stille).
Soundkarteneingang und -ausgang werden mittels eines Audiokabels verbunden.
Zeitgleich mit der Wiedergabe wird ein Aufnahmevorgang gestartet, die Soundkarte also in den sogenannten Duplex-Modus versetzt.
Diese Anodnung führt dazu, daß das wiedergegebene Signal zurückgeführt und simultan aufgenommen wird.
Nach dem Meßende wird der Aufnahmepuffer nach dem Ton durchsucht. Die (positive) Verschiebung seiner Position gegenüber dem Ideal von 350 ms entspricht der Wiedergabelatenz.

Deren Wert kann nun zur Korrektur des Ergebnisparameters 'Zeitpunkt-Abweichung' eingesetzt werden.
Leider führt die neue Meßmethode selbst eine weitere potentielle Fehlerquelle ein: Startet der Aufnahmevorgang unmittelbar oder gibt es auch eine relavante Aufnahmelatenz? Diese würde zu einer Unterschätzung der Wiedergabelatenz führen, denn ein verspäteter Aufnahmebegin würde die Aufnahmedaten in Richtung des Anfangs des Aufnahmepuffers verschieben.
Also wird noch eine Messmethode für die Aufnahmelatenz benötigt.
Die Messung der Aufnahmelatenz verwendet ein ähnliches Prinzip wie die der Wiedergabelatenz. Allerdings kann der Meßton nicht von der Soundkarte erzeugt werden, da er dann von der Wiedergabelatenz betroffen wäre, die ja erst nach der Bestimmung der Aufnahmelatenz zuverlässig ermittelt werden kann.
Stattdessen wird der Ton über den parallelen Druckeranschluß ausgegeben. Die Verbindung zum Soundkarteneingang erfolgt über ein leicht anzufertigendes Kabel, das ein paar Widerstände und Kondensatoren zur Pegelanpassung und Entkopplung enthält.
Der weitere Meßvorgang erfolgt analog zur Bestimmung der Wiedergabelatenz. Die Aufnahmelatenz äußert sich als negative Abweichung (natürlich wird das Vorzeichen noch umgekehrt, um einen positiven Wert zu erhalten) der idealen Tonposition; der Ton wandert in Richtung Pufferanfang.

Die Wiedergabelatenz kann nun durch Addition des Wertes der Aufnahmelatenz korrigiert werden.
Eine gute Nachricht am Rande: Im Gegensatz zur Wiedergabelatenz scheint die Aufnahmelatenz eher unkritisch. Sie lag bei allen bisherigen Messungen im Bereich von maximal 1 ms.
Aufgrund der bislang gesammelten Diagnoseergebnisse verschiedener Soundkartentypen unter unterschiedlichen Betriebssystemversionen lassen sich folgende Aussagen treffen:
Der Mittelwert der Abweichung der Wiedergabepostionen lag meistens im Bereich von ca. 20 bis 30 ms, aber auch Werte von bis zu 100 ms waren nicht selten.
In der Regel ist die Abweichung recht konstant, ihre Standardabweichung bezogen auf den Mittelwert also relativ gering, so daß der Mittelwert sinnvoll zur Korrektur der Reaktionszeiten eingesetzt werden kann.
Beim Einsatz älterer Soundkarten unter Windows 98 wurden deutlich kleinere Abweichungen als unter den neueren Windowsversionen beobachtet. Die größten Abweichungen gab es bei ins Mainboard integrierter Audiohardware.
Die Qualität der Treiber preiswerter Soundkarten ist oftmals äußerst bescheiden. So lieferte ein sehr verbreitetes Modell in Abhängigkeit von der aktuellen Netzwerkaktivität bisweilen gänzlich unsinnige Positionsangaben. Fehlersuche und Anpassung meines Treibers an dieses sporadische auftretende Fehlverhalten bedeuteten mehrere Tage Arbeit. Willkommen in der wundersamen Welt fehlerhafter Treiber!
Fazit: Eine Diagnose der Genauigkeit der Wiedergabepositionen mittels einer geeigneten Diagnosesoftware ist zwingend erforderlich, wenn exakte Reaktionszeiten benötigt werden.
Eine Veröffentlichung detaillierter Ergebnisse einzelner Soundkarten auf dieser Seite scheint mir derzeit nicht sinnvoll, da sie von zu vielen Faktoren abhängen: Treiberversion, Betriebssystem, DirectX-Version, Hardwarerevision usw.
Ferner gibt es eine Reihe von Parametern, die der Programmierer der Experimentalsoftware bei der Ansteuerung der Soundkarte variieren kann und die alle die Positionsabweichung beeinflussen können.
Die Diagnosesoftware muß also exakt dieselben Parameter wie die Experimentalsoftware verwenden, damit die Meßergebnisse auf das Experiment übertragbar sind.
Obwohl das beschriebene Meßverfahren schon recht aufwendig ist, ist es doch noch mit einigen meßmethodischen Problemen behaftet:
Die Messung der Wiedergabelatenz verlangt nach dem Duplex-Modus, also der simultanen Aufnahme und Wiedergabe. Im Experiment wird die Soundkarte aber im reinen Wiedergabemodus betrieben. So stellt sich natürlich die Frage, ob die Ergebnisse der Duplexmessung auf die Bedingungen im Experimentaleinsatz übertragbar sind.
EwmsDiag ermittelt für beide Betriebsarten eine Reihe zusätzlicher Parameter, die manuell auf Übereinstimmung geprüft werden können, um so ggfs. Anhaltspunkte für grundätzliche Unterschiede zwischen den beiden Modi aufzudecken. Kein wirklich sicheres Verfahren.
Das größte Problem in der bisherigen Praxis stellten Soundkarten dar, deren Duplex-Modus nicht richtig funktionierte. Dies betraf vor allem Modelle des untersten Preissegmentes. Angesichts der Tatsache, daß der Duplexmodus nun bereits seit Jahren zum allgemeinen Standard gehört, ein recht überraschender Befund.
Alle im vorherigen Abschnitt dargestellten Probleme lassen sich mittels einer Meßanordnung, die aus zwei Rechnern besteht, vermeiden.
Dabei wird die Messung der Wiedergabelatenz, die ja in Methode 1 den Betrieb im problembehafteten Duplex-Modus bedingt, vom zu untersuchenden Testrechner in einen separaten Meßrechner ausgelagert.
Der Testrechner gibt wie in Methode 1 über die Soundkarte ein Tonsignal aus und mißt die Zeitpunkt-Abweichung. Zusätzlich gibt er über den parallelen Druckerport ein zweites Signal aus, und zwar genau zu dem Zeitpunkt, zu dem der Soundkartenton erklingen würde, wenn die Wiedergabelatenz 0 wäre.
Der Meßrechner führt eine Stereoaufnahme durch, wobei er auf einem Kanal das Soundkarten- und auf dem anderen Kanal das Parallelportsignal des Testrechners empfängt. Die Verschiebung der beiden Signale gegeneinander entspricht der Wiedergabelatenz des Testrechners.
Nach dem Meßende überträgt der Meßrechner die ermittelten Wiedergabelatenzen jeder Teilmessung an den Testrechner, der nun die Wiedergabelatenzen zur Korrektur der gemessenen Zeitpunktabweichung einsetzen kann.
Leider erfordert diese Lösung nicht unbeträchtlichen Aufwand. Während sich die Meßmethodik eher vereinfacht, erwachsen zusätzliche Anforderungen aus der Notwendigkeit, in beiden Richtungen Daten zwischen den Rechnern austauschen zu können. Eine Implementierung über eine Netzwerkverbindung würde den Anwender mit zu vielen Konfigurationsarbeiten belasten und wäre so wenig praxistauglich.
Deshalb wird der Datenaustausch analog über die ohnehin erforderliche Verbindung zwischen den Soundkarten beider Rechner durchgeführt.
Meine aktuelle Implementierung der Meßmethode 2 ist zwar bereits voll funktionsfähig, aber noch nicht hinreichend sauber und anwenderfreundlich umgesetzt, weshalb sie noch nicht veröffentlicht wurde.
So liegen bislang auch nur Meßergebnisse von meinen zwei Arbeitsrechnern vor. In beiden Fällen stimmten die Werte der Methode 2 weitgehend mit denen der Methode 1 überein.
Sie können hier die Freewareversion EwmsDiagL (Light) downloaden, deren Funktionalität sich derzeit auf die Diagnose der Wiedergabepositionen mittels der Meßmethode 1 beschränkt (ohne Messung der in der Regel unkritischen Aufnahmelatenz):
Die Dokumentation finden Sie in der Datei "EwmsDiag.chm" (Windows- Hilfedateiformat).
Bitte beachten Sie, daß das Programm sehr systemnah arbeitet, und so zu manchen Hard- und Softwarekonfigurationen inkompatibel ist.