Jó kis kitérőt tettem a csomagkezelés, a terminálban futó programok (1 2 3 4) és a kernel fordítás irányába, de most visszakanyarodnék oda, amiből eredetileg kiindultam, azaz a különféle linuxos alkalmazások taglalásába.
Erre azért volt szükség, mert régi mániám a kis késleltetéssel elinduló, azaz fürge de a főbb funkciókat már éppen tartalmazó programok után való keresgélés. A legtöbb program fejlesztése ugyanis sosem áll meg, a folyton belekerülő új funkciók nagy része pedig számomra felesleges. Majd meglátjuk, hogy a zenelejátszóknál hogyan is néz ki mindez.
Szokás szerint egy kis agymenéssel kezdem: Vannak ezek a codec-dolgok, amikről már bizonyára sokan hallottak; legfőképpen akkor, hogyha valamilyen típusú fájlt nem tudtak lejátszani. Ekkor jött a (fél)művelt hawer, hogyaszongya "tőccsed le az XY kódeket, azzal nekem minden megy". Ez persze elég gyakran inkább filmek támogatásánál fordul elő; úgyhogy erről talán kicsit később. A lényeg tehát, hogy vannak különféle média formátumok. A zenék, vagy filmek a hang- és képanyagot ezekben a bizonyos formátumokba kódolva tárolják. Ahhoz, hogy megjelenítsük vagy megszólaltassuk a gépen, ismerni kell ezeket a formátumokat, azaz dekódolni kell tudni. A kódolást és dekódolást matematikai alapokon megvalósított algoritmusok végzik - ezeket szokás codec névvel illetni. Ezek a letöltött algoritmus-gyűjtemények szépen beépülnek a programba, vagyis a program használja őket - a végeredmény szempontjából mindegy.
Node mi szükség ezekre a kódolásokra? Nem lenne elég, ha egy az egyben rögzítenénk minden képkockát, minden analóg audio anyagból átalakított bitet? Megtehetnénk. Azonban, mint tudjuk, az átlagos emberi fül érzékenysége ~20 - ~22kHz. A hibamentes digitalizáláshoz legalább kétszeres mintavételezési frekvencia szükséges (Nyquist-Shannon tétel), ezért egy másodperc alatt 44100 mérést kell elvégeznünk. Hogy az analóg jeleket ezután hogyan feleltetjük meg digitális értékeknek (kvantálás), most nem fejteném ki részletesen, mivel csak arra szeretnék rámutatni, hogy másodpercenként rengeteg mérést kell két (vagy több) csatornán elvégezni, majd ezeket a frekvencia-adatokat le kell tárolni ("az adott időpillanatban mennyit rezgett a levegő"). A helypazarlónak tartott WAV is csak az egymás után következő mérések között eltelt különbséget tárolja, nem pedig abszolút értékben a mérés eredményét, így sokkal kisebb értékeket kell tárolni. És így lesz egy percnyi hang kb. 10Mb! El lehet képzelni, hogy a 40Mb-os merevlemezek idejében miért kezdtek el azon gondolkodni, hogy hogyan lehetne hatékonyan tömöríteni a felvett hanganyagot...
És miért nem lehetett csak egy algoritmust kitalálni? Ez az üzletről szól, nem a felhasználókról: Az mpeg1 layer 3 (népszerű nevén mp3) kódoló algoritmus használatáért a Fraunhofer intézet jogdíjat kért (a dekódolóért nem), ezért fejlesztették ki az OGG/Vorbist, mivel az teljesen ingyenes, és minőségben talán jobb is. A Microsoft szeretné a saját médialejátszójához láncolni a többséget, ezért készítették el a WMA-t. És ezek csak a legelterjedtebb (veszteséges) algoritmusok... veszteségmentes például a FLAC.
Amiért süketeltem az egészről: Nem csak, hogy sokféle algoritmus van, de ezeknek sokféle megvalósítása is. A lényeg, a matematika ugyanaz, de ezt sokféleképpen le lehet programozni. Emiatt linux alatt is többféle megvalósítása van még az mp3 formátumnak is: mpg123, mad, azt hiszem a gstreamer is saját... szóval nem egyszerű az eligazodás.
Totem
Mivel lassan közismertté válik, hogy Ubuntut használok, és abban a Totem alapértelmezett, ezért kezdjük ezzel: teljesen szimpla médialejátszó, ami a Windows Media Playert utánozza (természetesen filmeket is lejátszik), és a gstreamer-re bízza a kódolást/dekódolást. Van egy playlist, véletlenszerű és/vagy ismétlődő lejátszó mód és kész. Képes a Windows Media Playerből megismert (szerintem felesleges) vizualizációra, és a böngészőbe is be tud épülni a különféle média lejátszására. Sajnos épp a program kezelése idegesítő: Ha a playlist az aktív (tudok mozogni a "fénygerendával" a számok között), akkor nem lehet előre-hátra pörgetni, lépkedni magában a számban, illetve a hangerőt nem lehet állítani. Érdekes, hogy az előző/következő és a pause működik (b,n,p). Ha a lejátszósáv (ahol az időt mutatja) az aktív, akkor pedig a le/fel gombok a hangerőt változtatják, a jobbra/balra gombok pedig előre-hátra ugranak (de azok sem meghatározott léptékben, hanem először nagyot, aztán kisebbeket). Nagyon idegesítő és nem annyira használható jól. Jó nekem az lenne, hogy jobb-bal mindig a pörgetés lenne, mondjuk 5 sec egy lenyomásra, és nyomva tartva esetleg begyorsulna; míg a fel-le mindig a számok közötti válogatás lenne. A hangerő meg bármi más, mondjuk +/- kombináció.
Rhythmbox
Ritmusdoboz barátunk az eddigi legjobb, amivel találkoztam. Ehhez mérten természetesen a fél Gnome szükséges is neki, de ebben még nem csalódtam. Nem csak zenelejátszó, de zenéink listáját is tudja menedzselni. Első indításkor meg kell adni a könyvtárat, amelyben a zenéink vannak, és szépen beindexeli az egészet. Az eredmény egy kereshető adathalmaz, amelyeket szinte tetszés szerint rendezhetünk, új lejátszólistákat hozva létre (melyek lehetnek statikusak, azaz mi dobáljuk bele a számokat, illetve dinamikusak, amikor valamely tulajdonságuk alapján közös playlistbe rendezi őket). Képes letölteni és megjeleníteni az album borítót és dalszöveget. Érdekes, hogy a tag-eket nem képes megváltoztatni a zenékben; csak a saját adatbázisában lehet átírni - ezután jól jelenik meg a rhytmboxban, de más lejátszók ebből nem érzékelnek semmit. Amire még sokat használom, az a netes rádió streamek és a last.fm hallgatás. Mivel szintén a gstreamert használja, képes akár C64 .sid zenék lejátszására is. A számok között képes crossfade-elni, de okos: például egy albumon belül nem crossfade-el. Van lehetőség a számok értékelésére is. Podcast-támogatás, iPod-támogatás is van, természetesen.
Sajnos a Totem hibája (a playlist és a lejátszó rész nincs összekapcsolva megfelelően) itt is megvan.
Amarok
Nem feledkeznék meg a KDE felhasználókról sem, csakhogy ez a program még sosem volt a gépemen és nem is vágyom rá. Állítólag mindent tud, amit ember ki tudott találni zenehallgatással kapcsolatban - a képernyőképei alapján nagyon érett a felhasználói felület. Esetleges bosszantó hibáit nem ismerem... ha valaki tudna segíteni pár szóval, írjon egy kommentet, légyszí!
XMMS
Egykor A Zenelejátszó volt az opensource rendszerekre. Külsejében és használatában a Winamp mintájára készült, sőt annak skinjeit (a 2-es szériáig) tudta is használni.
Egy adott feladatra a tökéletességig csiszolt alkalmazás - plugineken keresztül bármit le tudott játszani, tudott vizualizációt, crossfade-et és még rengeteg hasznos funkciót. Akkoriban még nem volt szükség a zenék menedzselésére; hiszen a szélessávú internetelérés és a p2p akkoriban még ismeretlen volt, tehát nem sok ember dicsekedhetett akkoriban tízezres nagyságrendű mp3-gyűjteménnyel. (Hehe.) Sajnos a fejlesztését abbahagyták (pontosabban a GTK1 kódbázisnál leragadtak, mert számos okból a program átírása GTK2-re lehetetlen feladat volt), és továbbfejlesztése több ágon indult meg; ezek közül most úhy tűnik, az Audacious nevű lesz a befutó.
Zinf
Egykor FreeAmp néven szép kis karriert futott be - használtam is, mivel ez volt az első zenelejátszó program, amely képes volt katalogizálni is a zenéket (legalábbis nekem ez volt az első); de a lejátszók új generációja szépen lemosta a pályáról.
Banshee
Nekem első látásra úgy tűnt, ez egyszerűen egy Mono/GTK# Rhythmbox klón. Nem igazán láttam át a jelentőségét...
Exaile
Lásd, mint előbb. Ennek a sok klónnak talán egyetlen haszna, hogy egymással versenyezve feltehetően jobbnál jobb megvalósítások jönnek létre. Ez egy GTK-s Amarok-klón szeretne lenni, de szerintem ott máris elrontották, hogy Pythonban láttak neki a leprogramozásnak...
Music Player Daemon
Ez talán egy külön postot is megér! Foglalkoztam vele rendesen, még patch-eltem is saját használatra, de aztán nem jött végül össze, amit szerettem volna (legnagyobb részt saját türelmetlenségem miatt), így végül dobtam a projektet. Ettől függetlenül az MPD, mint egy keretrendszer, nagyon jó! A lényege, hogy kliens-szerver a megvalósítás; tehát a lejátszó rész teljesen elszakadt a megjelenítő felülettől, ezek akár külön gépen is lehetnek. Ennek megfelelően számos felület készült hozzá; PHP-től a GTK-ig, és ezek tetszőlegesen cserélhetők, akár lejátszás közben is... ;-)
Kis összehasonlítás
Nézzük, mellik játékos mit tud, mit nem tud:
Totem | Rhytmbox | Amarok | XMMS | Zinf | Banshee | Exaile! | MPD | |
Lejátszólista | X | X | X | X | X | X | X | X |
Kereshető (intelligens) playlist | X | X | X | X | X | részben | ||
Vizualizáció | X | X | X | X | ? | X | ||
Skinek | X | X | X | X | ||||
iPod | X | X | ? | X | ||||
Streaming bemenet | X | X | ? | X | X | |||
Streaming kimenet | X | X | ? | ? | ? | X | ||
Last.FM | X | X | X | X | ||||
Borító, szöveg a netről | X | X | ? | X | ||||
Crossfade | X | X | X | ? | ? | X | ||
Windows támogatás* | X | *(1) | X |
EZ az első, hogy ilyen táblázatot rajzoltam, úgyhogy ha kéne még bele fícsör vagy valami nem úgy van, dobjatok egy kommentet, kösz.
*Windows támogatás: Hátha fontos valakinek, hogy ugyanazt a felületet lássa Windows alatt is
*(1) Igazából ez azt akarja jelenteni, hogy a Winamp 1-2 sorozattal tökéletesen kompatibilis.