10

Malinowe Przepisy – Co [PI]szczy w Raspberry?

Na początek postanowiłem zająć się możliwościami dźwiękowymi naszej malinki, a mówiąc dokładniej wykorzystaniu RPI jako centrum muzycznego. Ze względu na to, że temat jest dosyć obszerny (przynajmniej w zakresie możliwych konfiguracji i wykorzystywanego oprogramowania) postanowiłem go podzielić na kilka części. W pierwszej z nich postaram się przedstawić ogólny zarys pomysłu oraz zaproponować dwa, gotowe rozwiązania […]

Na początek postanowiłem zająć się możliwościami dźwiękowymi naszej malinki, a mówiąc dokładniej wykorzystaniu RPI jako centrum muzycznego. Ze względu na to, że temat jest dosyć obszerny (przynajmniej w zakresie możliwych konfiguracji i wykorzystywanego oprogramowania) postanowiłem go podzielić na kilka części. W pierwszej z nich postaram się przedstawić ogólny zarys pomysłu oraz zaproponować dwa, gotowe rozwiązania służące do uruchomienia centrum muzycznego. Przykłady konfiguracji przedstawię w dalszych częściach.

Autorem wpisu jest Rafał Świętonowski.

Spróbujmy trochę „pofilozofować” :) Założenia jak się okazuje nie są zbyt skomplikowane i same przychodzą do głowy po chwili zastanowienia. Jak przystało na poważny projekt zbierzmy najpierw wymagania ;)

  1. Musi to być usługa (w domyśle usługa serwerowa) pozwalająca na korzystanie z zasobów muzycznych, udostępnianych z różnych źródeł (np.: radio internetowe, zasoby serwera NAS, nośniki USB, DLNA, serwisy muzyczne, itp.).
  2. Usługa powinna posiadać prosty do obsługi panel administracyjny (przydzielanie zasobów zawierających treści muzyczne, uruchamianie usług dodatkowych, itp.).
  3. Usługa musi pozwalać na zarządzanie zawartością muzyczną przy pomocy różnych urządzeń (smartfony, PC, tablety).
  4. System powinien pobierać niewielkie ilości energii. To kwestia indywidualna i zależna od tego w jakim trybie chcemy używać naszego centrum muzycznego ale zakładam, że raczej będzie włączony przez większość doby oraz że nikt nie chce dużo płacić za prąd;) Oczywiście malinka jest stworzona do tego zadania.
  5. System powinien zapewniać zadowalającą jakość dźwięku. To oczywiście sprawa dyskusyjna ze względu na zastosowany sprzęt ale można ten stan rzeczy trochę poprawić o czym w dalszej części. Nie bez znaczenia jest też jakość medium muzycznego – w naszym wypadku będzie to oczywiście muzyka w formie cyfrowej.

Jak widać powyżej, nie ma tych założeń dużo i w prosty sposób (co postaram się pokazać) można je spełnić.

Poniżej rysunek poglądowy jak to wszystko może wyglądać:

1

Zauważyliście zapewne takie oznaczenia jak MPD i DAC. Pierwsze z nich dotyczy oprogramowania Music Player Daemon (MPD). Jest to oprogramowanie działające jako serwer dźwięku w architekturze klient-serwer. Część serwerowa odpowiada m.in. za odtwarzanie zawartości muzycznej, organizowanie jej w playlisty oraz zarządzanie bazą danych z zawartością muzyczną. Oprogramowanie posiada niewielkie wymagania sprzętowe i do naszych celów nadaje się idealnie.

Do komunikacji z serwerem MPD konieczne są aplikacje klienckie (zarówno do celów administracji jak i odtwarzania zasobów muzycznych). Nakładki klienckie dostępne są w postaci interfejsów WWW jak i aplikacji dedykowanych i to zarówno w wersji graficznej jak i tekstowej. Zyskujemy więc wiele możliwości na komunikację z naszym centrum muzycznym i patrząc na założenia możemy stwierdzić, że punkty 1, 2 oraz 3 mamy zapewnione. Punkt 4 założeń oczywiście zapewniamy już na samym początku ponieważ będziemy używali RPI, a malinka jak wiadomo nie pochłania dużych ilości prądu.

Co do punktu 5 to w ramach poprawy dźwięku wydobywającego się z malinki, postanowiłem zaopatrzyć się w coś, co na rysunku opisane jest jako DAC. Cóż to takiego? Ponieważ głównym (jedynym) medium muzycznym będą źródła cyfrowe to dobrze by było zaopatrzyć się w urządzenie, które potrafi „ulepszyć” dźwięki przesyłane z malinki (komputer w roli „transportu” – audiofile pewnie teraz dostają drgawek ;) ) Takim urządzeniem w każdym systemie audio jest konwerter (przetwornik) cyfrowo-analogowy – jest on odpowiedzialny za zamianę sygnału cyfrowego na jego postać analogową, która trafia do wzmacniacza a dalej do głośników (kolumny głośnikowe, słuchawki). Oczywiście od jakości takiego przetwornika zależy jakość wydobywającego się dźwięku.

Nasza dzielna malinka nie jest sprzętem audiofilskim a nam zależy przecież na tym aby brzmienie jakie będzie z niej wychodziło było jak najlepsze (założenia, punkt 5). W tym miejscu pojawia się rozwiązanie (niczym królik z kapelusza) – specjalna karta dźwiękowa do naszego komputerka. Jest ich przynajmniej kilka. Po przeanalizowaniu sytuacji zdecydowałem się na sprzęt HiFiBerry DAC+.

2

Jest to wersja przeznaczona dla RPI B+. Dodatkową zaletą tego urządzenia jest to, że działa (bez skomplikowanych modyfikacji konfiguracyjnych) na wielu przygotowanych dla RPI systemach oraz bardzo prosty montaż na malince. Ze względu na zastosowany w roli wzmacniacza sprzęt i posiadane okablowanie, wybrałem wersję z konektorami RCA. Zainteresowanych tym rozwiązaniem odsyłam na stronę.

Mamy już wszystko ! Chwilkę, jeszcze nie wybraliśmy bohatera, który odegra rolę serwera MPD. Tutaj też jest wiele gotowych propozycji. Ja do dalszej zabawy wybrałem Volumio oraz Pimusicbox. Po pierwsze obydwa rozwiązania działają z wybranym urządzeniem DAC, po drugie Pimusicbox zbudowany jest w oparciu o oprogramowanie mopidy, na przykładzie którego chciałbym pokazać proces konfiguracji i użytkowania serwera MPD dla RPI, uwzględniający instalację dodatkowych plugin’ów.

Oczywiście każda z tych propozycji spełnia również założenia przedstawione na początku artykułu i jest równie prosta w uruchomieniu i konfiguracji.

Volumio, które ewoluowało do obecnego stanu z projektu RaspiFi jest przygotowywane na wiele urządzeń, takich jak RPI, Cubox, Udoo i Beaglebone Black. Jak na „gotowca” przystało czas potrzebny na uruchomienie urządzenia i słuchania muzyki liczy się w pojedynczych minutach. System operacyjny nie posiada interfejsu graficznego a podczas startu urządzenia uruchamiane są jedynie niezbędne procesy i moduły, konieczne do pracy całości. Ustawienia konfiguracyjne możemy zmieniać za pomocą dedykowanego interfejsu WWW.

Aby uruchomić Volumio należy jedynie pobrać jego odpowiedni obraz (w naszym przypadku dla RPI) a następnie zapisać go na karcie SD. W systemie GNU/Linux możemy dokonać tego prostą komendą:

sudo dd bs=1M if=[nazwa_pliku_obrazu] of=/dev/[sd_name]

Najlepiej kilka razy upewnić się co do nazwy urządzenia pod jaką występuje karta SD. Czasami może to być urządzenie o oznaczeniu /dev/sdx a czasami np./dev/mmcblk0. Błąd popełniony w tym miejscu może się zakończyć wyczyszczeniem naszego dysku systemowego. Posiadacze systemu Windows mogą użyć do przygotowania karty SD z Volumio oprogramowania Win32DiskImager. Oprogramowanie uruchamiamy uprawnieniami konta Administratora.

Po uruchomieniu RPI i wpisaniu do przeglądarki internetowej adresu http://volumio.local/ lub adresu IP naszej malinki, powinniśmy zobaczyć taki oto ekran startowy:

3

Jak widać interfejs jest bardzo prosty (z prawej strony u góry rozwinięte menu z poszczególnymi pozycjami). Oczywiście powyższe zadziała jeżeli korzystamy z sieci LAN za pomocą karty ethernet’owej, a adres IP ustalany jest z serwera DHCP. W przeciwnym wypadku musimy ustawić najpierw parametry sieciowe naszej malinki (dla połączenia ethernet lub WiFi).

W przypadku podłączenia się do interfejsu Volumio istnieje możliwość zmian konfiguracji ustawień sieciowych w samym interfejsie co widać na poniższym obrazku.

4

Ponieważ używamy urządzenia DAC, musimy nasz konwerter zdefiniować w systemie Volumio. Volumio obsługuje HiFiBerry DAC+ bez problemu, wystarczy więc z menu „System” aktywować sterownik I2S dla odpowiedniego urządzenia i zrestartować RPI:

5

Poniżej jeszcze kilka obrazków z wybranymi widokami Volumio:

Konfiguracja dla Spotify. Wystarczy podać użytkownika, hasło i mamy dostęp do naszych zasobów muzycznych w tym serwisie. Oczywiście wymagane jest posiadanie opłaconego konta premium Spotify.

6

Konfiguracja zasobów sieciowych z naszą zawartością muzyczną odbywa się za pomocą opcji pokazanych poniżej:

7

Lista zaczytanych internetowych stacji radiowych:

8

A tak wygląda ekran Playback z włączonym utworem ze Spotify:

9

Na koniec jeszcze prosty klient MPD (Cantata) uruchomiony w środowisku KDE. W konfiguracji klienta należy podać adres serwera Volumio oraz numer portu (jest to port 6600). W przypadku pojawienia się błędu komunikacji z serwerem, można zmienić dowolną opcję w menu System/Playback i zapisać zmiany. Powinien zostać na nowo wygenerowany plik konfiguracyjny i zrestartowana usługa MPD. Po tej operacji powinno być już dobrze.

Poniżej widać utwory udostępnione przez serwer Volumio:

11

Podobnie prosto wygląda sprawa z oprogramowaniem Pimusicbox. Należy pobrać odpowiedni obraz, zapisać na karcie SD w sposób opisany powyżej i wystartować RPI. Aby uruchomić interfejs WWW, w tym przypadku wpisujemy w przeglądarce internetowej adres http://musicbox.local/ lub adres IP naszej malinki.

Więcej informacji o Pimusicbox, mopidy oraz bardziej zaawansowane ustawienia sieciowe, podpinanie mediów z muzyką, wykorzystanie aplikacji obsługujących protokół MPD dla urządzeń przenośnych czy ustawienia dla multiroom przedstawię w kolejnych częściach. Zapraszam.