Zabudnute schopnosti: junkyard networking < sound forwarding >

13.10.2009 23:28 | blackhole_ventYl

Dnes zabrdneme do dob nie tak minulych (este pred piatimi rokmi to bolo vcelku dost bezne), ked ten, kto mal na Linuxe zvuk, bol king a obvykle stravil niekolko bezsennych noci googlovanim for, nespocetnym patchovanim a rekompilaciou kernelu. Aj tak obvykle zvukovy dojem kazil jeden drobny detail: zvukova karta budto nemala channel mixer vobec, alebo sa k nej driver nevedel (alebo sa nechcel) dopracovat.

Nie tak davno predtym existovala taka fekalna mania robit na vsetko servery. Bol X server (ten este stale je, aj ked cim dalej, tym toho robi menej), potom bol font server (ten nejakym nedopatrenim nezomrel spolu s X terminalmi) a v neposlednom rade boli kadejake sound servery.

Kedze ALSA bola v tej dobe viac menej v plienkach a zasuvne moduly v nej sice de iure existovali, ale de facto nie, OSS bolo na koni a 4Front mali ryzu, fungujuci zvukovy zmiesavac bol vzacnostou, fungujuca zvukovka viacmenej vynimkou (pamatam si, ze som svoju drahociznu PCI zvukovku menil za starsi model rovnakeho vyrobcu do ISA slotu, lebo ten podporu v OSS mal), tak chlapci z fachu dosli s napadom, ze porodia sound server.

Myslienka isla asi tou cestou, ze kedze OSS je archaicky, ALSA viac nefunkcna, ako funkcna, spravime demon, na ktory sa budu aplikacie pripajat, ten bude fungovat ako SW zmiesavac a do zvukovky uz bude pustat downmixovany kanal. I tak sa chytili chlapci z projektu Enlightenment (tej doby e16?) a splodili cosi ako esd (Enlightenment Sound Daemon). Na ten sa moze napojit niekolko aplikacii a on im poskytuje funkciu zvukoveho zmiesavaca. Chlapci ale zasli tak daleko, ze umoznili sa na tento demon napojit aj zo vzdialeneho pocitaca a to je to, co vyuzijeme.

Dnes su velmi popularne hudobne servery a podobne softiky, na ktore sa narve muzika a potom cez webove rozhranie prehravaju hudbu. Windowsak by tomu povedal Media Center. Pekne by ale mozno bolo mat moznost pripojit na jeden pocitac v domacnosti nejaku vykonnu zvukovu sustavu a vyuzit napriklad bezdrotovu siet na prenos zvuku z pocitaca do pocitaca. Mojim pripadom je, ze mam v notebooku uplne rozsutene repraky (hranie racera na plnom volume zanechalo nasledky), takze na kvakanie Jabbera sice stacia, ale filmy a hudba sa cez ne pocuvat nedaju.

Dlho mi vrtalo, ako zriesit sound forwarding priamo na urovni alsy, ale to sa zrejme bez programovania vlastneho pluginu neda (a obecne si neviem dost dobre predstavit kus jadroveho kodu, ktory keca s inou masinou), ale z cias slackingu na starom notebooku som si spomenul na esd.

V esd ma v prepinacoch prepinac s nazvom -tcp, ktory sposobi, ze namiesto pomenovaneho socketu si esd otvori riadny TCP socket (standardne na porte 16001) a ak sa mu na vstup narve este aj prepinac -public, tento socket bude dokricatelny z okoliteho internetu.

ak sa teda spusti napriklad

esd -tcp -public &

v lepsom pripade vznikne demon pocuvajuci na porte 16001. Ako sa nanho ale napojit?

V dnesnej dobe letia take neuzitocne demony, ako su phonon, pulse audio a im podobni a vacsina autorov fici na tom, aby sa vedela dokricat na ne. Starsie softy maju v pazi. Po podrobnom prestudovani manpages sa da dojst k tomu, ze mplayer ESD umi priamo, xmms ma standardne ESD output tiez v ponuke a co s tymi ostatnymi (OpenWRT wiki tvrdi, ze ESD vie aj amarok, ale povedal by som, ze u verzie pre KDE4 bola tato funkcionalita presunuta do phononu)? Ak ma program moznost riesit vystup na OSS audio, sme za vodou, pretoze existuje utilitka esddsp, ktora skrz LD_PRELOAD fukne do aplikacie custom OSS API ktore sa namiesto na OSS napaja na ESD a routuje vsetok zvuk cez neho.

Pokusne sa mi to so SoXom rozchodit nepodarilo, ale kedysi v dobach drevnych to fungovalo. U ALSovych aplikacii bez priamej podpory ESD output pluginu sme ale skoncili, pretoze ALSU nemozno vyhekovat tak, aby sa zvuk redirektoval na ESD (cim ze to asi bude?).

Prenos zvuku po WiFi sieti nie je celkom bez latencie, ale napriklad pri sledovani filmu som nepostrehol ziadne spozdenie, zvuk siel prakticky spolu s obrazom.

    • Zabudnute schopnosti: junkyard networking < sound forwarding > 16.10.2009 | 03:12
      retro   Návštevník

      Tak zaujatej post bych nedal do článku ale do blogu. Autor zajisté ví všechno o ostatních démonech. Že pulseaudio umí to samé nezmíni, jenom nadává na jeho autory. Autor určitě místo toho, aby se trochu o problém zajímall, použil znalostí co má (o ESD) a sepsal tenhle rozhořčující článek.

      Příště by to chtělo ubrat plyn, víc si zjistit a napsat neutrální článek, kde se porovnávaj všechny možný démoni a servery. Shrnout to co kdo umí a neumí a pronést klidný závěr, postavený na obhajitelných důkazech.

      úroveň /dev/random

      • Re: 16.10.2009 | 14:09
        Avatar Nekroman   Používateľ

        Příště by to chtělo ubrat plyn, víc si zjistit a napsat neutrální článek, kde se porovnávaj všechny možný démoni a servery.
        S týmto s tebou nesúhlasím. On písal článok o tom ako si spraviť jednoducho sound forwading a nie nejakú recenziu alebo test demonov a serverov. Podľa mňa dobrý článok a patrí medzi články a nie blogy.

      • ... 20.10.2009 | 14:23
        Avatar fiwo   Používateľ

        blackhole neni zive, alebo lupa, autor si moze pisat co chce ako chce, a mne sa napriklad tento ventylov styl paci viac :)

      • Re: Zabudnute schopnosti: junkyard networking <sound forw.... 08.11.2009 | 21:14
        Avatar blackhole_ventYl   Používateľ

        seria clankov (vlastne su zatial len 3) zabudnute schopnosti je o starych technologiach, ktore existovali a pouzivali sa, ale uz sa s nimi prestalo. pulseaudio v slackware-i obsiahnute nie je a predpokladam, ze tak skoro ani nebude a nemal som potrebu ho tahat, ked podporu pre podobne zalezitosti mam priamo v serveri.

        kazdopadne bez ohladu na to, ci nejaky konkretny zvukovy server existuje, alebo nie, povazujem ich existenciu a dalsi rozvoj za vec spiatocnicku, pretoze valna vacsina dovodov pre existenciu zvukovych serverov pominula, alebo sa da riesit zasuvnym modulom a userspace toolmi nad ALSou.

        ---
        Cuchat s nadchou, to je ako sniffovat bez promiscu.

        --- Cuchat s nadchou, to je ako sniffovat bez promiscu.