1. Počítač není jen k počítání...
Nemalá část čtenářů je na tom určitě podobně jako já: podstatnou část dne sedíme u počítače, který se na dobu kdy právě nepracujeme ani nevyplatí vypínat. Takový počítač však může zároveň zajišťovat řadu praktických a příjemných služeb ve sféře automatizace domácnosti - od řízení bezpečnostního systému přes ovládání audiovizuální techniky až třeba po kontrolu vytápění. Samozřejmě, lze bez problémů získat specializované přístroje - bezpečnostní ústředny, telefonní záznamníky, faxy, multi-room AV systémy, programovatelné termostaty, ... počítač však má řadu výhod:
- celý systém je daleko levnější - místo specializovaných inteligentních přístrojů potřebujeme pouze řídící rozhraní;
- možnost jednoduché změny řídícího software dává celému systému flexibilitu, které samostatné přístroje nikdy nemohou dosáhnout;
- nejdůležitější však je možnost vzájemných vazeb mezi jednotlivými subsystémy.
V tomto článku se seznámíme s jedním konkrétním případem - popíšeme si CD přehrávač NSM CD-3101AC, řízený počítačem. Nejprve se budeme chvíli zabývat vlastním přehrávačem; pak se podíváme na systém jeho řízení a potom si ukážeme konkrétní řídící software. Nakonec stručně probereme otevřená rozhraní řídícího systému, umožňující jeho spolupráci s dalšími zařízeními, ovládanými počítačem.
2. CD přehrávač
CD přehrávač NSM CD-3101AC spojuje výhody jukeboxů s velmi kvalitním zvukem a přináší i další výhody; jeho výrobce si za to ovšem nechá zaplatit nemalý peníz (na druhou stranu, např. jukebox DENON DN1200F/C, jenž nabízí srovnatelný zvuk, je ještě daleko dražší). CD-3101AC je stodiskový jukebox, který využívá dvou zásobníků po padesáti discích. Zásobníky můžeme snadno měnit, takže na rozdíl od naprosté většiny ostatních jukeboxů můžeme mít všechny disky v zásobnících a tedy rychle a pohodlně přístupné. Hlavní výhodou přehrávače však je jeho otevřenost různým systémům řízení. Přehrávač je proto ideální jednotkou pro multi-room systémy, kde se projevuje hlavní nevýhoda jednodiskových přehrávačů: není právě pohodlné běhat např. z ložnice do haly, ve které je umístěn přehrávač, chceme-li si v ložnici poslechnout oblíbenou skladbu. Sama firma NSM dodává adaptér pro zapojení přehrávače do multi-room systému BeoLink (Bang&Olufsen); přehrávač ale je vybaven standardním rozhraním RS-232, takže není problém vytvořit adaptér pro jakýkoli jiný multi-room systém nebo řídit přehrávač prostřednictvím osobního počítače.
CD-3101AC sice patří mezi jukeboxy, není však v žádném případě nijak ošizen ani po zvukové stránce; naopak - díky svým zvukovým kvalitám je používán i v profesionální sféře. Sám jsem porovnával jeho zvuk se starším Pioneerem CDP-M901; i když vezmu v úvahu vliv psychoakustiky (nedělal jsem slepé testy) byl výsledek - pro majitele přehrávače NSM - velmi potěšitelný.
Zajímavý je i design přístroje. Přehrávač je uložen ve střízlivě černé skříňce prakticky bez jakýchkoli ozdob - na čelní stěně vidíme logo NSM, logo CD, nepříliš výrazný název přístroje a kontrolku zapojení do sítě - to je vše. Vzhledově se přístroj velmi dobře hodí prakticky do libovolné sestavy, ať již se jedná o klasicky černé přístroje nebo třeba o moderní design ReVox Evolution. Snad jediným omezením je vertikální koncepce, která znemožňuje přehrávač umístit do klasické "věže". Čelní dvířka jsou tvořena kouřovým sklem, které odhaluje oba zásobníky, mechanismus výtahu, jenž dopravuje disk k vlastnímu přehrávači, i právě přehrávaný disk. Tento pohled "do útrob", srovnatelný např. s CD přehrávači Bang&Olufsen není nezajímavý a faktem je, že většina mých návštěvníků při poslechu hudby neodolala pokukovat "jak se to tam vozí". Mimochodem, čelní dvířka přístroje lze uzamknout, což je výhodné chceme-li jej použít ve veřejném prostoru.
Po technické stránce je poměrně zajímavý "výtah", přepravující disky mezi zásobníky a přehrávací jednotkou. Každý disk je samostatně uložen v plastovém držáku; výtah tento držák vytáhne ze zásobníku a odveze dolů, kde si již disk převezme jeho unašeč. Transportní mechanismus se tedy samotného disku vůbec nedotkne, takže disky jsou maximálně chráněny před jakýmkoli poškrábáním nebo jiným poškozením. Výtah je navíc velmi rychlý - s maximální dobou pro výměnu "nejvzdálenějších" dvou disků necelých deset vteřin je CD-3101AC jedním z nejrychlejších jukeboxů na světě. Můžeme se také zmínit o tom, že kromě držáků disků (a disků samotných) se v přehrávači s umělou hmotou prakticky nesetkáme - celý mechanismus je vyroben z kvalitní oceli.
Konečně na zadní stěně přístroje nalezneme síťovou zásuvku a pět konektorů: dva CINCHe pro levý a pravý analogový kanál, koaxiální a optický digitální výstup a standardní devítipinový konektor CANON pro rozhraní RS-232, přes které se k přehrávači připojuje ovládací systém.
3. Ovládání přehrávače
Ovládací protokol kterému CD-3101AC rozumí obsahuje všechny příkazy potřebné i pro ty nejsofistikovanější ovládací systémy. Rozhraní RS-232 může komunikovat rychlostmi od 1200 do 19200 baudů a standardně využívá nejběžnější možný režim - osm bitů bez parity. Přehrávač je řízen signálem DTR - jakmile počítač tento signál nastaví, přehrávač se zapne; po zrušení signálu přejde přehrávač do režimu stand-by. Rozhraní nevyužívá hardwarový handshaking, takže pro komunikaci stačí ten nejjednodušší čtyřdrátový kabel se signály DTR, TXD, RXD a se zemí.
Pro komunikaci mezi přehrávačem a ovládacím systémem slouží pakety s proměnnou délkou. Za normálních okolností vždy řídící systém odešle příkazový paket a přehrávač - po provedení požadovaného příkazu - odpoví paketem s informacemi o tom jak byl příkaz proveden. Přehrávač sám od sebe žádné informace neodesílá; jen na chybu přenosu reaguje odesláním kódu NAK.
3.1. Hlášení chyb
Součástí každého návratového paketu je návratový kód, jehož prostřednictvím přehrávač informuje řídící systém byl-li příkaz proveden bezchybně nebo došlo-li k nějakému problému. Přehrávač dokáže rozlišit a ohlásit asi dvacet chybových stavů; z hlediska řídícího software patří mezi nejzajímavější tyto:
- nekorektní formát příkazového paketu;
- neznámý příkaz;
- otevřená dvířka přehrávače;
- požadovaný disk není v přehrávači;
- požadovaná skladba nebo čas není na disku;
- disk je nečitelný;
- výtah disků je něčím blokován.
3.2. Řídící příkazy
Základem ovládacího protokolu jsou samozřejmě řídící příkazy, na základě nichž přehrávač vykonává jednotlivé činnosti. Ovládací protokol nabízí řadu příkazů, které jsou často vzájemně nahraditelné - tvůrce ovládacího software si tak může vybrat příkazy, jež mu nejlépe vyhovují. Nejdůležitější příkazy které CD-3101AC dokáže zpracovat jsou:
- zavedení disku určeného buď číslem 1-100 nebo relativní pozicí vůči právě přehrávanému disku. Přehrávač po zavedení disk ihned roztočí, ověří je-li čitelný a načte tabulku jeho obsahu (ta obsahuje počet skladeb a jim odpovídající časové údaje); hned následujícím příkazem si tedy můžeme vyžádat přehrávání;
- návrat disku do zásobníku. CD-3101AC si vždy pamatuje z kterého zásobníku a ze které pozice byl disk zaveden; příkaz proto nepotřebuje žádný parametr;
- nastavení požadované skladby nebo požadovaného indexu. Podobně jako u volby disku můžeme skladbu (index) určit buď absolutním číslem nebo relativně vůči právě přehrávané skladbě (indexu);
- nastavení požadovaného času. Opět můžeme volit absolutní údaj nebo relativní polohu vůči momentálnímu času; požadovaný čas určujeme v minutách a vteřinách. Nejmenší časové jednotka se kterou můžeme pracovat je 1/75 vteřiny;
- nastavení nebo zrušení pauzy;
- volba směru a rychlosti přehrávání: můžeme přehrávat skladby dopředu nebo zpět, rychlost je volitelná v devíti stupních od normální až po velmi rychlé přehrávání;
- potlačení signálu ve třech stupních: normální síla, poloviční síla a žádný signál;
- volba režimu autopauzy.
Význam všech příkazů snad s výjimkou posledního je asi zřejmý. Režim autopauzy je velmi jednoduchý - v něm prostě přehrávač po ukončení kterékoli skladby automaticky přejde do režimu pauza (namísto toho, aby začal přehrávat další skladbu); to je velmi šikovné pro přehrávání skladeb v náhodném nebo v programovém pořadí.
3.3. Stavové příkazy
Kromě řídících příkazů samozřejmě potřebujeme další sadu příkazů, které umožní ovládacímu systému zjišťovat momentální stav přehrávače a dosáhnout tak interaktivního řízení. Řadu informací získáme přímo z návratových paketů jednotlivých příkazů - např. součástí návratového paketu příkazu pro zavedení disku je počet skladeb na zavedeném disku a jeho celková délka; stačí proto jen několik stavových příkazů:
- zjištění identifikačního kódu přehrávače a verze jeho vlastního řídícího software umožňuje připravit univerzální ovladač, který bude schopen řídit více různých přehrávačů;
- praktická je možnost načíst délku a výchozí čas kterékoli skladby;
- velmi důležitá je schopnost přehrávače přečíst identifikační číslo disku - každý CD má vlastní jednoznačné identifikační číslo, podle nějž jej může řídící software snadno poznat;
- nejčastěji využívaným příkazem je nepochybně načtení kompletního stavu - zde se dozvíme momentální režim (přehrávání/pauza/zrychlené přehrávání), právě přehrávanou skladbu i aktuální čas a řadu dalších údajů.
4. Ovládací software
Ovládací software samozřejmě může vypadat vlastně jakkoli, podle konkrétních požadavků toho kterého uživatele. Sama firma NSM dodává k přehrávači jednoduchý ovladač schopný pracovat pod MS DOSem a pod MS Windows; v tomto článku se stručně seznámíme s ovladačem, který používám pod
NEXTSTEPem.
4.1. Struktura ovládacího software
Ovladač intenzivně využívá objektové struktury NEXTSTEPu a je navržen jako univerzální řídící systém, určený pro ovládání víceméně libovolné skupiny přehrávačů libovolného typu - od CD přehrávačů až třeba po radiopřijímače, DMX přijímače nebo zvukové záznamy, uložené na pevném disku. Strukturu softwarového vybavení ukazuje obrázek:
Vidíme jeho tři úrovně: na nejvyšší je jednoduchý řídící program, střední úroveň reprezentují zaveditelné ovladače pro jednotlivé typy zařízení a na nejnižší úrovni jsou zaveditelné ovladače jednotlivých konkrétních přehrávačů.
4.2. Zaveditelný ovladač pro CD-3101AC
Zaveditelné ovladače jednotlivých zařízení jsou co nejjednodušší; nejinak tomu je i s ovladačem pro přehrávač NSM. Ten zajišťuje jen zcela základní služby pro CD přehrávač, zhruba odpovídající příkazům, jež jsme popsali v minulých odstavcích. Navíc je zde několik pomocných služeb pro zapnutí a vypnutí zařízení, pro zjištění ve kterém zásobníku je zadaný disk a podobně. Ovladač tedy obsahuje jen o málo více než převod příkazů reprezentovaných zprávami Objective C na příkazy CD-3101AC předávané prostřednictvím rozhraní RS-232.
4.3. Zaveditelný ovladač pro CD přehrávače
Většina služeb řídícího systému je skryta uvnitř ovladače pro obecný CD přehrávač - ten převádí univerzální příkazy určené pro libovolný přehrávač na příkazy odpovídající CD, spravuje databázi titulů, převádí asynchronní příkazy uživatele (který si může kdykoli vyžádat jakoukoli službu) na obecně synchronní řízení vlastního zařízení a tak dále.
Ovladače pro typy zařízení komunikují s nadřízeným systémem na základě protokolu, daného kombinací médium/skladby: nadřízený systém si může od ovladače vyžádat seznam médií které jsou k dispozici a skladeb, které jsou na nich uloženy (v případě radiopřijímače by samozřejmě médium odpovídalo stanici a seznam skladeb by byl neznámý). Pak si nadřízený systém může od ovladače vyžádat přehrání kterékoli skladby; ovladač navíc nabízí služby typu pauza, zapnutí/vypnutí zařízení a v předem určených intervalech informuje nadřízený systém o stavu - která skladba je právě přehrávána, jak dlouho, kolik ještě zbývá (je-li tato informace k dispozici) a podobně.
U zařízení typu CD přehrávače navíc ovladač udržuje informaci nejen o tom která média a skladby existují, ale také která z nich jsou právě k dispozici (disky jsou právě v přehrávači) a která ne. Vyžádá-li si nadřízený systém přehrání některé skladby jež momentálně není k dispozici, předá mu ovladač požadavek na vložení odpovídajícího zdroje; nadřízený systém pak může tento požadavek předat uživateli.
4.4. Databáze skladeb
Databáze skladeb se samozřejmě zásadně liší pro zařízení typu CD přehrávače, kde jsou všechny údaje staticky uloženy na disku, a pro zařízení typu DMX přijímače, kde je většina informací získávána on-line z přijímače. V tomto článku se podíváme blíže na konkrétní implementaci databáze titulů pro CD přehrávače.
Databáze titulů v principu nemusí obsahovat nic jiného, než strukturu médií a skladeb které jsou na nich uloženy; každé médium a každá skladba má své jméno a svou jednoznačnou identifikaci. Zároveň však databáze může - ale nemusí - obsahovat řadu dalších informací; namátkou můžeme jmenovat
- délku skladby nebo všech skladeb na médiu;
- pořadové číslo skladby v rámci média nebo média v rámci zásobníku;
- ikonu média či skladby, kterou může využít grafické rozhraní nadřízeného systému;
- podrobný popis média či skladby (v RTFD formátu, tj. formátovaný text s libovolnými vloženými objekty - typicky by zde mohl být obrázek a text z bookletu, který je dodáván s odpovídajícím diskem);
- text skladby nebo podrobnější informace (opět v RTFD formátu, navíc zde však mohou být značky obsahující časové údaje, které spojují části textu a jim odpovídající části skladby);
- pomocné informace - např. míru oblíbenosti skladby, podle které může nadřízený systém skladbu přehrávat častěji nebo méně často;
- zcela obecná data pro jiný modul - velmi dobrý smysl dává např. nastavení equalizéru, zvolené pro tu kterou skladbu.
Pro snadnou implementaci jsem proto zvolil uložení databáze do struktury adresářů; z hlediska zabrané kapacity disku je sice taková struktura neefektivní, ale její údržba je velmi pohodlná. Navíc, při dnešních kapacitách pevných disků již několik desítek nebo stovek KB nehraje tak zásadní roli.
Celá databáze je uložena v adresáři ~/Library/MediaPlayer. Zde jsou umístěny adresáře reprezentující zásobníky (a disky, neuložené v žádném ze zásobníků). Každý zásobník pak obsahuje další adresáře reprezentující disky, které jsou v něm uloženy; každý disk obsahuje další úroveň adresářů reprezentujících jednotlivé skladby. Tím struktura adresářů končí - uvnitř skladeb již jsou umístěny jen jednoduché soubory, obsahující informace o té které skladbě.
Nejzákladnější informace o objektech - jako je jejich jméno, pořadové číslo, pro disky a skladby délka a pro disky identifikační číslo - jsou zakódovány do jmen adresářů; všechna ostatní data (ikony, popisy, texty skladeb) jsou uložena v odpovídajících adresářích. Ukažme si část celé struktury:
~/Library/MediaPlayer
D_00_Cohen: Songs of Love And Hate_44:23_000D7DB00A
Icon.tiff
Description.rtfd
T_01_Avalanche_00:02_05:03
T_02_Last Year's Man_05:03_11:03
T_03_Dress Rehearsal Rag_11:03_17:08
...
M_50_Mag 1
Icon.tiff
D_01_Bobek: Muž na konci světa_71:59_4323101F11
T_01_Pojď stoupat jak dým_00:02_03:08
Text.rtfd
T_02_Oh, ruby_03:08_06:00
T_03_Sweet Little Sixteen_06:00_08:51
SkipThisTrack
T_04_Vincent_08:51_12:40
...
D_02_Bobek: Dík že smím pár přátel mít_71:12_4187321E0F
...
Vidíme, že v databázi je "volný" disk "Cohen: Songs of Love And Hate", který obsahuje 44 a půl minuty hudby a má číslo 000D7DB00A. Databáze pro tento disk obsahuje ikonu a popis; na něm jsou skladby Avalanche, Last Year's Man atd. V prvním zásobníku pak jsou uloženy (mimo jiné) dva disky Pavla Bobka; na prvním z nich je skladba "Pojď stoupat jak dým", pro kterou je v databázi uložen text, a skladba "Sweet Little Sixteen", která je vyřazena z přehrávání.
4.5. Uživatelské rozhraní
Uživatelské rozhraní - tj. nejvyšší vrstva programového vybavení - je zatím velmi jednoduché a zdaleka nevyužívá všech možností nižších vrstev. Důvody jsou dva: předně, zatím nemám elektronicky řízený zesilovač, equalizér a další vybavení, pro které by mělo smysl některé služby využívat; za druhé, nepodařilo se mi bohužel nikde najít v počítačem zpracovatelné podobě databázi všech potřebných informací, a opisovat popisy nebo texty skladeb do databáze ručně se mi nechce (a i kdyby se mi chtělo, neměl bych na to čas). Mimochodem, pokud by snad některý z čtenářů tohoto článku o podobné databázi věděl, byl bych mu velmi vděčný kdyby mi tuto informaci poslal na adresu <ocs@ocs.cz>.
Základem je panel, který je neustále viditelný v pravém horním rohu obrazovky (samozřejmě, že jej mohu v případě potřeby přemístit i kamkoli jinam). Panel není zapotřebí příliš popisovat - je v něm zobrazeno jméno právě přehrávané skladby a disku (média) na kterém je skladba uložena; tři časové údaje ukazují jak daleko je skladba přehrána a kolik ještě zbývá. Pole "Current" je - jak naznačuje jeho bílé pozadí - volně editovatelné; v něm mohu určit požadovaný čas, chci-li přeskočit na konec - nebo třeba zpět na začátek - skladby. Několik zbývajících ovladačů umožňuje nastavit nebo zrušit režim pauzy, přeskočit právě přehrávanou skladbu (Skip), nebo přeskočit skladbu a označit ji tak, aby se nepřehrávala ani příště (Sk&Mk) a přepínat mezi náhodným a sekvenčním pořadím skladeb (Rand). Poslední tlačítko Quit prostě přehrávač vypne (zapnutí je automatické - stačí požádat o přehrání jakékoli skladby když je přehrávač vypnutý).
Chci-li si poslechnout některou konkrétní skladbu, využiji druhý panel, který vidíme na obrázku. Pomocí tlačítek v jeho horní části lze v tabulce zobrazit všechny disky, nebo všechny skladby; kteroukoli skladbu pak lze okamžitě přehrát tlačítkem Play now nebo pomocí tlačítka Play zařadit "do fronty", takže na ni přijde řada po ukončení skladby, kterou systém právě přehrává. Tlačítko Disable umožňuje kteroukoli skladbu vyřadit ze seznamu přehrávaných skladeb.
Textové pole v horní části okna umožňuje blíže určit požadovanou skladbu nebo disk - zapíšeme-li do něj několik slov, vybere systém jen ty skladby nebo disky, jejichž jména obsahují zadaná slova:
Zde je vidět také to, že skladba "Sweet Little Sixteen" je vyřazena z přehrávání; zvolíme-li ji však v tabulce, změní se tlačítko Disable na Enable a skladbu můžeme opět aktivovat. Řídící systém samozřejmě umožňuje i vytváření "programů" - skupin skladeb, které mají být přehrány v předem určeném, nebo v náhodném pořadí. Ty jsou, společně se seznamem právě přehrávaných skladeb, součástí hlavního okna aplikace:
5. Další možnosti
Řízení audio systému počítačem přináší řadu dalších zajímavých možností. Fantasii se samozřejmě meze nekladou; zmíním se proto jen o několika hračkách, které jsem sám vyzkoušel:
- nic není jednoduššího, než nechat se hudbou budit - daleko příjemněji než budíkem (a je-li počítač vybaven přijímačem DCF77 a zdrojem UPS - což již není žádná zvláštní výjimka - také daleko přesněji a spolehlivěji);
- máme-li zvukovou kartu, mikrofon a odpovídající programové vybavení, můžeme přehrávač ovládat hlasem z libovolného místa, mnohem pohodlněji než IR ovladačem;
- je-li počítač vybaven modemem, můžeme snadnou úpravou jeho řídícího software dosáhnout toho, že jakmile nám někdo volá přehrávač se automaticky přepne do režimu pauzy;
- máme-li modem, který nabízí rozšířené služby (jako např. nový ZyXEL), může totéž fungovat i když telefonujeme sami: jakmile zdvihneme sluchátko, přehrávání se zastaví; jakmile jej položíme, přehrávání pokračuje...
6. Takže...
NSM CD-3101AC neaspiruje na široké rozšíření v domácnostech běžných audiofilů; ačkoli je po zvukové stránce srovnatelný i se špičkovými jednodiskovými systémy je oproti nim o poznání dražší a jeho výhody - především neuvěřitelně široké možnosti ovládání - zdaleka každý nevyužije. Na druhou stranu, pokud někdo stejně jako já poslouchá rád hudbu při práci, a zvlášť při práci na počítači - kterým může přehrávač bez problémů ovládat - začnou výhody převažovat. V každém případě pak NSM CD-3101AC s odpovídajícím programovým vybavením stojí za úvahu těm, kdo chtějí svůj dům nebo byt vybavit automatizovaným elektronickým systémem.