Budowa wydajnego i niedrogiego domowego systemu HiFi.

Systemy HiFi, charakteryzujące się dużą precyzją i czystością odtwarzanego dźwięku, kojarzą się zwykle ze sporymi wydatkami rzędu tysięcy, a nawet dziesiątek tysięcy złotych. Sytuację na tym specyficznym rynku pogarsza również wiara w magię ultra-drogich audiofilskich przewodów połączeniowych czy inne ślepe przekonania, często niemające jakiegokolwiek odzwierciedlenia w praktyce.

Nie oznacza to jednak że jesteśmy skazani na (często) kaleczenie uszu muzyką odtwarzaną ze zintegrowanej karty dźwiękowej komputera czy zablokowanego, ze względu na ograniczenia unijne, układu dźwiękowego smartfona z Androidem. Dostępne na rynku niedrogie układy cyfrowo-analogowe i zestawy kolumn aktywnych, w połączeniu z dokonaniem poprawnej konfiguracji oprogramowania może zadowolić nas bardzo dobrą jakością odtwarzanego dźwięku oraz wygodą użytkowania przez sieć lokalną za stosunkowo niewielkie pieniądze.

Odtwarzacz

Przedmiotem niezbędnym do słuchania muzyki jest źródło dźwięku. W naszym systemie za źródło takie posłuży Raspberry Pi 3B - kwota zakupu obudowy, dedykowanego zasilacza, odpowiednio dużej oraz szybkiej (klasa 10 minimum) karty pamięci, no i samej płytki w jednym z większych polskich sklepów internetowych zamyka się w kwocie 270 złotych. Model 3B jest optymalnym rozwiązaniem do tego zastosowania, gdyż starsze wersje malinki charakteryzują się o wiele mniejszą ilością pamięci operacyjnej oraz słabszą jednostką obliczeniową, co może być sporym utrudnieniem przy korzystaniu z oprogramowania, które na tym urządzeniu zainstalujemy zaś najnowsze wydanie, znane pod nazwą 3B+ nie jest jeszcze wspierane przez to oprogramowanie, jednocześnie będąc nieco droższym, zaś modernizacje, dokonane na tej rewizji płytki, nie są na tyle znaczące aby w jakikolwiek sposób utrudnić bądź uniemożliwić nam korzystanie z niej jako cyfrowego odtwarzacza muzyki.

Oczywiście za źródło dźwięku możemy wykorzystać inną mocniejszą płytkę jak OrangePi, ODROID czy NanoPi K2, jednak nie ma to większego sensu do naszych zastosowań. Ponadto warto wspomnieć że ODROID C2, jedna z najmocniejszych dostępnych obecnie płytek developerskich, ma problem z jakością wyjścia cyfrowego dźwięku i pomimo moich prób nad rozwiązaniem tego nie było możliwe naprawienie tej niedogodności, najprawdopodobniej spowodowanymi niedopracowanym sterownikiem przesyłu dźwięku cyfrowego przez magistralę USB (snd-usb-audio), niezależnie od portu używanego do połączenia (port USB OTG lub jeden z portów zintegrowanego huba USB).

Przetwornik

Niestety, sama płytka Raspberry Pi, pomimo posiadania wbudowanego układu dźwiękowego, w żaden sposób nie nadaje się do słuchania muzyki. Powodem tego jest naprawdę mierna jakość analogowego wyjścia, jednak lwia większość, jak nie wszystkie, płytki typu SBC ze względu na swą konstrukcje nie są w stanie zagrać lepiej. Sytuacje jednak ratują tak zwane USB DAC, czyli zewnętrzne przetworniki, podłączane przez gniazdo USB płytki, które omijają wbudowany w płytkę układ audio i samodzielnie dokonują konwersji z cyfrowej postaci muzyki do analogowej. Wówczas jakość dźwięku jest już zależna bezpośrednio od jakości przetwornika.

Warto wspomnieć również o przetwornikach dedykowanych dla Raspberry Pi, wpinanych w magistralę I2S, jak HiFiBerry. Te jednak są zwykle nieopłacalne i mniej uniwersalne niż DAC ns USB, oferują - w mojej ocenie - węższą scenę i mniejszą przejrzystość górnych rejestrów, niż dobrej, czy nawet średniej, jakości DAC USB. Rozwijając myśl uniwersalności, DAC USB możemy podłączyć do komputera z Linuksem czy smartfona z Androidem, oferuje więc wiele możliwości, a przy dzisiejszych konstrukcjach typu SMSL M2, przetwornik może być naszym codziennym towarzyszem podczas ulicznego słuchania muzyki ze smartfonu.

W jednym z internetowych sklepów przetwornik ten można nabyć za kwotę 240 złotych, i posiada bardzo dobry współczynnik ceny do jakości. Inną propozycją, droższą, ale o wiele bardziej rozbudowaną jest SMSL M3, którego koszt wynosi obecnie około 450 złotych. Oprócz gniazda USB oferuje on możliwość dodatkowego zasilenia za pomocą drugiego gniazda USB oraz wejście COAX i optyczne. W przypadku tego przetwornika ważne jest podłączenie dodatkowego zasilacza przy połączeniu z Raspberry Pi 3B, gdyż amperaż gniazda USB malinki jest niski i czasami daje się we znaki niestabilna praca przetwornika. Zasilacz powinien podawać 5V napięcia oraz minimum 1.5A natężenia, przykładem dobrej i sprawdzonej ładowarki, użytej do tego celu może być Samsung EP-TA12EBEUGWW, oferujący prąd 2A przy napięciu 5V, zabezpieczenia przeciw przeładowaniu i przegrzaniu oraz kabel USB w zestawie. Miernik prądu na USB potwierdził stabilność tych parametrów, a nawet wskazał na nieco wyższe napięcie (wynoszące około 5.20 - 5.50V, zależnie od obciążenia), co ma sens biorąc pod uwagę możliwe straty energii na samym przewodzie. W sklepie internetowym, posiadającym również punkty stacjonarne, kosztuje ona 49 złotych. W tym wpisie wybierzemy właśnie SMSL M3 z zasilaczem Samsunga.

Nagłośnienie

Na liniowe wyjście 2xRCA (niezależne od poziomu głośności ustawionego potencjometrem przetwornika umieszczonego na przednim panelu) możemy podłączyć , kablem 2xRCA <-> 2xRCA lub 2xRCA <-> Stereo Jack 3.5 (zależnie od potrzeb), zewnętrzny wzmacniacz lub aktywny zestaw kolumn. Możemy pomyśleć nad obecnie posiadanym zestawem głośnikowym lub skorzystać z kilku niedrogich propozycji takich jak Logitech 2.1 Z313 czy też droższy Logitech 2.1 Z533, są to całkiem niedrogie zestawy które można nabyć - pierwszy do 200, drugi do 400 złotych. Warto również przyjrzeć się zestawom Edifier, które odznaczają się wysokim stosunkiem jakości do ceny. Na potrzeby wpisu przyjmujemy zestaw Logitech 2.1 Z533, którego dokładna cena w jednym ze sklepów internetowych wynosi 319 złotych.

Słuchawki

Na obudowie wzmacniacza oprócz niezależnego od wbudowanego potencjometru głośności znajduje się również kontrolowane przez ten właśnie element wyjście słuchawkowe. Słuchawki są wyborem indywidualnym, dobrym pomysłem jest wybranie się do sklepu którego nazwa zaczyna się na nazwę jednego z formatów audio. Dobre słuchawki możemy już zakupić w cenie do 400-500 złotych, bardzo interesującą propozycją mogą być słuchawki SoundMagic HP150, tudzież ich unowocześniona rewizja (która jednak nie doczekała się zmian w przetworniku) identyfikowana jako HP151. W tym wpisie wykorzystamy unowocześnioną rewizję, która obecnie jest łatwiejsza do nabycia i możemy cieszyć się jej walorami słuchowymi wyciągając z portfela kwotę 549. Warto dodać że słuchawki te posiadają wymienny kabel, co jest szczególnym atutem w tej cenie, ze względu na dużą częstotliwość awarii przewodów słuchawkowych. W tym jednak przypadku dołączony przewód jest solidnie wykonany i powinien nie zawodzić podczas codziennego użytkowania.

Przygotowanie do montażu

Posiadając te wszystkie elementy możemy dokonać ich przygotowanie do współgrania :). Zależnie od modelu kolumn oraz przetwornika, kablem USB dobrej jakości (zwykle taki dołączony jest do zestawu) łączymy Raspberry PI, tudzież inną płytkę SBC, z zewnętrznym przetwornikiem. Zewnętrzny przetwornik podłączamy wyjściami RCA LineOut bezpośrednio do aktywnego zestawu kolumn lub wzmacniacza. Do regulacji głośności będziemy używać zamieszczonego na głośnikach lub piecu kontroli poziomu, zwykle w postaci potencjometra lub dwóch przycisków.Słuchawki podłączamy do odpowiednio oznaczonego gniazda Jack 3.5mm lub Jack 6.3mm (wówczas z użyciem przejściówki z "dużego" na "mały" Jack) i ich poziom głośności regulowany jest za pomocą umieszczonego na przetworniku kontrolera głośności.

Oprogramowanie

Za oprogramowanie do odtwarzacza użyjemy specjalnie zmodyfikowanej dystrybucji Debiana, zaprojektowanej specjalnie do bit-perfect audio playback - czyli przesyłania niezmodyfikowanego dźwięku do zewnętrznego przetwornika - nazwanej Volumio. Jest ono dostępne do pobrania za darmo dla kilku popularniejszych płytek SBC na oficjalnej stronie projektu. Volumio udostępnia użytkownikowi atrakcyjny przeglądarkowy interfejs graficzny, który pozwala na dostęp do zasobów odtwarzacza z każdego innego urządzenia będącego w sieci lokalnej, lub przekierowując porty - nawet poza nią. Volumio bazuje na MPD (Music Player Daemon) - jest to odtwarzacz działający jako usługa systemowa, dostęp do niego uzyskiwany jest z użyciem Unix Socket (tak jest w przypadku interfejsu przeglądarkowego serwowanego przez urządzenie) lub przez protokół TCP/IP na porcie 6600 co umożliwia stosowanie do niego zewnętrznych klientów na takie systemy jak Linux czy Android.

Instalacja Volumio

Do rozpoczęcia procesu niezbędny jest dostęp do zasobów sieci lokalnej oraz czytnik kart microSD Po pobraniu odpowiedniego obrazu z oficjalnej strony projektu wkładamy kartę microSD i wypalamy go bezpośrednio na kartę pamięci narzędziem dd dostępnym w każdej dystrybucji. Należy pamiętać że jego nieumięjetne używanie jest w stanie uszkodzić nasz dysk twardy oraz dane, dlatego należy korzystać z niego w przemyślany sposób. Uruchamiamy okienko terminala (zwykle skrótem klawiaturowym CTRL+ALT+T) i sprawdzamy ścieżkę urządzenia pod którym została zmapowana karta pamięci sugerując się rozmiarem pamięci czy etykietą partycji.

lsblk

Zwykle jest to /dev/sdX (w moim przypadku - /dev/sdf), należy zapamiętać tą ścieżkę, będziemy na niej operować. Następnie komendą cd przechodzimy do ścieżki w której znajduje się pobrany plik z Volumio. Przykładowo jeżeli plik znajduje się w katalogu Pobrane, do folderu przejdziemy wpisując

cd ~/Downloads

gdzie ~ jest systemowym odniesieniem do katalogu domowego bieżącego użytkownika. Jeżeli nie jesteśmy pewni czy znajdujemy się w dobrej lokalizacji, możemy użyć komend pwd oraz ls do sprawdzenia bieżącej ścieżki roboczej oraz zawartości bieżącego katalogu.

Kiedy już znajdujemy się w odpowiednim katalogu wypakowujemy archiwum ZIP z obrazem systemu.

unzip <nazwa_pliku_zip>

Gdzie jako nazwę pliku podajemy nazwę pliku ZIP volumio-*.zip. Dla ułatwienia wprowadzania możemy skorzystać z metody automatycznego uzupełniania ścieżek, aktywowanego przyciskiem tabulacji. Po zakończeniu operacji sprawdzamy komendą ls czy wszystko zostało dobrze rozpakowane, a następnie zaczynamy wypalanie obrazu na karcie.

sudo umount /dev/sdf
sudo wipefs /dev/sdf -fa
sudo dd if=<nazwa_pliku_img> of=/dev/sdf bs=1M conv=fsync
sudo sync

Gdzie /dev/sdf jest użytym w moim przypadku napędem, u każdego napęd ten może być inaczej oznaczony, należy pamiętać o tym aby przed wykonaniem tych komend upewnić się co do ich poprawności oraz warto sprawdzić czy kopia zapasowa plików z karty pamięci została dokonana - wszak przy instalacji systemu na karcie, jej dotychczasowa zawartość jest całkowicie wymazywana i nie da jej się później odzyskać. <nazwa_pliku_img> zamieniamy na nazwę pliku który został wypakowany z archiwum, posiada on rozszerzenie IMG i waży zwykle o wiele więcej więcej niż archiwum z którego został wypakowany. Przedostatnia komenda w zależności od komputera oraz prędkości karty pamięci może wykonywać się kilka minut, jest to całkowicie normalne i nie należy tego przerywać.

Po wykonaniu powyższych czynności nasza karta z Volumio jest gotowa do użytku. Należy ją włożyć do slotu microSD płytki, podłączyć zasilacz do gniazdka miniUSB, przetwornik do portu USB oraz skrętką połączyć płytkę z domowym routerem za pomocą gniazda 8P8C. Pierwszy rozruch urządzenia trwa około 10 minut, należy wówczas zostawić je bezczynnie. Po tym czasie możemy zalogować się do graficznego interfejsu odtwarzacza za pomocą komputera lub smartfonu przechodząc z poziomu przeglądarki internetowej pod adres http://volumio.local. W przypadku kiedy ścieżka ta nie działa konieczne może być wpisanie pełnego adresu IP urządzenia, przechodząc do panelu zarządzania routerem (w tym przypadku jest to http://192.168.1.1, domyślny adres urządzenia często jest określony na dolnej pokrywie routera) oraz dalej postępując zgodnie z instrukcją routera.

Po przejściu i odnalezieniu urządzenia naszym oczom okaże się kreator konfiguracji w trakcie którego konfigurujemy nazwę urządzenia, język czy parametry odtwarzania. Najistotniejszym ustawieniem w tym etapie jest konfiguracja zewnętrznego przetwornika USB jako domyślnego urządzenia wyjściowego audio - dokonuje się tego w zakładce Output.

Po przejściu tego etapu konieczne jest dokonanie kilku modyfikacji w ustawieniach, celem osiągnięcia maksymalnej jakości dźwięku. Klikamy w tym celu na koło zębate --> Playback Options. Tam też należy dokonać konfiguracji takiej jak na zrzucie poniżej.

Ustawienie to wyłącza programową kontrolę głośności z poziomu interfejsu użytkownika, która faktycznie jest wygodna, ale również wprowadza zbędne zniekształcenia dźwięku, na których uniknięciu nam zależy :). W przypadku przetworników wspierających sprzętowy mikser głośności, ustawienie Mixer Type warto ustawić na wartość Hardware - wówczas możliwa będzie bezpośrednia kontrola głośności przetwornika z poziomu interfejsu graficznego, niestety opcja ta dostępna jest w stosunkowo niewielkiej liczbie urządzeń, szczególnie w tym segmencie cenowym.

Po zapisaniu ustawień wystarczy już tylko podłączyć do gniazda USB zewnętrzny dysk twardy czy też pendrive z muzyką z wcześniej zgraną z płyt muzyką i w drogę :).

Powłoka SSH

Bardziej zaawansowani użytkownicy mogą być zainteresowani dostępem do konsoli poleceń siedzącego pod przykrywką odtwarczacza muzyki Debiana :). Z jej poziomu możliwe jest na przykład postawienie serwera VSFTPD, umożliwiającego wgrywanie plików bezpośrednio na kartę pamięci znajdującą się w urządzeniu przez sieć, dokonywać bardziej szczegółowych konfiguracji wyjść audio czy doinstalowywać dodatkowe pakiety rozbudowujące możliwości cyfrowego odtwarzacza. Uczynić to można przechodząc pod adres http://volumio.local/DEV i naciskając na ENABLE. Zmiana tego ustawienia działa natychmiastowo, od razu możliwe jest połączenie z urządzeniem przez dowolny klient SSH.

Zewnętrzne klienty MPD

Jeżeli z jakichś przyczyn domyślny przeglądarkowy interfejs Volumio nie przypadł nam do gustu czy też pragniemy mieć szybszy dostęp do funkcji odtwarczacza, możemy skorzystać z zewnętrznego klienta który bezpośrednio przez protokół TCP/IP, łączyć się będzie z urządzeniem i pozwalać na zarządzanie nim. Ich konfiguracja zwykle ogranicza się do podania adresu IP odtwarzacza (lub ścieżki http://volumio.local).

Na komputerze możemy skorzystać z Gnome Music Player Client. Jest on dostępny z repozytorium każdej większej dystrybucji i jego instalacja ogranicza się do jednej komendy w terminalu

sudo apt-get install gmpc -y

Po instalacji w menu komputera pojawi się nasz program, który przy pierwszym uruchomieniu zapyta o adres urządzenia i umożliwi wygodne korzystanie z niego.

Na Androidzie możemy skorzystać z MPDroid, który dostępny jest do pobrania ze sklepu F-Droid. Tam konfiguracja podobnie ogranicza się do podania adresu urządzenia i... korzystania z niego :). Należy być przy tym podłączony do domowej sieci WiFi.

Słowem podsumowania... czy warto?

Sumując kwotę całego sprzętu, użytego jako przykładowy w powyższy wpisie, wychodzi kwota 1645zł. Czy to dużo? Zależy jak na to patrzeć. W pełni przygotowany i wyposażony zestaw audio złożony od podstaw z dobrej jakości komponentów w tej cenie jest kuszącą propozycją. Tym bardziej biorąc pod uwagę że powyższe ceny zawierają sklepowe ceny nowego sprzętu. Zawsze możemy skorzystać z ogłoszeń, chociażby na Allegro, gdzie ten sam sprzęt możemy nabyć nawet dwa razy taniej (używany lub nowy). Dodajmy jeszcze do tego że każdy ma nieco inne oczekiwania co do sprzętu, jakości muzyki, mocy i każdy dopasuje do niego to co mu najbardziej odpowiada, zaś często w domach znajdują się nieużywane zasilacze, karty pamięci, inny może mieć już swoje własne ulubione słuchawki których używa z komputerem, jeszcze inny ma zestaw głośników pasywnych ze wzmacniaczem który kurzy się i czeka na lepsze czasy... doczeka się? :)

Miłego odsłuchu! :)