Linux E X P R E S

Facebook

Zprovoznění realtimového zvukového serveru JACK

jack.png

Nahrávání a zpracování zvuku je doménou platformy Windows, pro kterou je dostupná velká spousta programů, a v profesionálních podmínkách ještě spíše počítačů Apple. Nicméně i v Linuxu máme profesionální programy a nástroje, které lze použít. Následující seriál se bude těmito aplikacemi a nástroji zabývat. Začínáme tím nejdůležitějším, a to je realtimový zvukový server JACK.


JACK a jeho grafická uživatelská nadstavba QJackCtl slouží převážně muzikantům a studiovým technikům k propojení vstupů a výstupů zvukové karty a jednotlivých programů sloužících ke zpracování zvuku, a to v reálném čase, tedy s velmi nízkou latencí (zpožděním) v řádu milisekund. Zde si ukážeme, jak tento zvukový server zprovoznit. Aplikacemi využívajícími zvukový server je například harddisk recording aplikace Ardour, masteringový nástroj JAMin, univerzální realtimový efektový procesor JACK Rack a také třeba speciálně kytarový realtimový efektový procesor Rakarrack. Zmíněnými programy se budou zabývat další kapitoly seriálu.

Hned na začátek uvedu, že používám distribuci openSUSE s grafickým prostředím KDE, nicméně uvedený postup bude fungovat s drobnými odchylkami v jakékoli distribuci.

Příprava

Základním předpokladem je, že máte funkční zvukovou kartu. Dále je nutné, abyste nainstalovali zvukový server JACK, jehož název je rekurzivní zkratkou z počátečních písmen Jack Audio Connection Kit, což bývá balíček názvem jack, ale dle distribuce se může jmenovat jinak, např. jackd. Dále potřebujete grafické uživatelské rozhraní pro JACK, což je aplikace QJackCtl, a tedy zpravidla balíček qjackctl.

Hlavní okno aplikace QJackCtl Hlavní okno aplikace QJackCtl

Jak vyplývá z názvu aplikace, je tato grafická nadstavba postavena na knihovnách Qt. Grafické rozhraní pro GTK také existuje, jmenuje se JACK NetSource GUI, ovšem obávám se, že balíček v repozitářích své distribuce nenaleznete, jelikož se jedná o poměrně mladý projekt.

Když už se snažíte o realtimové zpracování zvuku, měli byste také používat realtimové (nízkolatenčnní) jádro (kernel). Balíček se může jmenovat např. kernel-rt. Když použijete klasické jádro (default, desktop, PAE, atd.), pak zapomeňte na velmi nízkou latenci bez přerušení.

S nainstalováním nového realtimového jádra je spojena i otázka instalace ovladačů grafické karty pro zprovoznění 3D akcelerované grafiky. Může se stát, že ve vaší distribuci nebudou připraveny jaderné moduly pro realtieové jádro. Pak budete nuceni nainstalovat balíčky gcc, make a balíčky zdrojových kódů daného jádra, a dále sáhnout ke klasické instalaci ovladačů stažených ze stránek jednotlivých výrobců (AMD/ATI, nVIDIA). Ještě problematičtější situace bude např. u ovladačů wifi karet, opět pro ně pravděpodobně budou chybět jaderné moduly. Tam pak situaci zřejmě zachrání NDISWrapper.

Pro možnost úspěšného spuštění zpracování zvuku v reálném čase je třeba přidat všechny uživatele, kteří s těmito nástroji budou pracovat, do privilegované skupiny uživatelů mající právo spouštět aplikace s prioritou reálného času. Tato skupina se jmenuje audio a naleznete ji v nástroji správy uživatelů a skupin. Po zařazení všech požadovaných uživatelů do této skupiny restartujte počítač. Nyní by již neměl být problém spustit Jack pomocí grafického rozhraní QJackCtl. Schválně píšu „neměl být“ problém. Někdy problém je.

Problémy

Problém se spouštěním jsem řešil na různých instalacích. Někdy vše funguje okamžitě po přidání uživatele do skupiny audio a po restartu počítače. Někdy po stisknutí tlačítka Start v okně aplikace QJackCtl vyskočí následující chybová hláška a Jack server se okamžitě ukončí.

QJackCtl – Chybová hláška QJackCtl – Chybová hláška

Po odkliknutí chybové hlášky se zobrazí okno Messages se záznamem běhu JACK serveru.

QJackCtl – Okno Messages QJackCtl – Okno Messages

Zde je důležitý řádek „...cannot use real-time scheduling (FIFO at priority 10)...“. Je tedy třeba učinit i další kroky. Najděte si soubor /etc/security/limits.conf. Na jeho konci by měly být tři řádky začínající @audio dle následujícího obrázku:

Obsah souboru limits.conf Obsah souboru limits.conf

Pakliže tam tyto tři řádky nejsou, nezbude vám nic jiného, než je tam dopsat. Soubor musíte editovat jako root (su, sudo) a po editaci a uložení opět restartovat počítač. Po restartu počítače to již prostě musí fungovat. To, co nastavují tyto tři řádky, je právě priorita procesů spouštěných uživateli ze skupiny audio a dále maximální rezervovaná paměť.

Tak, JACK server funguje, jeho další podrobné nastavení a používání prostřednictvím grafické nadstavby QJackCtl si ukážeme v dalším článku tohoto seriálu.

V nejnovějším openSUSE 11.3 již není třeba ani editovat soubor limits.conf, a dokonce ani přidávat uživatele do skupiny audio. Jack jde spustit bez problémů rovnou, nicméně přesto doporučuji tyto akce provést.

Diskuze (8) Nahoru