mpd, czyli jak zacząłem słuchać muzyki za pomocą konsoli

Ten wpis jest częścią mojego starego bloga, prowadzonego w latach 2005-2007 pod adresem dragonee.jogger.pl. Został on zachowany w celach archiwizacyjnych i niekoniecznie reprezentuje moje bieżące stanowisko na dany temat.

Oto Music Player Daemon, demon do zadań muzycznych. Jak to diabeł, działa skutecznie, o ile dobrze go poinstruujemy. W połączeniu z pomniejszymi pomiotami może stanowić konkurencję większości wiodących programów do odtwarzania muzyki. Jego poważną zaletą jest mała zasobożerność – gdy schowa się w zakamarkach naszego systemu, przęciętny użytkownik nie zauważy spadku wydajności podczas odtwarzania.

Doprowadzamy demona do porządku

Z instalacją demona i podstawowego klienta nie powinno być problemu – znajduje się on w repozytoriach większości dystrybucji. Wybieramy ulubioną komendę naszego systemu do pobierania danych: urpmi mpd mpc. mpc to oczywiście Music Player Client.

Kolejnym krokiem jest skonfgurowanie demona tak, aby można było słuchać muzyki. Ogranicza się to do napisania własnej ścieżki do katalogu z muzyką (music_directory), oraz listami odtwarzania (playlist_directory). Następnie ustalamy zmienną filesystem_charset na UTF-8 lub ISO-8859-2. Teraz wystarczy tylko odkomentować odpowiednie opcje przy wyborze sterownika dźwięku i wykonać polecenie mpd --create-db.

Wskazówka: gdy nasze katalogi z muzyką są rozsiane w różnych miejscach, można stworzyć specjalnie przeznaczony dla mpd katalog z dolinkowaniami do tych miejsc. W ten sposób pozbędziemy się długaśnych ścieżek, a i skanowanie przebiegać będzie o wiele szybciej.

Tak przygotowanego demona (re)startujemy i od tej chwili możemy zacząć używać klienta.

Klient wygląda mniej więcej tak:
[dragonee@lilium bin]$ mpc play
Threemovements - Awaken
[playing] #1/6   0:00 (0%)
volume: 77%   repeat: off   random: off

Nieco kłopotliwe może wydać się zrobienie pierwszej własnej playlisty. Wystarczy jednak wykonać polecenie mpc ls, które wyświetli nam spis katalogów dostępnych w miejscu podanym jako music_directory. Teraz wybieramy sobie jakiś katalog i wykonujemy: mpc ls "Artist - Album" | mpc add, co doda nam wylistowane pliki do playlisty. Następnie za pomocą mpc save nazwa możemy zapisać tą listę odtwarzania, a mpc play rozpocznie jej odtwarzanie. Komend oczywiście jest mnóstwo – w celu poznania dalszej funkcjonalności zapraszam do mana.

O pomiocie biegającym z tytułami do last.fm

Zwie się on mpdscribble. Podobnie, jak mpc, jest klientem, jednak nie odtwarza piosenek, a tylko pobiera od demona wiadomości i wysyła je do last.fm. Możemy uruchamiać go ręcznie, ale czemu by nie zrzucić tej roboty na komputer?

Instalacja na dystemach debianowych i pod Fedorą jest najprostsza, bo z paczek, a pod Mandrivą trzeba kompilować. Nie ma zbyt wielu zależności, więc nie robi to aż takiego problemu.

Niestety – problem w tym, że nigdzie nie zauważyłem, by mpdscribble mógł się odpalać jako demon. Dzięki niezwykle prostemu programowi daemonize będziemy mogli zapewnić tą funkcję bez ingerowania w kod programu. Jego kod jest już nieco przestarzały i sami musimy się postarać o dodanie #include <stdlib.h> w pliku daemonize.c, lub o spatchowanie źródeł tą oto łatką. Wystarczy ściągnąć, rozpakować i skopiować łatkę do katalogu ze źródłem, a następnie nałożyć ją poleceniem patch -p1 <patch-daemonize-1.4.

Po poprawnej instalacji obu narzędzi, czas na to, co tygryski lubią najbardziej; grzebanie w skryptach startowych. W różnych dystrybucjach różnie one wyglądają, ale moja modyfikacja jest na tyle prosta, że nie powinna sprawić zbytnich problemów.

Fragmenty /etc/init.d/mpd:
Wewnątrz opcji start:
daemon mpd
daemon /usr/local/sbin/daemonize -c /tmp -u mpd /usr/local/bin/mpdscribble
RETVAL=$?
Wewnątrz opcji stop:
killproc mpd
killproc mpdscribble
RETVAL=$?
Wewnątrz opcji status:
status mpd
status mpdscribble
;;

Teraz mamy zapewnione uruchamianie mpdscribble razem z demonem mpd i jednocześnie pod jego użytkownikiem, czyli dwie pieczenie na jednym ogniu.

Pozostaje nam ostatnia sprawa – napisanie odpowiedniego pliku konfiguracji. Dla demona nie będzie zbrodnią podawanie konfiguracji w pliku /etc/mpdscribble.conf. Nie jest ona długa – wystarczy wpisać nazwę użytkownika username = user i hasło przepuszczone przez algorytm MD5 (password). Wypadałoby jeszcze utworzyć pliki /var/cache/mpdscribble.cache oraz /var/log/mpdscribble.log i nadać im odpowiednie uprawnienia dla użytkownika mpd.

Bo tych ciężkich bojach nasz player ładnie wspiera last.fm.

Demon w oknie

Chcę więcej. Zmienianie piosenek za pomocą konsoli jest bardzo przyjemne, ale przyzwyczaiłem się do amaroKa ze swoją ikonką w zasobniku systemowym. Czy istnieje jakaś rada dla mnie? Po chwili poszukiwań odkryłem rozmaite klienty mpd działające w konsoli, interaktywnie, za pomocą ncurses, czy przezaczone dla Qt i KDE. Można znaleźć nawet skrypty działające po http. Ich spis znajduje się na oficjalnej stronie klientów mpd.

Jako użytkownik KDE spróbowałem klienta kmp. Zalecam ostrożność, na stronie domowej wersja kmp była o wiele wyższa, niż ta, którą wymieniono w spisie. Instalacja wymaga dodania ścieżki do programów Qt (w moim przypadku /usr/lib/qt3/bin) do $PATH, jeśli się już tam nie znajduje.

Klient ten mnie zadowala, posiada całą funkcjonalność, której potrzebuję, by odtwarzać muzykę, oraz trayikonkę. Chociaż jego interfejs mógłby być nieco bardziej przemyślany, jest do wytrzymania. I nie zabiera zbyt wielu zasobów.

9 komentarzy
  1. Kwiecień 18, 2006
  2. Kwiecień 18, 2006
  3. Kwiecień 18, 2006
  4. Kwiecień 18, 2006
  5. Kwiecień 18, 2006
  6. Luty 2, 2007
  7. Luty 2, 2007
  8. Styczeń 22, 2009
  9. Lipiec 25, 2009

Leave a Reply

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *