TC Player

Még a nyáron elkezdtem fejleszteni egy Total Commander beépülő modult, ami hangfájlok lejátszására képes. Ennek eredményeként született meg a TC Player.

Tanévkezdési elfoglaltságoknak köszönhetően csak most jutottam oda, hogy írjak a programról. Korábbi elődjéhez, a Bass Player-hez hasonlóan ez a program is a legbelsejében Bass.dll komponenseket használ hang lejátszásra, viszont elfelejtettem a Bass.net .NET könyvtárat, mivel eléggé meglassítja az alkalmazások működését. Helyette a C# felületet a ManagedBass.PInvoke könyvtár szolgáltatja, ami igen pehelysúlyú.

A lejátszó motorházteteje alatt dolgozó Audio motor a Bass Player-ből származik, viszont jelentősen tovább lett fejlesztve és itt-ott optimalizálva is lett, mindent a gyorsaság érdekében.

A program fő ablakaA program fő ablaka

A Plugin és a program létrehozásakor nem az volt a célom, hogy egy teljes értékű zene lejátszót fabrikáljak teletömve szolgáltatásokkal. A fő csapásvonal egy minimalista, gyorsan működő lejátszó létrehozása volt. Tehát az alkalmazásban nincs:

  • Médiatár
  • Online streaming támogatás
  • Semmi csicsa

Viszont van:

  • Oldschool DOS-t imitáló felhasználói felület 🙂
  • Számos formátum támogatása:
    • MP3, MP4, AAC, OGG, WAV, FLAC, WavPack, Apple Lossless (ALAC), WMA, AC3, CDDA, Midi (midi, mid, rmi, kar), Tracker ( xm, it, s3m, mod, mtm, umx, .mo3)
  • 32 és 64 bites operációs rendszer natív támogatása. Ez köznapi nyelven azt jelenti, hogy a program 64 bites rendszeren 64 bites alkalmazásként fut.
  • Az előzőből adódóan 32 bites és 64 bites Total Commander támogatása
  • Windows 7-ben megjelent tálca funkciók támogatása.
  • CD lejátszás (nem mintha olyan sokan használnának még Audio CD-t) CDDB tag információ gyűjtéssel
  • Web rádió lejátszás
  • Lejátszási lista kezelés
  • Winamp (m3u), iTunes (pls) és Windows Media Player (wpl) lejátszási listák betöltése
  • Audio kimenetek közötti gyors váltás (Lejátszás közben is lehet váltani, viszont ekkor a listából újra kell indítani a számot).

A program önállóan is használható zenelejátszónak, bár nem elsődleges lejátszónak lett tervezve, hanem elsősorban olyan célra, hogy kollekció rendezés közben bele lehessen hallgatni gyorsan Total Commanderben F3 lenyomásával zenékbe. A megvalósítás így áll egy C#-ban írt lejátszóból és egy beépülő modulból, ami az F3 lenyomásakor  elindítja vagy átpasszolja már egy futó lejátszónak a zene fájlokat 🙂

Eredetileg a Bass Player létrehozásakor is valami hasonló volt a célom, viszont ott a fejlesztés időközben félrecsúszott és kicsit elhízott az alkalmazás, meg bekerült pár olyan funkció, amelyek karbantartása igencsak elvitte az időt. Például az iTunes médiatár támogatása tök jó ötlet volt, csak a probléma az, hogy az Apple kiadásonként változtatja az amúgy sem dokumentált XML médiatár formátumát, így kiadásonként mindig volt egy-két funkció, ami eltört vagy szimplán csak nem úgy működött, mint ahogy kellett volna. A folyamatos változás a YouTube-ra is igaz.

Ezen funkciók kiszedése és az alkalmazás átdolgozása több időt vett volna igénybe, mint egy új, jobban megtervezett létrehozása. Tehát egyúttal ezen programom megjelenése azt is jelenti, hogy a Bass Player nyugdíjazásra kerül. A forráskódja továbbra is elérhető marad, de új funkciókat már nem fog kapni.

Lejátszási lista nézetLejátszási lista nézet

A TC Player is szintén nyílt forráskódú, így bárki megnézheti, hogy hogyan működik. A program letölthető a Github oldalról, illetve felkerült a TotalCmd.net oldalra is 🙂

A Total Commander fejlesztés rész számomra hatalmas újdonság volt, viszont ha valaki ilyesmire adná a fejét, azzal megosztok pár tapasztalatot:

  • Az API stabil, kb 10 éve alig fejlődött valamit. Ez egyfelől jó a visszafelé kompatibilitás miatt, másrészről pedig igen limitáltak a lehetőségek
  • Az API dokumentáció még mindig Windows 3.1 által használt HLP formátumban érhető csak el, aminek a megtekintése egy Windows 10 alapú masinán igencsak trükkös feladat.
  • Pár plugin van, amiből ki lehet indulni fejlesztés során, viszont ezek dokumentáltsága a nullával egyenlő sok esetben.
  • A fejlesztői és felhasználói fórum egy hulladék. Nem igen lehet benne megtalálni semmit, viszont csak sok minden itt érhető el, így igen nehéz egyről a kettőre jutni.

Az utolsó kitétel miatt elmondható, hogy a plugin nem hibátlan. Egy ismert hiba, hogy ha gyors nézőke üzemmódban (CTRL+Q) akarod használni, akkor egy számot többször is hozzáad a listához. Ezen limitációt korlátolt grafikus C++ alkalmazás fejlesztői tudásom hiányában egyenlőre nem tudtam orvosolni, a Plugin API meg nem teszi lehetővé, hogy detektálja a beépülő azt, hogy gyors nézetben van-e vagy normál üzemmódban.