ASIO i WASAPI dla optymalnego odtwarzania muzyki z PC

Pojawiają się ostatnio wieści o ofertach "muzyki Hi-Fi" z Internetu i pod tym kątem robię trochę nowych testów z PC. W testach z optymalnie skonfigurowanym PC dla melomanów od lat najlepiej wypada WASAPI z ustawieniem 32 bity/196 kHz. Dawno nie sprawdzałem przez to co dzieje się z np ASIO, a w pomocy Light Alloy pozostawiona jest nadal informacja:

Wybierz najlepszą jakość dźwięku dla Twojego sprzętu w następującej kolejności:

  • 1. używaj ASIO, jeśli Twoja karta ma swój własny sterownik ASIO;
  • 2. w przeciwnym razie należy użyć WASAPI w trybie wyłączności (tylko w systemie Windows Vista lub nowszym);
  • 3. inaczej, należy użyć Kernel Streaming, jeśli działa;
  • 4. jeśli żadna z powyższych opcji nie jest możliwa, należy używać DirectSound lub WaveOut. Żadna z nich nie zapewnia bezpośredniego wyjścia sprzętowego, więc zdecyduj opierając się na wydajności.

Moje testy z tym programem wskazują inaczej. Zacytowana powyżej sugestia dotyczy starszych wersji Windows i tym samym dla możliwości ich Audio Session API. Są także nowsze sterowniki dla procesorów dźwięku, a te starsze od np Creative Labs mogą nadal lepiej działać z ASIO. Porównywałem również WASAPI w Light Alloy i AIMP. Wybieram ten drugi, ale przy odtwarzaniu nagrań z wizją ten pierwszy pozostaje najlepszą alternatywą, Natomiast z tunerami TV wybieram WASAPI w ProgDVB. To wskazuje jednoznacznie, że jakość Windows Audio Session Application Programming Interface zależy od producenta oprogramowania.

Punktem wyjścia w moich testach jest odtwarzanie nagrań z głosem, który dobrze znam na żywo, czyli bez pośrednictwa mikrofonu itd. Jeżeli przy danym ustawieniu sprzętu i oprogramowania odtwarzany głos daje pełne wrażenie, że właśnie ta osoba jest w pomieszczeniu, to mogę także dobrze usłyszeć, co jest zapisane w nagraniach z dźwiękiem, którego nie poznałem w rzeczywistości. Z takim wiernym odtwarzaniem muzyki możemy również poznać lepiej, co artyści i realizatorzy dźwięku chcieli nam przekazać.

Tego komfortu nie mamy słuchając muzyki w sklepach, barach itd. Nie ma tam nawet pewności, czy odtwarzane jest oryginalne nagranie, czy jakaś produkcja firmy dostarczającej przeboje w ekonomicznym wykonaniu. Takich nagrań nie ma już chyba w ofertach z płytami. Na winylu wydawano jednak przez długie lata w konkurencyjnych cenach składanki z anonimowymi wykonaniami aktualnych przebojów. Rynek na takie nagrania może być teraz dla publicznego odtwarzania, by ograniczyć opłaty związane z prawami autorskimi.

Niedawno w barze odwiedzanym chętnie przez muzyków wywiązała się dyskusja na temat dziwnego instrumentu w znanym przeboju, który był właśnie odtwarzany. Okazało się, że był to oryginał z klaskaniem w dłonie, a nie jakieś nieudaczne imitowanie tego z syntezatora, na co bardziej wskazywał dźwięk z głośników w barze. Kiedyś zadzwonił także muzyk, że podkładam chyba jakąś świnię z opublikowanym na YouTube amatorskim nagraniem wideo z koncertu. Montowałem to na laptopie i z jego głośniczkami nie miałem szans, by rozróżnić zamierzony efekt dźwiękowy od jakiegoś przekłamania. Przykładowo gitara elektryczna może brzmieć na tysiące różnych sposobów i dopiero z dobrym odsłuchem jest szansa, by wyłapać, czy nie są to jakieś błędy w nagraniu.

W ostatnich testach z nowymi konfiguracjami PC na potrzeby odtwarzania muzyki sprawdziłem ponownie możliwości ASIO, bo pojawiły się nowe sterowniki do popularnego wśród muzyków Sound Blaster. Poprzednim razem testowałem układ Cretaive Labs na pierwszej płycie głównej z odseparowaną elektroniką dla audio, czyli Gigabyte Sniper 5. Płyty nie było jeszcze w sprzedaży i sterowniki pozostawiały nadal wiele do życzenia. Tym razem skorzystałem tylko z karty muzycznej z procesorem X-Fi, którego sterownik pozwala na pracę 32 bity / 96 kHz. Podłączyłem kartę do analogowego zestawu audio kablami ze złączami chinch. W tym celu użyłem wyjścia wg standardu Intel HD Audio, ale bez korzystania z tandetnej konstrukcji gniazda mini jack.

Na pierwszy ogień poszedł referencyjny AIMP. Ustawienie ASIO 32 bity / 96 kHz daje z najnowszym sterownikiem dużą poprawę. Warto przy tej okazji ustawić bufor ASIO na 300 ms, co przy odtwarzaniu pliku wav zapisanego z taką samą rozdzielczością wynosiło 225 kB. W programie AIMP można zapewnić dodatkowo bufor 250 MB, ale mniejsze wartość też dają niezłe rezultaty przy maksimum w ASIO. Nowy sterownik Creative Labs daje również poprawę z WASAPI i najlepiej sprawdza się w trybie Exklusive (Push) 32 bit / 196 kHz .

Największą poprawę z nowym sterownikiem Sound Blaser stwierdziłem jednak z foobar2000 w wersji 1.3.9. Pojawiła się do niego nowa wtyczka dla obsługi ASIO i WASAPI, ale tylko w pierwszym przypadku się sprawdza. Są to wersje beta i WASAPI nadal lepiej jest obsługiwać ze starszą (stabilną). W ustawieniu ASIO można wybrać sterownik 64 bitowy, a bufor 300 ms daje dużą poprawę jakości odtwarzania muzyki. Programowy bufor 30 tys. ms jest także godny polecenia, ale podobnie jak w AIMP może być zredukowany. WASAPI push dla 32bitów również dużo lepiej się sprawuje z najnowszym sterownikiem Creative Labs.

Totalne zaskoczenie było z Light Alloy, gdzie trafiłem tylko na możliwość wyboru trybu "Multichanel Asio Render Filter", a "WASAPI Audio Render" nadal spisuje się trochę lepiej. Niezależnie od trybu z nowym sterownikiem Creative Labs wyraźniej słychać 32 bitowy potencjał procesora. W filmikach mp4 pojawia się większa dynamika w muzyce, ale ogólny odbiór jest nadal trochę za bardzo intensywny, chociaż o wiele lepszy od tego, co było ze starszymi sterownikami.

Podsumowanie

Przekazane we wpisie oceny odsłuchowe mają zachęcić do lepszego wykorzystania możliwości PC przy odtwarzaniu muzyki. Użyte programy są bezpłatne i każdy może zrobić własne testy.

PS

Komentatorzy, którzy nigdy nie zrobią testów, ale chętnie wypowiedzą się na bazie zasłyszanych gdzieś wieści mogą zamieścić pod tym wpisem wiele błędnych informacji, a polemika z nimi zrodzi tylko kolejne dezinformacje. Profilaktycznie cytuję więc obszerne fragmenty z pomocy, którą autor Light Alloy udostępnia użytkownikom.

WASAPI

Windows Audio Session Application Programming Interface (WASAPI), to najnowsza metoda Kernel-streamingu oraz zamiennik dla DirectSound. Za pośrednictwem WASAPI aplikacja może zażądać wyłącznego dostępu do karty dźwiękowej i może wysyłać strumień dźwięku bezpośrednio do karty dźwiękowej. W tym przypadku aplikacja musi obsługiwać dowolny resampling, jeśli częstotliwość próbkowania odtwarzanego dźwięku nie jest obsługiwana przez kartę dźwiękową.

WASAPI zapewnia dwa tryby pracy: współdzielony i wyłączności. W trybie współdzielonym działa podobnie jak DirectSound, a mikser audio systemu Windows robi resampling i mieszanie. W trybie wyłączności WASAPI omija mikser audio systemu Windows oraz ma możliwość wysłania danych bezpośrednio do aplikacji karty dźwiękowej. Ten tryb można zastosować dla formatów takich jak: DTS, DTS Master Audio, Dolby True HD, Dolby digital, Flac, itp. - strumień dźwięku jest dekodowany oraz wysłany w postaci niezmienionej.

Ponadto ważne jest, w jaki sposób WASAPI zarządza danymi miedzy buforami dla różnych trybów. Do przetwarzania danych WASAPI wykorzystuje impuls i metodę pobierania na zażądanie. W push-mode przesuwa stosowne dane do buforów i monitoruje je w sposób ciągły, a kiedy widzi, że bufor jest opróżniany, napełnia go ponownie. W pull-mode, która jest bardziej nowoczesną techniką wykorzystuje zastosowanie dwóch buforów. Sterownik dźwięku dostarcza sygnał do aplikacji, gdy bufor jest pusty, a następnie rozpoczyna przetwarzanie danych z innej pamięci buforowej. W tym samym czasie rozpoczyna się wypełnianie pustego bufora.

W Windows Vista i Windows 7 jest możliwość stosowania WASAPI i jest to bardziej korzystne od DirectSound.

ASIO

Audio Stream Input/Output (ASIO) jest kolejnym sposobem przesyłania dźwięku, ale nie jest to Kernel-streaming. ASIO został opracowany przez Steinberg Ltd. umożliwiając częściowe pomijanie regularnego łańcucha dźwięku podczas odtwarzania audio za pomocą podsystemu audio Windows (w tym Kernel Mixer, który powoduje zniekształcenia). Zapewnia bezpośredni sposób komunikowania się z kartą dźwiękową, czego wynikiem jest doskonały sygnał audio - do 24-bit/192 kHz, przy krótkim czasie reakcji i bez konwersji częstotliwości próbkowania.

Uwaga:
• Profesjonalne urządzenie audio z własnym sterownikiem ASIO zwykle działa lepiej, niż przy użyciu ASIO4ALL używany z rodzajową kartą dźwiękową. Specyficzne karty dźwiękowe przeznaczone specjalnie do nagrywania i produkowania muzyki z reguły mają lepszą jakość dźwięku, lepszą wydajność i są ze sterownikami ASIO, które są przeznaczone dla tego konkretnego urządzenia. 

PS z info w j. ang

Trafiłem na zgrabne wyjaśnienie, które w grudnia 2017 opublikowane zostało przez eksperta z 20 letnim doświadczeniem (David Aleksandersen has extensive experience from the audiovisual industry).

WASAPI (Windows Audio Session API) is Microsoft’s multi-channel audio interface for communication with audio devices. WASAPI was introduced with Windows Vista™ and is supported by Windows 7 and later versions. WASAPI delivers an unmodified audio-stream to a sound device, and provides similar benefits as ASIO.

The Windows Audio Session API is Microsoft's high-end method for interacting with audio devices. It was introduced with Windows Vista and is available in later versions of Windows.

How does WASAPI work?

WASAPI enables client applications, such as WATCHOUT, or any application using audio, to control the flow of audio between the application and audio playback devices. It allows delivery of an unmodified bit-stream to a sound device.

WASAPI provides exclusive access to the audio devices, bypassing the system mixer, default settings, and any effects provided by the audio driver. Unless your audio interface has an ASIO driver, WASAPI is the recommended Audio Output Mode for Windows. WASAPI replaces all Microsoft Windows legacy output modes including Kernel Streaming and Direct Sound.