Massives Problem mit Asio

Hallo

ich habe ein massives Problem mit Asio
Hardware Config:
Board: Asus M2N-E SLI / AMD Athlon64X2 4600 / 4GB RAM (2x Dualchannel mit je 2 1GB Modulen DDR2 @667
Grafik: Asus GeForce 7300 LE 2GB RAM
Sound: Motu 24i/o mit PCIe424 DSP Controller
Onboard Sound ist deaktiviert
Software:
Win7 64bit Home Premium
Motu Treiber 4.0.5.9198 64bit (aktuellste Version), Wave Treiber deaktiviert, nur Asio Support an
Mairlist 4.3.9 Build1877 (hier nur eine Testlizenz, die volle Lizenz ist auf dem gleichen PC unter WinXP32 bit registriert)
Cubase 5.5.3 64bit

Die Testverkabelung: (die Motu hat 24 Ein- und Ausgänge)

out 1-2 -> dbx266XL -> in 1-2
out 23-24 -> Lautsprecher
Mikrofon -> dbx268A -> in 3

Mairlist Audio Setup
Player 1 und 2 -> ASIO out 1-2
PFL Player 1 und 2 -> ASIO out 23-24
Encoder:
Ausgang -> ASIO out 23-24
Line in <- ASIO in 1-2
Mic <- Asio in 3

Egal was ich abspiele, ob per normalem Playlist out oder PFL der Sound ist völlig zerstört, knistert und stottert. Wenn ich den Buffer der Motu auf 2048 Sample setze (bei 44,1 kHz / 16 Bit) läuft das Audio ca 1:30 sauber und wird dann immer schlechter. Selbst wenn ich nur PFL mache also reine Ausgabe eines Signal über Out 23-24 ist das Audio gestört. Das ganze erholt sich erst wenn ich Mairlist beende und wieder starte, allerdings auch nur kurz.
Unter Win XP habe ich bei 512 Sample nur ab und an Knackser, bei 1024 Sample isses sauber, zumindest für ca 45 Minuten, länger hab ich noch nicht getestet.

Da ich die Karte schon einige Jahre besitze und die imemr sauber lief hab ich auf win7 den Gegentest gemacht:
Cubase 5.5.3
Projekteinstellung 96kHz / 24 Bit
Asio Buffer 128 Sample (Latenz: Eingang 1.563 ms / Ausgang 1.573 ms)
Spur 1 ein zu wave gewandeltes mp3 (96kHz / 24Bit)
Spur 2 Aufnahme
der Ausgang der Spur 1 geht nach Asio out 1-2
Spur 2 Eingang ist Asio in 1-2, Ausgang ist 23-24
Der Audiosignalweg ist wieder
out1-2 -> dbx266XL -> in 1-2

hier gibt es keinerlei Knackser oder Aussetzer ab einem Buffer von 128 Sample, Buffer von 64 oder 32 Sample gehen nur bei kleineren Sampleraten aber dann auch völlig Störungsfrei. Diese Einstellungen bei Mairlist keinerlei Chance einer Wiedergabe.
Das Problem scheint aber wirklich an Mairlist oder der bassasio.dll zu liegen. Selbst eine Wiedergabe mit dem Asio output Plugin von Winamp ist kein Problem

Im angehängten Bild sieht man die Asio Auslastung während einer völlig zerhackten PFL Wiedergabe. Diese ist deutlich unter 500µs, das würde heißen ich könnte eigenlich mit 128 Sample arbeiten. Die Einstellung der Karte war dabei allerdings aus 1024 Sample. Genauso sieht übrigens auch die Anzeige aus wenn ich oben beschriebenes Cubase Szenario am Start hab. Ich möchte eigentlich die MAirlist Lizenz, um dann endgültig damit zu arbeiten, auf Win7 übertragen. Das macht aber keinen wirklichen Sinn solange es nicht funktioniert.


latenz.png

Und gleich ein Nachtrag noch bevor ich den ersten Beitrag abgeschickt hatte habe ich einen weiteren Test gestartet.
Als ich im Encoder einen Aircheck hinzugefügt und auch gestartet hatte war der Fehler plötzlich weg. Auch jetzt mit beendetem Aircheck gehts noch sogar bei 256 Sample Buffer. Sobald ich aber im Encoder Aircheck wieder lösche ist der Fehler wieder da. Auch wenn ich Aircheck im laufendem MAirlist wieder anlege bleibt die Störung egal ob ich dann zum aircheck verbinde oder nicht. Erst nach einem Neustart scheint der Fehler wieder weg zu sein, auch wenn ich keine Verbindung herstelle.
Dennoch habe ich die Befürchtung das der Fehler wiederkommt während einer Sendung.

Noch ein Nachtrag, Fehler passiert auch mit dem Asio4all Treiber, allerdings auch nur wenn im Encoder nichts eingetragen ist.

Gruß René

Aber unter XP klappt mit derselben Karte und demselbem mAirList-Setup alles?

Also ich habs grade nochmal unter XP getestet mit der 30 min Demo.
Gleiche Config. Wenn im Encoder keinerlei Verbindng eingetragen ist besteht der selbe Fehler wie unter Win7. Jedoch ist unter XP ein Setup von 48kHz / 256 Samples problemlos möglich. Unter Win 7 brauchts minimal 512 besser noch 1024 Samples. Jedoch nur bei Mairlist. Ich habe unter Win 7 nochmal Cubase getestet, da gehen 10 Spuren rein / raus gleichzeitig auch bei 48kHz / 64 Sample. Liegt aber nicht am Motu Treiber, wenn ich die Karte mit dem Asio4all Treiber anspreche ist der gleiche Fehler. Aktiviere ich den Wave Treiber und lasse die Karte über Direct Sound laufen funktioniert es ohne Fehler. Unter Win7 mit Wasapi ist es an der Grenze. Möglicherweise liegt das an der bassasio bzw basswasapi.
Cubase greift direkt auf den Motu Treiber zu da das Asio Protokoll ja eine Entwicklung aus dem Hause Steinberg ist. Ich denke daher kommt der Geschwindigkeitsvorteil.
Ist ja bisher alles nur Test und Vorbereitung, muss ja noch den Rest wie Mischpult, Fernsteuerung usw. besorgen und zusammenbasteln.
Und als Würgaround funktioniert ja das Eintragen einer Verbindung auch wenn die nur drin steht und nicht verbunden, ja nicht mal angehakelt ist.
Evtl. kannst du das ja mal nachvollziehen für Leute die MAirlist nur als Auspielsoftware ohne Encoder verwenden. Mir ist das unter Win XP auch deswegen bisher nicht aufgefallen weil ich da zuerst nur mit der Onboard Soundcard probiert hatte bevor ich die Motu ein gebaut habe. Und da war von Anfang an eine Verbindung zu unserem Teststrem eingetragen. Somit war das erkennen des Problems und desssen Lösung hier auch nur ein Zufall.

Gruß René

Stell mal bitte die Wiedergabe-Soundkarte des Encoders auf “Keine Wiedergabe”. Am besten auch mal den Line In und das Mic auf “keine Aufnahme”.

Ist die Player-Ausgabe (Wiedergabe bzw. PFL) dann auch noch zerhackt?

Hola Torben,

so zu später Stunde nochmal getest nur unter Win7. Wenn der bei den Audiogeräten im Encoder line in, mic in und wiedergabe kein Gerät eingetragen ist dann geht es. Ich habe sogar noch weiter getestet. Bei eingerichteten Aufnahme und Wiedergabe Geräten kommt der Fehler im PFL erst dann wenn auch ein Audiostream zum Encoder geht. Der Fehler bleibt solange auch im PFL bis ich in der Konfig (bei laufender PFL) den Line In vom Encoder auf keine Aufnahme gesetzt hab. Wenn ich das tue ist die PFL Wiedergabe sofort wieder i.o. Allerdings auch hier nur bei Asio, egal ob mit dem Motu Treiber oder dem Asio4all. Benutze ich die Motu über Directsound gibts das Problem nicht.

Gruß René

Ich habe die Vermutung, dass die ASIO-Aufnahme (also das Line In) die gesamte Audioausgabe ausbremst. Du musst dir das Audiosystem wie ein Uhrwerk vorstellen, wo alle Zahnräder (Eingänge, Verarbeitung, Ausgabe) im gleichen Takt laufen. Wenn ein Zahnrad sich zu langsam dreht, bremst es den Rest des Uhrwerks aus, und die Daten kommen nicht mehr schnell genug an: Aussetzer in der Audioausgabe.

Ich werde mal bei mir einige Tests fahren und schauen, ob sich das Problem reproduzieren lässt. Habe eine Marian Seraph D4 und eine ESI U46 XL zum Testen da.

Zwischenfrage: Hast du irgendwelche DSP-Plugins eingebunden?

Zwischenergebnisse meines Tests:

Ich habe mir folgendes Setup gebaut, mit meiner ESI U46 XL und alles jeweils über ASIO:

  • Player A und B über Ausgang 1/2 bzw. 3/4 zum Mischpult.
  • Mischpultsumme über Eingang 1/2 wieder als Line-In in den Encoder.
  • Wiedergabe des Encoders auf Ausgang 5/6.
  • Stereo Tool als Winamp DSP-Plugin in der Master-Summe des Encoders.
  • Latenz der U46 ist auf 256 bzw. später 512 Samples eingestellt (siehe unten).

In diesem Setup funktioniert alles problemlos, mit und ohne Encoder-Verbindungen - und zwar solange Stereo Tool auf Bypass steht.

Sobald Stereo Tool aktiviert ist, bekomme ich Ruckler sowohl auf den Player-Kanälen als auch auf dem Encoder-Wiedergabekanal. Diese sind relativ leicht zu erklären:

Stereo Tool arbeitet in der Standardeinstellung mit einem Puffer von 4096 Samples. Das bedeutet, es wartet erst diese 4096 Samples ab, bis es sie bearbeitet und die Signalkette weiter runterreicht. Wenn nun aber die ASIO-Latenz auf 256 Samples steht, läuft der ASIO-Puffer regelmäßig leer, es kommt zu Aussetzern und das Lied läuft “zu langsam”.

Ursache ist hier also die Wiedergabe der Encodersumme auf 5/6 - betroffen sind aber auch die anderen Ausgänge 1/2 und 3/4, denn bei ASIO werden alle Ausgänge zusammen in einer Schleife bearbeitet. Stockt ein Ausgang, dann tun es auch die anderen. (Bei DirectSound und WASAPI ist das anders - bei WASAPI hat normalerweise jeder Soundkarten-Ausgang seine eigene Schleife; bei DirectSound baut sogar jeder Player eine eigene Verbindung zur Soundkarte auf.)

Lösen konnte ich das Problem zunächst, indem ich die Latenz der U46 auf 512 gestellt habe (größtmöglicher Wert für diese Karte) und bei Stereo Tool ebenfalls auf 512 (kleinstmöglicher Wert). So klappt es einigermaßen.

Grundsätzlich stehen sich hier aber zwei Anforderungen entgegen, die sich widersprechen: Einerseits will man möglichst latenzfrei abhören, andererseits braucht das DSP-Plugin eine gewisse Latenz (Puffer), um seine Berechnungen ordentlich durchführen zu können.

Um dauerhaft Abhilfe zu schaffen, habe ich im neuen Snapshot 1887 eine weitere Option für den Encoder eingeführt: Wiedergabe ist Pre-DSP. Dann wird das Signal für die lokale Wiedergabe schon vor der DSP-Chain abgegriffen, ist dadurch zwar unbearbeitet, aber auch unabhängig von allen Verzögerungen, die das Plugin ins Spiel bringt.

Ob du auch ein DSP-Plugin verwendest, hast du ja noch nicht geschrieben. Grundsätzlich kann das Problem aber auch auftauchen, wenn eine andere Stelle im “Uhrwerk” die Verarbeitung ausbremst.

Ich bin gespannt, ob diese Erkenntnisse dir bei der Fehleranalyse irgendwie weiterhelfen.

Also das einzige was ich an “DSP” drin hatte war die AGC im Line in. Kompression und Limiting erledigt ein dbx266XL zwischen Aus und Eingang. Da dieser keine wirkliche AGC hat hab ich die AGC in mAirList an. Das Mikro geht bei diesem, wie gesagt immer noch Testsetup, durch einen dbx286A (Vorverstärker mit low Cut -> Kompressor -> deesser -> Bass / Höhen Enhancer -> Expander). Bei der Fehlersuche kann ich eigentlich weiter nur noch raten. Ich vermute das die Bassasio die Bassenc mit Daten zuschüttet und wenn an der Bassenc nichts abtransportiert wird brauchts immer ein stück bis im buffer wieder Platz ist und das klingt dann wie Aussetzer. Bei Cubase passiert das nicht weil Cubase direkt auf den Asio Treiber zugreift und es da nur Ein / Ausgänge gibt. Wenn dort ein Eingang angesprochen wird nimmt Cubase die Daten entgegen, ist der Eingang auf irgendwas geroutet gehen die Daten dahin ist nix geroutet Zappelt zwar das Pegelinstrument vom Eingang, die Daten gehen aber direkt nach /dev/null. Wie gesagt Asio ist ja eine Erfindung von Steinberg. Übrigens bei Cubase wird die Karte auch direkt im System eingebunden und von dort aus konfiguriert. Daher vermute ich das die damit besser umgehen können als bass, bzw die greifen direkt auf Asio zu ohne nochmal per dll zu übersetzen. Will sagen die greifen die Schnittstelle direkt im Programm ab.
Um das in mAirList auch sagen wir mal zu perfektionieren müsste mAirList eine eigene Audioengine bekommen mit direkter Einbindung der Gerätetreiber. Ob das leichter wird als das über bass zu regeln mag ich nicht sagen, auf alle fälle ein Programmieraufwand. Es müssten ja quasi die Funktionen der bass DLL’s nachgebaut werden bzw. eine eigene Routine geschrieben werden.

Hier mal ein Screenshot von Cubase die Einstellung der Motu steht auf 96kHz 512 Sample damit läuft das Projekt flüssig. Bei mAirList hab ich diese hohe Einstellung noch nicht getestet. Da arbeite ich mit 48kHz und 1024 Sample das macht ne Latenz von 21,33 ms von daher kein Problem zumal es am Ende ja so sein wird dass das Monitoring direkt am Mischpult erfolgt und alles was an Effekten ins Signal kommt zwischen Mipu und Eingang der Soundcard als Hardware hängt. Einzig die AGC werd ich anlassen.

Gruß René


cubase.jpg