r   e   k   l   a   m   a
r   e   k   l   a   m   a

HiFiBerry: robimy z Raspberry Pi odtwarzacz muzyki HiFi

Strona główna AktualnościSPRZĘT

Wysokiej jakości dźwięk trafia pod strzechy. Nie trzeba być audiofilem, wydającym dziesiątki tysięcy złotych na sprzęt, by cieszyć się 24-bitowym audio z próbkowaniem 192 kHz bez zakłóceń. Oczywiście dla prawdziwych audiofili, to co tu przedstawimy będzie herezją, ale zwykłym użytkownikom można dziś śmiało polecić do odtwarzania muzyki Raspberry Pi z odpowiednią kartą dźwiękową. Pokażemy Wam, jak łatwo zamienić popularną Malinkę w niedrogi, programowalny odtwarzacz muzyki, który zapewni dostęp zarówno do lokalnej fonoteki jak i streamingu z Internetu.

Oczywiście nikt nie zabrania odtwarzania muzyki bezpośrednio z Raspberry Pi. Jakość generowanego w ten sposób dźwięku jest jednak raczej przeciętna, co więcej, wygląda na to, że przy niskich częstotliwościach nowsze modele Maliny radzą sobie gorzej, niż klasyczny Model B – taki jest koszt porzucenia liniowego regulatora napięcia. Tak samo nie uzyskamy tu raczej dobrego dźwięku wysokiej częstotliwości, powyżej 15 kHz.

Raspberry Pi jest jednak bardzo dobrą bazą pod stworzenie dobrego odtwarzacza dźwięku dzięki możliwości wykorzystania magistrali I2S, stworzonej przez Philipsa specjalnie do przesyłania dźwięku w formie cyfrowej. Magistrala ta oddziela od siebie takt zegara i dane, pozwalając na uniknięcie zakłóceń. Możliwość podłączenia przetwornika DAC bezpośrednio do Maliny znacznie skraca zaś drogę sygnału, pozwalając ominąć kontroler USB i uzyskując sytuację niemal idealną, taką jak w profesjonalnym sprzęcie audio: komputer › I2S ›DAC › wzmacniacz.

r   e   k   l   a   m   a

HiFiBerry: nakładka z pięknym dźwiękiem

Dzięki uprzejmości sklepu Botland otrzymaliśmy do testów kartę muzyczną HiFiBerry w wersji Digi+. Zakładana bezpośrednio na złącze GPIO Maliny karta nie wymaga dodatkowych kabli i jest kompatybilna z Raspberry Pi A+/B+/2/3 (w wypadku modeli A/B konieczne będą małe modyfikacje, albo zakupienie pasującego do nich modelu Digi). Parametry karty wyglądają bardzo interesująco – łączący się po magistrali I2S przetwornik, obsługujący częstotliwości do 192 kHz i rozdzielczości do 24 bit, z wyjściami elektrycznym i optycznym S/PDIF, pozwalającymi podłączyć Raspberry Pi do wzmacniacza. Zasilanie oczywiście bezpośrednio z szyny GPIO, do tego mechanizm automatycznej konfiguracji. Kartę-nakładkę kupimy w Botlandzie za 145 złotych, dla audiofilów dostępna jest też wersja z transformatorem izolującym galwanicznie sygnał z komputera za 199 złotych.

W linii kart HiFiBerry znajdziemy jeszcze modele z wyjściem analogowym RCA oraz model z wbudowanym wzmacniaczem klasy D o mocy 25 W (który oczywiście wymaga zewnętrznego źródła zasilania). Tak samo jak Digi+, łączą się one z Maliną po magistrali I2S, więc kwestia ich wykorzystania zależy od Waszych potrzeb – my zdecydowaliśmy się na ten model z optycznym wyjściem ze względu na to, że do dyspozycji mieliśmy chiński wzmacniacz SMSL z wejściem optycznym oraz Raspberry Pi 2 Model B.

Instalacja kart HiFiBerry jest bardzo łatwa. Delikatnie wciskamy ją na złącze GPIO w Raspberry, otwory montażowe są dopasowane do minikomputerka, więc bez problemu połączymy obie płytki w stos. To wszystko – pozostaje jedynie podłączyć Raspberry Pi do zasilacza, a w gniazdo S/PDIF włożyć wtyczkę kabelka TOSLINK. Niektórzy radykalni audiofile polecają zastosowanie liniowych regulatorów napięcia z toroidalnym transformatorem, ale należąc do opcji umiarkowanej, wykorzystaliśmy tutaj zwykły tabletowy zasilacz 2,1 A z wyjściem microUSB (zasilacze 1,5 A i słabsze nie wystarczą).

Volumio: sieciowy odtwarzacz HiFi

Bez oprogramowania oczywiście HiFiBerry niczego nie zrobi. Pierwotnie zamierzaliśmy szczegółowo pokazać, jak korzystać z tych kart dźwiękowych pod standardowym Raspbianem, ale szybko okazało się, że nie ma to większego sensu, przynajmniej przy założeniu, że Raspberry Pi ma pracować jako wyspecjalizowany odtwarzacz muzyczny.

Uruchomienie HiFiBerry w Raspbianie jest (od Linuksa 3.18) dość proste.

Po pierwsze z pliku /etc/modprobe.d/raspi-blacklist.conf musimy usunąć wiersze
blacklist i2c-bcm2708
blacklist snd-soc-pcm512x
blacklist snd-soc-wm8804

Następnie usunąć sterownik wbudowanego dźwięku, kasując w pliku /etc/modules wiersz
snd_bcm2835
oraz skonfigurować drzewo urządzeń, w pliku /boot/config.txt dopisując wiersz
dtoverlay=hifiberry-digi
Potrzebna będzie jeszcze konfiguracja architektury ALSA – w tym celu tworzymy plik poleceniem sudo nano /etc/asound.conf, do którego wpisujemy:
pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}

Na bazie projektu RaspyFi powstał otóż sieciowy odtwarzacz muzyki Volumio, który nie tylko zapewnia pełną obsługę obsługę kart dźwiękowych podłączanych po I2S, ale też pozwala wykorzystać kolekcję muzyki przechowywanej np. na serwerze NAS czy podłączonym do Maliny zewnętrznym dysku, obsłużyć streaming z usługi Spotify, czy też zastosować specjalne profile kernela do ulepszenia jakości dźwięku.

Uwaga: obecnie stabilna wersja Volumio nie działa jeszcze z najnowszym Raspberry Pi 3, wsparcie zostanie dodane w kolejnej wersji.

Volumio oferowane jest jako gotowy obraz systemu (zbudowanego na bazie Raspbiana), do wgrania na kartę SD. Znajdziecie go do pobrania na stronie projektu. Po rozpakowaniu archiwum zip znajdziemy w środku plik z rozszerzeniem .img, który na kartę nagrać można tak samo jak każdy inny system na Malinę. Instrukcję, jak to zrobić na Windowsie, Linuksie czy Maku znajdziecie w pierwszym artykule z naszej serii.

Połączenie z siecią

Po nagraniu karty i jej włożeniu do Raspberry Pi, nasz muzyczny odtwarzacz startuje, inicjuje kartę dźwiękową, uruchamia odtwarzacz, rozgłasza się w sieci lokalnej i udostępnia swój przeglądarkowy interfejs. Tak to przynajmniej wygląda w idealnym wypadku, gdy Malinkę podłączyliśmy kabelkiem ethernetowym bezpośrednio do routera. Gdy jednak korzystamy z Wi-Fi, zaczynają się schody. Co prawda Volumio zawiera niezbędne pakiety do konfiguracji połączenia bezprzewodowego, ale by to zrobić, należy wpierw Malinę podłączyć przez Ethernet – albo nauczyć się nieco Linuksa.

Najpierw Ethernet, potem Wi-Fi

Pierwsza opcja jest prosta. Po uruchomieniu oprogramowania, w sieci lokalnej powinien pojawić się host o nazwie volumio.local – o ile nasz system i przeglądarka dobrze wspierają protokół mDNS. Bywa z tym różnie, nawet w najlepszym pod tym względem OS-ie X okazało się, że Opera nie rozwiązuje tej nazwy, trzeba było przełączyć się na Safari. Jeśli z jakiegoś powodu volumio.local nie działa, pozostaje wpisać adres IP urządzenia. Najłatwiej znaleźć go w panelu konfiguracyjnym routera, w ustawieniach DHCP (gdzie one są, to już zależy od modelu).

Może być tak, że nie zawsze będziemy dysponowali dostępem do routera. Jedną z najlepszych metod na wykrycie adresu IP komputera podłączonego do sieci lokalnej jest wykorzystanie skanera sieciowego nmap. W wypadku Raspberry Pi wykorzystać można fakt, że adres MAC tych komputerków zawsze zawiera bajty b8:27:eb.
Wydając w konsoli polecenie
nmap -sP 10.0.0.1/24 | awk '/^Nmap/{ip=$NF}/B8:27:EB/{print ip}'
(oczywiście zamiast 10.0.0.1 może być inna pula adresów sieci lokalnej, np. 192.168.0.1), zobaczymy, jaki adres IP dostała nasza Malinka.

Aplikacja webowa Volumio pozwala na zmianę ustawień sieciowych w panelu Menu > Network. W dziale Wireless Connection wpisujemy po prostu nazwę sieci, wybieramy typ szyfrowania (niestety dostępne są tylko WEP i WPA/WPA2-PSK) i wpisujemy hasło. Następnie pozostaje kliknąć SAVE CHANGES – i już Volumio powinno móc korzystać z sieci bezprzewodowej. Obsługiwane są te same moduły Wi-Fi, co w Raspbianie.

Zamiast Ethernetu: monitor i klawiatura

Jeśli nie mamy możliwości podłączenia Raspberry Pi do routera, wciąż nic straconego. Należy do Maliny podłączyć monitor, klawiaturę, oraz moduł Wi-Fi. Uruchamianie systemu zajmie kilka minut – będzie on przez ten czas próbował uzyskać adres sieciowy przez DHCP po kablu, ale w końcu zrezygnuje. Zostajemy z konsolą.

Otwieramy plik konfiguracji interfejsów sieciowych poleceniem sudo nano /etc/network/interfaces i dopisujemy na końcu linijki:

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Następnie zapisujemy zmiany przez Ctrl+O i wychodzimy kombinacją Ctrl-X.

Teraz poleceniem sudo nano /etc/wpa_supplicant/wpa_supplicant.conf zakładamy plik konfiguracji szyfrowania WPA. Powinien on zawierać następujące linijki:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="NazwaSieci"
psk="Hasło"
key_mgmt=WPA-PSK
}

Oczywiście zamiast NazwaSieci i Hasło podajemy parametry naszej sieci bezprzewodowej. Pozostaje zrestartować system (sudo reboot), Volumio będzie teraz już na starcie korzystało z Wi-Fi. Możemy odpiąć klawiaturę i monitor.

Konfiguracja odtwarzania dźwięku

Zanim nasze muzyczne Pi wyda z siebie pierwsze dźwięki, skonfigurujmy wykorzystywanego do tego demona MPD. Dobra wiadomość dla nielubiących konsoli – wszystko można sobie wyklikać, przez interfejs webowy. Na początku wchodzimy do Menu > Settings, a następnie w sekcji I2S Driver wybieramy Hifiberry Digi. Następnie przechodzimy do konfiguracji odtwarzania w Menu > Playback. Omówimy najważniejsze działy:

  • Audio Output – tutaj wskazujemy wyjście dźwiękowe. Domyślnie wybrana jest systemowa ALSA, jednak mając kartę HiFiBerry przełączamy na sndrpihifiberry.
  • Volume control mixer – tutaj ustawiamy regulację głośności dźwięku. Domyślnie włączony jest sprzętowy mikser, zapewniający najwyższą jakość dźwięku, jednak nie działa on ze wszystkimi przetwornikami. Jeśli macie ten problem, pozostaje przełączyć na mikser software'owy, jednak nieco pogarsza on jakość dźwięku, lub wyłączyć mikser w ogóle, wtedy jednak głośność będzie można regulować tylko na wzmacniaczu.

Demon muzyczny pozwala też na ustawienie kilku przydatnych funkcji. Gapless mp3 playback ustawione na yes to odtwarzanie utworów kończących się nagle bez przerwy na ciszę. Jeśli nie działa bezpośrednie otwarzanie 1-bitowego systemu modulacji DSD, można włączyć DSD over PCM. Volume normalization ocali nas przed gwałtownymi skokami głośności w utworze. Audio buffer size to wielkość bufora audio. Domyślna wielkość – 2048 – wystarczy na 12 sekund dźwięku w jakości CD. Auto update pozwala zaś automatyczne odświeżanie bazy utworów po zmianie w katalogu z muzyką.

Volumio umożliwia również, z niezłym rezultatem, na resampling utworów w czasie rzeczywistym. Wymaga to mocniejszych Malinek, ale już na Raspberry Pi 2 działa dobrze. Możemy tu w teorii wymusić resampling nawet do 32 bitów i 384 kHz, w naszym wypadku DAC i tak nie przekroczy 24 bitów i 192 kHz. Jakość zależy od wybranej opcji interpolacji. Wykorzystywana jest funkcja sinc – tranformata Fouriera funkcji prostokątnej, a dostępne są ustawienia Fastest, Medium i Best – oczywiście im szybsza opcja, tym niższa jakość.

Zmiany zatwierdzamy za pomocą SAVE CHANGES.

Ustawienia ogólnosystemowe

Co prawda odwiedziliśmy już wcześniej Menu > Settings, można tu jednak zrobić sporo innych rzeczy:

  • Player name – ustawić nazwę odtwarzacza widoczną w sieci, zamiast domyślnego volumio.
  • Services management – kontrolować działanie sieciowych funkcji Volumio, takich jak obsługa protokołu Airplay, kontrola przez UPnP, indeksowanie zawartości po UPnP czy serwer biblioteki utworów po DLNA. Jeśli mamy płatne konto w Spotify, tu możemy włączyć obsługę tego serwisu (podając swój login i hasło) oraz wymusić strumieniowanie w wysokiej jakości (320 kb/s).
  • I2S driver – jak już wspomniano, tu włączamy obsługę magistrali niezbędnej do podłączenia karty dźwiękowej.
  • Miscellanous – to drobiazgi takie jak dźwięk startowy oraz typ layoutu interfejsu (widok biblioteki zajmuje więcej miejsca)
  • Sound quality tweaks – zawiera zestaw ustawień parametrów kernela, które modyfikują opóźnienia i mają wpływ na płynność odtwarzania i ogólną jakość dźwięku. Trudno wskazać tu najlepsze ustawienie, jest to kwestia dość indywidualna, zdaniem autora artykułu najlepiej sprawdza się profil Buscia.
  • System updates – tutaj można wymusić aktualizację całego odtwarzacza Volumio.

Fonoteka i odtwarzanie muzyki

Pomimo obsługi Spotify, Volumio jest pomyślane przede wszystkim o odtwarzaniu muzyki z lokalnych źródeł. Mogą one znajdować się na dysku sieciowym, udostępniane po protokołach SMB i NFS, na dysku USB, a nawet w RAMdysku (choć to nie ma za dużego sensu). Utwory na pendrive zostaną wykryte i dodane do biblioteki automatycznie. Zasoby na dysku sieciowym trzeba dodać ręcznie.

W tym celu w Menu > Library klikamy przycisk ADD NEW MOUNT. W kolejnym panelu podajemy nazwę źródła, protokół (SMB/CIFS albo NFS), adres IP dysku sieciowego, nazwę zdalnego katalogu (należy zakończyć ją ukośnikiem) oraz dostępowe login i hasło. W ustawieniach zaawansowanych można jeszcze zmienić stronę kodową, rozmiary bufora odczytu i zapisu, oraz flagi montowania zdalnego zasobu. Kliknięcie SAVE MOUNT dodaje zasób sieciowy do naszej fonoteki – chwila indeksowania i będziemy mieli dostęp do zgromadzonych tam utworów.

Podpięty zasób sieciowy będzie dostępny pod przyciskiem Browse. Jak zauważycie, oprócz dodanych ręcznie zasobów znajduje się tam niezły zestaw stacji radiowych (WEBRADIO) – przyciskiem + możemy do niego dodawać kolejne stacje, hamburgery otwierają menu kontekstowe pozwalające dodać stację do listy odtwarzania.

Sama lista odtwarzania jest prosta w obsłudze. To co już dodane, usunięte może być przyciskiem minus, listę można zapisać po podaniu jej nazwy, a następnie wyczyścić. Dostępna jest też interaktywna wyszukiwarka-filtr, lepsza niż Ctrl-F w przeglądarce.

Pozostaje omówić wreszcie sam interfejs odtwarzania. Lewy okrąg to wskaźnik postępu utworu, cztery przyciski pod nim pozwalają na powtarzanie listy, odtwarzanie w losowej kolejności, odtwarzanie pojedynczego utworu oraz tryb pochłaniania, w którym odtworzony utwór wypada z listy. Prawy okrąg służy do kontroli głośności i ewentualnego wyciszenia. Na samej górze mamy też pasek z przyciskami kontroli odtwarzania, których zastosowania nie trzeba chyba wyjaśniać.

Nie tylko przeglądarka: aplikacje do sterowania

Korzystanie z przeglądarkowego interfejsu jest wygodne na komputerze osobistym, niekoniecznie już jednak będzie tak wygodne na smartfonie czy tablecie. Użytkownicy Androida mogą jednak kontrolować Volumio za pomocą kilku aplikacji. Sound@home to rozbudowane narzędzie, które docenią posiadacze kilku odtwarzaczy w różnych pomieszczeniach – tu można skonfigurować sobie oddzielne ustawienia dla każdego z nich. Audioward to po prostu natywny androidowy interfejs dla Volumio, dodatkowo pozwalający wyświetlać teksty piosenek pobranych przez Musixmatch. Volumio Spotify Share to wtyczka do aplikacji Spotify, za pomocą której możemy sterować odtwarzaniem muzyki z tego popularnego streamingu (działa to tylko dla kont komercyjnych).

Aplikacje te nie są oczywiście niczym przełomowym, ale zamieniają urządzenie mobilne działające w tej samej sieci lokalnej co odtwarzacz Volumio w wygodnego pilota, demonstrując zarazem, że rozwiązanie to cieszy się wsparciem społeczności i raczej nie zostanie zarzucone.

Malinowe impresje

Podczas testów Raspberry Pi 2 z kartą HiFiBerry Digi+ i oprogramowaniem Volumio spisywało się jako odtwarzacz muzyki znakomicie. Jest to jedno z najużyteczniejszych domowych zastosowań tego komputerka. Nie tylko wygoda tego rozwiązania jest wielka, ale też i jakość uzyskanego dźwięku warta uwagi.

W przeprowadzonych przez nas testach porównawczych uczestnicy eksperymentu mieli za zadanie wskazać, które odtworzenie tego samego utworu brzmiało dla nich lepiej.

Rywalem Malinki był komputerek HTPC z płytą główną AsRocka AM1H-ITX, z układem dźwiękowym Realtek ALC892 i optycznym wyjściem SPDIF. Wykorzystywany był ten sam wzmacniacz i te same kolumny stereo. Za każdym razem oceniający wskazywali, że lepszy dźwięk wydobywa się z HiFiBerry, niezależnie od tego, czy były to proste dyskotekowe rytmy, czy wokal Rihanny, czy też IX Symfonia. Lepsza połowa autora artykułu, obdarzona słuchem absolutnym i szkolona w szkole muzycznej w śpiewie, wskazywała w szczególności na znacznie lepsze przenoszenie niskich tonów, niż w rywalizującym urządzeniu.

Łatwo więc dziś wskazać lepsze niż Raspberry Pi komputerki do odtwarzania filmów (szczególnie 4K), łatwo wskazać lepsze serwery NAS, wiele jest też lepszego specjalizowanego sprzętu dla elektroników. Jeśli jednak chodzi o odtwarzanie muzyki, Malina w połączeniu z kartą HiFiBerry staje się bardzo dobrym wyborem – kosztem kilkuset złotych zrobimy sobie sprzętowy odtwarzacz HiFi, tak łatwy (po skonfigurowaniu) w użyciu, że korzystać mogą z niego nawet domownicy nie znający się na Linuksie.

Po prostu włączasz i gra.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.