Hallo zusammen,
Uli hat mich gebeten, einige theoretischen Backgroundinformationen zu geben, zum besseren Verständnis. Also, here we go:
Zu Zeiten von Windows XP war DirectSound das Maß aller Dinge, was die Audioausgabe angeht. Dabei gab es (bezogen auf mAirList/BASS) drei Möglichkeiten der Ansteuerung, die sich insbesondere darin unterschieden, was genau passiert, wenn mehrere Daten gleichzeitig geöffnet sind und/oder wiedergegeben werden, konkret: Wer dafür verantwortlich ist, diese zusammenzumischen, unter Beachtung aller Randbedingungen (z.B. Angleichung unterschiedlicher Sampleraten):
-
Hardware-Mixing: mAirList/BASS unterhält eine Verbindung je Datei zur DirectSound-API, die wiederum eine Verbindung je Datei zur Soundkarte, und letztere übernimmt das Mixing, idealerweise unter Zuhilfenahme spezieller Hardware-Chips (daher “Hardware”-Mixing).
-
Software-Mixing: mAirList/BASS unterhält eine Verbindung je Datei zur DirectSound-API, die allerdings mischt schon alles zusammen, und übergibt es dann in Form einer einzelnen Verbindung an die Soundkarte bzw. deren Treiber.
-
Software-Mixing auf Anwendungsebene: mAirList mischt schon alles zusammen (mittels der bassmix.dll
) und übergibt das Gesamtsignal als eine Verbindung an die DirectSound-API.
Seit Windows Vista und der Einführung von WASAPI gibt es DirectSound als System eigentlich gar nicht mehr. Lediglich die API existiert noch, so dass Anwendungen, die noch für DirectSound geschrieben sind, weiterhin funktionieren. Windows setzt dann intern alles auf WASAPI um - wobei das Hardware-Mixing als Konzept nicht mehr existiert, es wird immer Software-Mixing benutzt. Also in der Regel Möglichkeit Nr. 2 von oben.
Was allerdings bleibt, ist die Tatsache, dass dort je Datei eine Verbindung zur DirectSound-API aufgebaut wird, über das entsprechende COM-Objekt. Es überrascht mich nicht, dass es dort seitens Windows irgendeine “natürliche Grenze” gibt bezüglich der maximalen Anzahl gleichzeitiger Verbindungen. Die kann auch durchaus dynamisch sein, also von anderen Faktoren im System abhängen (Ressourcenverbrauch), oder sich mit der Zeit (Stichwort: Windows-Update) mal ändern.
Lange Rede, kurzer Sinn: Wenn es geht, Finger weg von DirectSound! Eigentlich hätte ich das längst schon aus mAirList entfernen müssen, wenn wir nicht hin und wieder - aus unerfindlichen Gründen - über Karten stolpern, die mit WASAPI nicht so recht wollen. Aber eines Tages muss es so weit sein.
Bei WASAPI gibt es übrigens prinzipbedingt nur das “Software-Mixing auf Anwendungsebene” (Nr. 3). Dort wird also immer von mAirList bzw. BASSmix gemischt.