Foobar2000 jest odtwarzaczem darmowym, który wykorzystuję od lat i zapewne jeszcze długo będę wykorzystywał. Choć sama aplikacja jest już na starcie dosyć mocno rozbudowanym narzędziem, to po dołożeniu dodatkowych komponentów staje się narzędziem potężnym. Jednym z takich komponentów jest chociażby obsługa trybu ASIO, a zaraz po nim możliwość dekodowania plików DSD.
Choć o plikach DSD (ang. Direct Stream Digital) i różnych okolicznościach z ich dekodowaniem związanych pisałem obszernie w artykule o optymalizacji kart dźwiękowych Xonar Essence ST i STX, chciałbym podjąć się tego tematu jeszcze raz i tym razem opisać w prostej formie jak skonfigurować szybko i prosto krok po kroku Foobara2000 wraz z odpowiednimi wtyczkami, aby móc dekodować sprawnie pliki DSD. Aby móc to osiągnąć, pozwolę sobie ograniczyć już do gotowych ustawień i nie tłumaczyć które ustawienie co powoduje lub jakie niesie ze sobą konsekwencje. Wtórując za artykułem o optymalizacji ST/STX, wszystko mam skonfigurowane domyślnie tak, aby uzyskać maksymalną jakość dźwięku.
Zanim zaczniemy
W artykule będę starał się pisać bardzo prosto i zwięźle, poruszając się w dwóch perspektywach sprzętowych:
- Asus Xonar Essence STX (jest obsługa ASIO z pominięciem miksera systemowego, brak obsługi DSD/DoP)
- Pathos Converto MK2 (jest obsługa ASIO z mikserem dla PCM, za to w pełni izolowana obsługa DSD/DoP)
Są to urządzenia przeze mnie używane i automatycznie najłatwiejsze do wykorzystania jako przykłady. Odtwarzacz do obu urządzeń musi być jednak skonfigurowany inaczej.
- W pierwszym przypadku skupimy się na dekodowaniu i konwersji DSD w locie do PCM, ponieważ urządzenie nie obsługuje plików DSD w ogóle.
- W drugim przypadku zrobimy to zgodnie ze sztuką i z pełną obsługą DSD.
Oczywiście od razu widać co będzie nam potrzebne i przede wszystkim musi to być urządzenie z obsługą natywną ASIO lub ewentualnie jakimś wrapperem na którego będziemy mogli przekierować dekodowanie i użyć do strumieniowania na urządzenie docelowe. W moim przypadku oba urządzenia posiadają natywne ASIO, więc to na nim będę starał się pracować. W przypadku chęci użycia wrapperów, kłaniają się ASIO4ALL lub WASAPI z artykułu o optymalizacjach.
Istnieją dwie metody aktywacji pracy dekoderów DSD/SACD w programie Foobar2000:
- „Stara metoda”: za pomocą wtyczki DSDIFF lub ASIO Proxy
- „Nowa metoda”: za pomocą DSDTranscodera.
Artykuł opisuje właśnie tą drugą metodę, która ma sens przy założeniu, że dany DAC jest na tyle nowoczesny, że współpracuje właśnie z DSDT. Jeśli notujemy problemy z jego działaniem, być może skorzystanie z ASIO Proxy jest właściwsze.
Instalacja Foobara2000 oraz wtyczki ASIO
- Sam odtwarzacz można pobrać za darmo wprost ze strony autora. Instalację rekomenduję przeprowadzić bezpośrednio jako aplikację, nie jako wersję przenośną, ale jest to oczywiście w gestii samego użytkownika.
- Od razu warto pobrać dodatkową wtyczkę ASIO suport 2.1.2 (foo_out_asio).
- Po instalacji odtwarzacza wchodzimy w ustawienia File -> Preferences albo naciskamy skrót Ctrl + P.
- Na drzewku po lewej klikamy na Components i wybieramy Install…
- Wskazujemy ściągniętą wcześniej bibliotekę foo_out_asio, po czym Apply i uruchamiamy ponownie odtwarzacz.
Przeprowadzamy podstawową konfigurację opisaną w odpowiednim akapicie poradnika optymalizacyjnego dla ASIO, lub po prostu ustawiamy 32 bit i 10 ms, po czym sprawdzamy czy nie ma problemów z odtwarzaniem w takim trybie. Oczywiście należy pamiętać o wybraniu odpowiedniego urządzenia ASIO w samym programie.
- Jeśli słyszymy trzaski, zwiększamy bufor sprzętowy z 10 ms na więcej, najlepiej nie więcej niż 50 ms.
- Jeśli słyszymy do tego przycięcia (zawieszenia się) dźwięku, konfigurujemy Foobara aby zawsze uruchamiał się w trybie administratora.
Jeśli nie słychać już żadnych niepokojących rzeczy i odtwarzacz zachowuje się stabilnie, przechodzimy do pobierania dodatkowych wtyczek. Sprawdzenie czy samo odtwarzanie jest w istocie w trybie bit-perfect można w domowych warunkach zdeterminować na przykład tymczasowo wyłączając usługę Windows Audio:
Może się tak zdarzyć, że dane urządzenie nie będzie miało żadnych dodatkowych opcji ASIO. Jeśli ich nie ma lub są one szczątkowe (vide Pathos mający tylko opcję bezpiecznego buforu w najnowszych sterownikach), po prostu przechodzimy dalej. Jeśli zaś nadal będą słyszalne jakieś sporadyczne trzaski, należy albo zwiększyć pojemność bufora audio jeszcze mocniej, albo rozpocząć diagnostykę systemu, wliczając w to wykorzystanie zasobów sprzętowych, procesora i zachowanie się procesów systemowych pod kątem latencji (DPC), problemów oraz chaotycznego odpytywania sterowników, tudzież konfliktów przerwań (IRQ) na głównych szynach komputera. Jeśli korzysta się z urządzenia na USB, dochodzą jeszcze potencjalne problemy z okablowaniem, kontrolerem lub jego sterownikami.
Instalacja wtyczki SACD oraz DSD Processor
Pobieramy stąd wtyczkę Super Audio CD Decoder, która ma w sobie dodatkową wtyczkę DSD Processor.
Rozpakowujemy paczkę i ponawiamy instalację poprzez okno Components w odtwarzaczu. Możemy wybrać obie wtyczki po kolei i dopiero wówczas kliknąć Apply i uruchomić ponownie odtwarzacz, ale jeśli nie zamierzamy pracować bezpośrednio z materiałem DSD, tj. nasze urządzenie nie posiada takiej możliwości, możemy ograniczyć się tylko do samej wtyczki foo_out_sacd. Musimy mieć jednocześnie wtyczkę ASIO zainstalowaną wg instrukcji z poprzedniego akapitu.
Jeśli obie wtyczki są widoczne (a z wtyczką DSD Processor wszystkie trzy), na tym etapie będziemy mogli uruchamiać nasz odtwarzacz w trybach:
- bit-perfect PCM (ASIO)
- konwersji plików DSD do PCM w locie
- DoP
Specjalnie wypunktowałem DSD do PCM i DoP osobno. DoP nie jest bowiem tym samym co konwertowanie w locie do PCM. Można to nazwać bardziej przemycaniem materiału DSD w formie pakietów PCM, ale urządzenie wciąż musi mieć po swojej stronie wsparcie takiego procesu odczytywania danych.
Konfiguracja Foobara pod pracę z PCM/ASIO
Jest to scenariusz, w którym:
- Nasze urządzenie nie posiada żadnej zdolności dekodowania plików DSD (tj. obsługuje wyłącznie PCM, w moim przypadku Essence STX)
- Posiadamy w swojej audiotece zarówno pliki PCM jak i DSD
- Chcemy automatycznego odtwarzania plików DSD w PCM od ręki, bez jakiejkolwiek zmiany ustawień
Ponieważ samo ASIO już powinniśmy mieć ustawione, pozostaje nam skonfigurować wtyczkę foo_out_sacd tak, aby konwertowała nam w locie wszystko ponadprogramowe do PCM.
Jako że Essence STX jest limitowany do próbkowania 24/192, swoją wtyczkę konfiguruję następująco:
Jako urządzenie wyjściowe należy wybrać te, które przechodzi przez interfejsy wtyczek DSD i ASIO, w moim przypadku będzie to DSD : ASIO : Asus Xonar ASIO driver. Na tym etapie nie pracujemy jednak z procesorem DSD, więc nie musimy sobie nim zawracać głowy. Szybkie sprawdzenie statusu ASIO na Pathosie potwierdza, że wszystko pracuje w trybie PCM:
Konfiguracja Foobara pod pracę z DoP
Jest to scenariusz, w którym:
- Nasze urządzenie posiada zdolność dekodowania plików DSD w konkretnych trybach DoP (tj. DSD over PCM, tutaj na przykładzie Converto MK2)
- Posiadamy zarówno pliki PCM jak i DSD
- Znów chcemy automatycznego odtwarzania naszych plików DSD w PCM bez jakiejkolwiek specjalnej zmiany ustawień
Cały czas operujemy w takiej sytuacji na wtyczce SACD, której zmieniamy dosłownie 2 ustawienia:
- Output mode: definiujemy jako DSD+PCM (dane DSD + dodatkowy transport PCM dla Foobara w celu działania poprawnie części jego funkcjonalności, w tym wizualizacji).
- DSD Processor: wybieramy opcję o tej samej nazwie z listy rozwijanej.
Ważne jest, aby wiedzieć na tym etapie z jakich trybów korzysta nasze urządzenie. W przypadku Converto mam możliwość pracy tylko w trybach DoP64 i DoP128. Oznacza to, że mogę odtwarzać maksymalnie tylko pliki DSD128 i transportować je przed dekoder do urządzenia po PCM. Jeśli nie mamy wiedzy które tryby są obsługiwane przez nasze urządzenie, wystarczy mieć kilka testowych plików DSD w różnych gęstościach i sprawdzać na której gęstości program zwróci błąd.
Nie oznacza to jednak, że odtworzenie takiego pliku będzie niemożliwe. Tu właśnie do gry wchodzi DSD Processor. Klikamy na nim na drzewku z lewej strony i zaznaczamy opcję Use DSD Processor.
Jak widać cała tabela jest pusta i należy ją wypełnić, ale wystarczy uczynić to tylko dla tych trybów, których nasze urządzenie nie obsługuje. Ja np. wypełniam pozycję DSD256, ponieważ via DoP Pathos mi takich już nie obsługuje. Rekomenduję ustawienia zaprezentowane powyżej. Niewidoczna jest tu jedynie precyzja, która domyślnie jest ustawiona na fp32. Statusy ASIO odpowiednio dla plików DoP64 i DoP128:
Od tej pory powinniśmy więc mieć możliwość swobodnego odtwarzania plików DSD256 jako DoP128. Oczywiście całość należy skonfigurować według własnego sprzętu i posiadanych plików. DSD128 i DSD64 będą automatycznie widziane tu jako odpowiednie gęstościowo pliki pod DoP.
Instalacja wtyczki DSD Transcoder i praca z natywnym DSD
Zamykamy odtwarzacz i pobieramy z listy DSD Transcoder ASIO Driver. Jest w formie spakowanego, instalowanego pliku EXE, który instaluje się bezpośrednio do systemu. Po instalacji uruchamiamy odtwarzacz ponownie. Powinniśmy widzieć nowe urządzenie o nazwie (w moim przypadku) DSD : ASIO : DSD Transcoder (DoP/Native)
Dopiero teraz zaczyna się tak naprawdę praca z prawdziwym materiałem DSD. Moduł ten jest możliwy do wywołania tylko wówczas, gdy w systemie wykryte zostanie urządzenie mające obsługę realną plików DSD, ale też pozwala na pracę z materiałem DoP. Mam podejrzenie, że instaluje się integralnie do urządzenia mającego obsługę DSD i stąd wraz ze zniknięciem go z systemu, deaktywuje się. Prawdopodobnie jest to sterownik na poziomie sprzętowym, ale to jedynie moje domysły sądząc po jego zachowaniu się.
Jego konfiguracja jest za to bardzo prosta. Praktycznie jedyne co musimy zrobić, to wybrać wspomniane wyżej urządzenie odtwarzające, po czym bez odtwarzania muzyki wejść w ustawienia ASIO i dwukrotnie kliknąć na znajdującej się na liście pozycji. Powinien ukazać się nam taki panel (dla wersji 1.0.10):
Definiujemy w nim każdy możliwy tryb, który chcemy wywołać forsownie jako DSD lub DoP. Ustawienia wtyczki SACD możemy pozostawić zaś niezmienione, jak również wciąż wykorzystywać tamtejszy DSD Processor do konwersji nieobsługiwanych gęstości plików. W przypadku Pathosa okazało się jednak, że bez żadnego problemu sprzęt pracuje po USB z sygnałem DSD256. Każdy plik w polu ASIO Status jest u mnie zwracane prawidłowo. Dla plików DSD64:
Dla plików DSD128:
Oraz zadziwiająco dla plików DSD256 (prawdopodobnie pomógł tu fakt instalacji nowszych sterowników od M2Tech):
Podsumowanie
I tak naprawdę to wszystko. Oczywiście zagadnień jest znacznie więcej związanych z pracą na plikach DSD, ale miało być krótko i konkretnie. W przypadku nieposiadania natywnego sterownika ASIO, wymagana będzie jak pisałem zabawa z wrapperami, ale jest to możliwe do osiągnięcia i skonfigurowania z tego co pamiętam. Mam nadzieję, że ten prosty i krótki artykuł, mimo troszkę takiego wskazywania wszystkiego palcem, pomoże sprawnie i szybko skonfigurować sobie odtwarzanie plików DSD w Foobarze.