18. elokuu 2010, 16:39

MPD ja PMS

Selailin tänään(kin) ajankulukseni Stack Overflow’n ketjuja, kun huomasin aika mielenkiintoisen ketjun erilaisista ohjelmista Vim-näppäinyhdistelmin. Olin melkein törmätä täydelliseen MPD-klienttiin, PMS:ään, mutta se sitten kaatuu pikkuvikoihin. Ajatukseni kääntyvät takaisin alkuvuodesta aloitettuun ja jäädytettyyn MPD-kirjastoprojektiin ja omaan klienttiin. Ehkä tyrkkään kirjaston kirjoittamisen pois, ja tyydyn tehtailemaan C-kielisellä rajapinnalla C++:aa. Tai sitten vaihdankin pythoniin, joka on nyt ollut kovasti pinnalla.

Ties kuinka monetta kertaa tänäänkin GMPC:tä hypisteltyäni ja albumeita selailessani olisi tehnyt kova mieli ja tarve käytellä pelkkää näppäimistöä kivaan ja rentoon selailuun, mutta kun ei. GMPC on toistaiseksi paras kompromissi kaiken suhteen: kevyt, näppärä, albumipohjainen haku, melko käytettävä, nopea. Sitä ei kuitenkaan hiirettä käytellä, mikä vaatii oikaisua. Tänään silmään sattui varteenotettava haastaja, PMS.

Practical Music Search

PMS on ncurses-pohjainen MPD-klientti, jossa on vahva Vim-taipumus ja kova kustomoitavuus. Gentoossa valmiin paketin asennettuani sain ohjelman oletusarvoineen auki, mutta meni hyvän aikaa löytää esimerkiksi soittolistalle lisäys tai ylipäätään mediakirjasto, missä sekin on. Näppäimetkin oli piilotettu “epäloogisesti” F1:n taakse.

Man-page toimii pääasiallisena dokumenttina ohjelmalle. Sen turvin sain tehtyä pari kustomointia (jotka muuten tehdään tiedostoon ~/.config/pms/rc):

Vähän vimimäisemmät näppäinyhdistelmät. Vimin v visual-moodista melkein täsmää tämän ohjelman valintaoperaatiota. Ja näppäin d kappaleen taikka valinnan poistamiselle listoilta on ihan itsestäänselvyys: jostain syystä ohjelman kehittäjä oli jättänyt vain Delete-näppäimen käyttöön. Muutoin oletukset ovat aika hyvät. Mitä nyt soittolistaa ei saa tyhjennettyä suoraan. Voisin kai kuvata ison C-kirjaimen “clear listille”, mutta tämänhetkinen C on kuvattu toiminnolle, jossa kropataan lista tyhjäksi senhetkistä kappaletta lukuunottamatta. Näin ollen Cd toimii clearina tällä hetkellä.

Mikä vikana?

PMS syyllistyy samaan lyhytnäköisyyteen kuin moni muukin musiikinsoittaja. Albumeita ja artisteja voi toki lajitella järkevästi, mutta jos albumilla on useita eri esittäjiä, nimet on lajiteltu päin persettä. Ei sinänsä vielä mitään ongelmaa, sillä PMS tekee paremmin kuin esimerkiksi GMPC: painamalla b:tä jonkun kappaleen kohdalla se heittää soittolistalle kaikki albumin raidat, myös sellaiset, joissa on eri esittäjä (GMPC ei tee tätä). Hyvä, hyvä. Mutta mitäs silmäni näkevätkään? Soittolistalla kappaleet on lajiteltu esittäjän mukaan, kuten kirjastossa. Eikä niitä saa mitenkään raitajärjestykseen muuten kuin itse manuaalisesti siirtelemällä. Kuinka törkeä omissio.

Nappasin jo alustavasti git-repon ylös, mutta koodi on kehnon näköistä, huonosti kommentoitua ja se vaatii vähän paneutumista.

Mieleni kääntyykin hyvin nopeasti kohti sitä omaa C++-kirjastoa ja C++-asiakasta. Stroustrupin kirjan johdolla loisin järkevän ja vikasietoisen oliomallin, jossa homma pelaisi tiukalla byrokratialla, mutta oikein.

Vaihtoehtoiset kielet

Hommaan en ole juuri muuta ajatellut kuin tätä C++:aa. Kuitenkin olisi hupsua olla tarkastamatta nyt paljon kirjoittelemaani Pythonia tai vaikkapa Haskellia (etenkin kun Haskellille on kirjoitettu jo MPD-kirjastomoduli). Pythonissakaan ei olisi mitään suurta vikaa. Sen löysä tyyppitarkastus ei vain miellytä samalla tavalla kuin staattisesti tyypitettyjen kielien vastaavat. C++:ssa on vetovoimansa. Tällä hetkellä se vetovoima tässä tapauksessa vain kovasti häivenee huonon kirjaston takia (libmpdclient, C-kielinen). Paketointi C++-luokiksi kuitenkin auttaisi roimasti, jos sen saa tehtyä vikasietoiseksi ja toimintavarmaksi. Uskoisin ainakin, ei se uudelleenkirjoittelu niin työläs ole. Kirjastohan on pienensutjakka. Kirjoittelin aiheesta kesäkuussa hieman.

Tageja: ,

---
---

---

Aiheen vierestä