CLIENȚI MPD – ADEVĂR SAU MIT?
Cu toţii am auzit de MPD (Media Player Daemon) – un server de rulat muzică catalogată şi păstrată în format bază de date. Toate informaţiile legare de muzică (denumire albume, muzicieni, denumire cântece, bitrate, dimensiune cântec, durată, etc.) sunt păstrate de server ca bază de date tip text şi oferite programului client, care poate fi CLI sau GUI. MPD gestionează muzică care se poate găsi fizic pe o anumită partiţie, în foldere diferite, pe sisteme de fişiere diferite sau pe calculatoare diferite dintr-o reţea. Practic, utilizatorul “vede” o singură bază de date.
Instalare şi configurare server MPD
Instalarea MPD este destul de simplă, fiecare distribuţie având în repositorii daemon-ul mpd precum şi programele/bibliotecile necesare rulării acestuia. Archlinux identifică bilbiotecile necesare rulării mpd ca fiind: libid3tag, libmad, flac>=1.1.3, audiofile, faad2>=2.6.1, libmikmod, alsa-lib, libshout, libmpcdec>=1.2.5, libsamplerate, libao, ffmpeg, wavpack.
După cum vedeţi, biblioteci puţine şi de mică dimensiune. Un pic mai dificilă este configurarea server-ului, o mică sperietoare pentru mulţi utilizatori. Practic, serverul mpd este atât de versatil şi opţiunile de configurare sunt atât de multe, încât foarte mulţi renunţă. Articolul prezent va presupune că doriţi să rulaţi muzică aflată pe computerul personal. Cei foarte grăbiţi, pot copia fişierul de configurare de mai jos şi salva ca “/etc/mpd.conf”:
music_directory "/mnt/drt/music" playlist_directory "/var/lib/mpd/playlists" db_file "/var/lib/mpd/mpd.db" log_file "/var/log/mpd/mpd.log" error_file "/var/log/mpd/mpd.error" pid_file "/var/run/mpd/mpd.pid" state_file "/var/lib/mpd/mpdstate" user "mpd" port "6600" log_level "default" gapless_mp3_playback "yes" mixer_type "alsa" mixer_device "default" mixer_control "PCM" filesystem_charset "UTF-8"
Pentru utilizatorii Archlinux, se recomandă adăugarea @mpd ca daemon la start, pe linia daemons a fişierului rc.conf. În fişierul model de mai sus, trebuie să precizaţi calea corectă către folderul/partiţia dvs. care conţine muzică. Desigur, dacă vă uitaţi în fişierul mpd.conf.example, veţi găsi mult mai multe opţiuni de configurare. Dar fişierul de mai sus, doar cu modificarea căii către folderul cu muzică, funcţionează pe 99% cazuri.
Tip: dacă muzica dvs. se află pe mai multe partiţii/foldere, puteţi folosi sistemul de symlink-uri, pentru a cuprinde tot materialul sonor. Dacă nu doriţi să rulaţi mpd ca daemon la start, va trebui să îl poniţi manual. Cu drepturi root, executaţi “/etc/rc.d/mpd start” . Dar destul despre serverul mpd … Mai multe amănunte aici.
Mai toţi utilizatorii Archlinux recomandă mpd ca server de muzică şi un client pentru rularea materialului sonor. Principalele avantaje ale combinaţiei server + client este consumul redus de resurse (memorie în principal), gestiunea fără probleme a unor colecţii largi şi foarte largi de muzică (un utilizator se laudă cu 2TB muzică), avantajul rulării în reţea, standardul deschis şi extensibilitatea prin plugin-uri, precum şi numeroşii clienţi existenţi – practic, există un client mpd pentru fiecare limbaj de programare (gtk2, gtk#, python, c, c++, lua, qt, php, java, haskell, etc.).
Pentru a vedea dacă aveţi nevoie de mpd sau nu, încercaţi să gestionaţi 50 GB de muzică cu Amarok, Exaile, Banshee, Listen, Rhythmbox. Urmăriţi consumul de resurse şi cum aceste programe afectează performanţele generale ale sistemului. Din experienţa proprie, o colecţie de peste 10000 melodii îngenunchează jukebox-urile tradiţionale. Şi atunci cauţi alternative. Testul de mai jos este făcut pe o colecţie de muzică cu dimensiune ade 55.8 GB, care se găseşte pe o singură partiţie ext4. Ca distribuţie, am ales Archlinux, îmbrăcat de xfce 4.6. Consumul de memorie este cel afişat de xfce4-taskmanager.
Primul screensho
t ne înfăţişează consumul de memorie al daemon-ului mpd, cu baza de date creată, pornit la start şi fără a rula material sonor: 8 MB. Nu e rău deloc pentru o aplicaţie care ne va gestiona şi servi 50 Gb de muzică.
Ok, am pornit serverul, haideţi să găsim şi un program client care să ne receţioneze muzica livrată de serverul mpd. Desigur, orice utiliza
tor ştie că aplicaţiile CLI consumă cu mult mai puţine resurse decât aplicaţiile GUI. Primul client ales este clasicul mpc, pornit însă dintr-un terminal xfce; acest client este atât de spartan şi greu de utilizat, încât nu-l recomand decât utilizatorilor free-X-server hardcore. Consumul de resurse a crescut la 11 MB. Şi credeţi-mă, mai bine nu se poate.
Un al doilea client
CLI, mult mai inteligibil şi utilizabil este bazat pe biblioteca ncurses şi se numeşte ncmpc. L-am pornit dintr-un terminal xfce şi am ajuns la 15 MB consum de memorie (13 MB serverul şi 2 MB clientul). Pentru cei care lucrează frecvent fără serverul X şi doresc să asculte muzică, ncmpc este fix ceea ce trebuie.
Dar hai să vedem cum stăm cu clienţii GUI pentru serverul MPD.
Deoarece pe sistemul de test a fost instalat xfce, primul client GUI ales a fost xfmpc, un progrămel destul de light, construit pe bibliotecile libxfce. Din păcate, xfmpc suferă destul de mult pe parte de funcţionalitate. Câteva butoane – play/pause, forward – o modalitate rudimentară de încărcare a bazei de date şi o foarte utilă bară pentru găsirea rapidă a unei melodii, tastând primele litere. Lipsesc cu desăvârşire funcţii cum sunt afişarea coperţilor albumelor, a versurilor, pentru controlul comportamentului program atunci când este minimizat în panel, pentru mici operaţii privind controlul sau gestiunea bazei de date şi a serverului print intermediul clientului. Clientul xfmpc este destul de rudimentar, însă are avantajul unui consum de memorie remarcabil: 12 (server)+10 (client) = 22 MB. Fiind un program exclusiv pentru xfce, poate fi preferat de utilizatorii acestui desktop-manager.
De ce nu şi un client scris în Java ? JMPD este numele acestuia. Arată oribil, consumă resurse graţie maşinii java dar are câteva funcţii suplimentare faţă de xfmpc – se pot afişa versurile melodiilor, există o funcţie crossfade, există posibilitatea actualizării bazei de date cu melodii şi chiar a definirii parametrilor conexiunii cu serverul mpd. Acest program este doar un demonstration-of-proof, că uite, se poate face şi în java un client mpd. În afara de portabilitatea programului, alt avantaj al acestuia nu văd. Şi să nu uităm, 33 MB ocupaţi doar de jre.
O clonă iTunes/Rhythmbox se doreşte a fi pympd, construit pe python, care însă după părerea mea este departe de acest lucru. Fereastra principală a programului este împărţită între un side-pane stânga, destul de inutil şi playlist. Dincolo de această
ergonomie redusă, pympd oferă câteva funcţii interesante: implementarea unui slider pentru controlul volumului direct în fereastra principală (foarte util aş zice), conectare, deconectare şi actualizare bază de date server mpd, o funcţie crossfade ca şi un sistem de plugin-uri, existând câteva foarte utile şi interesante. Şi dacă adăugăm posibilitatea asocierii unor combinaţii de taste pentru controlul funcţiilor programului, lucrurile devin şi mai interesante.
Clientul pympd este foarte interesant, înzestrat cu câteva facilităţi (plugins şi keybindings) şi cu o interfaţă destul de simplă, atrăgătoare pentru mulţi utilizatori. Însă trebuie să spunem că greoiul python îşi spune cuvântul, consumul de memorie fiind pe măsură, 12 (server) + 20 (client) = 32 MB. Şi categoric trebuie făcut ceva cu side-pane-ul stânga, ocupă mult spaţiu inutil.
Gimmix este un client mpd gtk2, cu o interfaţă funcţională şi destul de bine organizată, o bună ergonomie dar cu care am întâmpinat ceva probleme. Fereastra principală a clientului afişează un minim de informaţii – denumire cântec şi artist, coperta albumului, precum şi un număr de butoane sub bara de înaintare a cântecului, inclusiv un buton ce deschide un slider vertical pentru controlul volumului sunetului. Toate butoanele au tooltip, cu excepţia unuia singur, cel mai interesant. Apăsarea acestuia ne dezvăluie varianta extinsă a ferestrei principale, împărtiţă în trei taburi; butonul pentru controlul volumului sunetului s-a transformat într-un slider orizontal, un plus pentru funcţionalitatea programului. Primul tab este lista cântecelor (playlist), al doilea tab se numeşte playlist manager, denumirea spunând totul, iar al treilea tab, metadata, afişează versurile cântecelor. Printre butoanele mai sus amintite, există unul ce ne oferă acces la câteva funcţii şi parametri de configurare ai clientului.
Gimmix este înzestrat cu funcţii pentru conectarea şi deconectare de la serverul mpd, inclusiv cu autentificare şi legătură prin proxy, crossfade, minimizare în panel (system tray) prin apăsarea exit sau oprire completă, actualizare bază de date la pornirea programului, definirea folderului cu muzică (o funcţie relativ fără sens, fiindcă prin actualizarea bazei de date, se reîncarcă baza de date a serverului, iar o bază de date customizată se obţine prin controlul şi rafinarea playlist-ului), tooltips în panel (system tray), afişarea coperţilor albumelor prin definirea unei ţări de reşedinţă, fiindcă mulţi artişti recurg la coperţi ale albumelor diferite în Europa faţă de SUA sau Japonia (nu, România nu e în listă).
Gimmix este un client destul de bun, cu un consum de memorie rezonabil (14 MB pe lângă cei 12 MB ai serverului), dar care are câteva mici bug-uri, uneori deranjante, pe care le veţi descoperi pe măsura utilizării în timp.
Spre ruşinea mea, un client de care nu auzisem până acum este ario. Practic, acest client imită cel mai bine programele jukebox (Amarok, Listen, Exaile, Rhythmbox, etc), fiind înzestrat cu o sumedenie de funcţii. Ario poate fi extins printr-un sistem de plugin-uri, existând integrare cu last.fm, căutari tematice, legate de muzică pe Wikipedia (se pot defini o sumedenie de criterii de căutare, inclusiv combina), notificări în system-tray, crossfade, asocierarea de taste pentru controlul jukebox-ului (keybindings), coperţi de albume, afişare versuri şi multe altele. De asemenea, puteţi asculta radio-uri online, existând o mică listă de posturi prefedinite, care poate fi îmbunătăţită. Toate aceste funcţii completează clasicele funcţii întâlnite în clienţii mpd – slider volum sunet, butoane playback, bară înaintare, conectare şi deconectare server, autentificare server mpd inclusiv prin proxy şi multe, multe altele.
Trebuie să spun din start că nu îmi plac programele jukebox (interfeţe derutante şi prea încărcate) şi aranjarea muzicii după tag-uri, genre, etc., deoarece prefer să ascult albume şi mai rar melodii, şi cam ştiu ce ascult. Însă pentru fani, gândiţi-vă la cel mai bun program jukebox (Amarok) şi puterea mpd şi obţineţi ario; gândiţi-vă că nu aveţi nevoie de mysql sau sqlite dar aveţi la dispoziţie tot arsenalul unui jukebox. Instalarea ario necesită câteva biblioteci suplimentare faţă de alţi clienţi, dar nimic de speriat: avahi, curl, dbus-glib, gnutls, libglade, libsoup>=2.4 . Programul este dezvoltat de aproape 2 ani şi există versiuni pentru Windows (prin gtk2) şi Mac OSX. Consumul de resurse este 26 MB (14 MB clientul) ! Uitaţi-vă la consumul de memorie al Amarok sau Rhythmbox, încărcaţi-le cu 50GB de muzică, mai uitaţi-vă odată.
Nu am rulat mult ario pentru a descoperi bug-uri, disfuncţionalităţi sau mari lipsuri. Comparându-l cu Amarok, aş mai spune că îi mai lipseşte o integrare cu dispozitivele ipod şi cam atât. Însă la ce se oferă pentru 26 MB memorie, îmi permit să spun că aceasta este cea mai tare combinaţie pentru “servirea” muzicii preferate, dacă vă plac interfeţele jukebox. Şi da, programul este liber de biblioteci Gnome, KDE (inclusiv qt) sau Mono, fiind un simplu jukebox gtk2.
Sonata - clientul mpd GUI cel mai des amintit. Sonata este un gimmix mult mai bun şi mai făcut bine (fără icoane lipsă, cu notificări corecte, etc.), cu câteva funcţii suplimentare (radio online, suport audioscrobbler, hyperlink către pagina Wikipedia pentru artiştii a căror cântece rulează). Din păcate, spre deosebire de gimmix care se bazează exclusiv pe bibliotecile gtk2, sonata mai are nevoie de python, ceea ce înseamnă un consum de resurse de 39 MB (din care 27 MB pentru python). Sonata este un bun client mpd, oferind strictul de funcţii necesare pentru o experienţă audio plăcută, dar care este tras în jos de consumul de memorie măricel, fapt ce nu îl recomandă pentru sistemele *wm* (windowmaker, pekwm, awesome, etc.) sau *box (openbox, blackbox, fluxbox, etc.), dar nici xfce sau lxde.

Un alt client mpd destul de folosit este gmpc. În ciuda numelui, Gnome Music Player Client nu depinde nici de bibliotecile Gnome cum nici nu este front-end al clientului CLI mpc. Acest client gtk2 este un mix între interfaţa “clasică” gimmix/sonata şi jukebox-ul ario, încercând să ofere din ambele. Prin plugin-uri, se pot obtine coperţi de albume şi versuri (merită să amintim că unii clienţi au implicit aceste funcţii), integrare last.fm, jammendo, magnatune, editor de tag-uri sau plugin pentru lirc. Gmpc are implementate toate funcţiile şi opţiunile de bază, cum sunt conectarea, deconectarea şi actualizarea bazei de date a serverului mpd, butoane play şi bară înaintare, buton slider volum sunet, etc. O opţiune interesantă este rularea full-screen a clientului, utilă pentru cei care au productivitate în folosirea mai multor desktop-uri virtuale.
De asemenea, destul de bine ascunsă, este opţiunea rulării materialului sonor definit ca url, astfel gmpc putând rula radio-uri online. Deşi consumul de reusrse de memorie este elegant, prin activarea plugin-urilor acesta va creşte. Personal, găsesc gmpc ca cel mai bun compromis între funcţii, consum de memorie şi integrare cu desktop-manager-ul folosit.
Aşa cum am spus la începutul acestui articol, lista clienţilor mpd este lungă. Mai amintim bjj (java), emphasis (client mpd al E17), evad (CLI), gbemol (gtk2), guimup (gtkmm/ c++), quimup (qt3), kanola (python/kde), kmp (qt3), montypc (python/qt4), mpdbrowser (gtk2/python), njiri (ruby/libglade), orangeplayer (php/ajax).
O listă detaliată a clienţilor mpd găsiţi aici.
Dar oare mai bine nu se poate ? Sistemul server mpd-client este cel mai bun ? Am instalat audacious (fork-ul gtk2 al celebrului xmms) şi parcă m-am întors în timp. Sub nici o formă audacious nu a vrut să îmi încarce cei 55 GB de muzică, programul picând.
Am căutat pe forumul Archlinux şi am găsit consonance, un player audio tânăr, construit doar pe bibliotecile gtk2, cu o listă mică de alte biblioteci necesare. Fără a descrie prea mult programul (curioşii sunt invitaţi pe pagina proiectului, unde sunt descrise facilităţile acestuia), ataşez doua screenshot-uri.
În stânga am încărcat doar 600 MB de muzică. Consumul de memorie este cel afişat, mult mai bun decât orice combinaţie între serverul mpd şi un client GUI. În dreapta, am încărcat întreaga bază de date de muzică, iar consumul de memorie a sărit la 20 MB, dar tot mai puţin decât combinaţie server-client GUI. Evrika, ar spune Arhimede.
De ce să instalăm un server mpd şi un client grafic, dacă avem în faţă un program light, cu performanţe superioare ? Ce nu v-am spus este că pornirea consonance cu cei 55 GB de muzică durează mai bine de 2 minute; de asemenea, programul este lipsit complet de orice facilitate privind rularea muzicii în/din reţea, fiind doar un program ce ruleaza muzica aflată pe discurile locale; nu vă aşteptaţi nici să rulaţi material sonor online .
Celor care au răbdare câteva minute pentru a porni programul şi pentru care fiecare megabyte de memorie consumat este preţios, le recomand consonance ca cea mai light soluţie GUI pentru rularea materialului sonor, cu observaţia că încărcarea unui folder cu muzică de 10 GB durează aproape 1 minut pe un Sempron 2600+ şi 2GB RAM. Aşa că aveţi grijă să nu închideţi programul (implicit se minimizează în system-tray)…
Şi o mică concluzie depre clienţii MPD
Şi cum este frumos să inchei un articol cu o concluzie, voi spune că pentru colecţii mari de material audio, combinaţia server mpd şi client GUI este de preferat, existând mult prea multe avantaje ce nu pot fi trecute cu vederea. Audiţie plăcută !

Uite aici: client MPD pentru iPhone
http://www.mylro.org/blogs/mylro/?p=391