Jack

Linux中的一種音頻介面

Jack(JACK Audio Connection Kit 的遞歸縮寫)是一個專業級的聲音服務(守護進程),它為聲音和MIDI數據提供實時的、低延時的連接,有關的程序使用JACK的API。

簡介


JACK的Logo
JACK的Logo
它是由保羅·戴維斯(Paul Davis)(他憑著這項工作贏得了2004年的開源獎)帶領的一個開源社區開發。自從2002年初以來一直是Linux下的關鍵的基礎設施和事實上的專業音頻軟體標準。這個服務是在GNUGPL協議下的開源軟體,它的庫則採用更寬鬆的GNU LGPL協議。

實現


JACK能使用ALSA、PortAudio、CoreAudio、FFADO和OSS作為硬體層的後端。此外, 還有一個虛擬的驅動(當不需要聲音輸出時是很有用的,例如離線渲染)和一個通過UDP協議的音頻驅動(Audio-over-UDP driver)。它可以運行在Linux、Mac OS X、Solaris、Windows、FreeBSD、OpenBSD和NetBSD上。JACK的API被標準化,並且存在兩種可融合的實現:jack1,由簡單的C實現並且已經維護了一段時間;至於jack2(原來的jackdmp),由Stéphane Letz領導的用C++重寫的實現,jack2在積極開發中,目標是支持多處理器和對其它非Linux操作系統。

時調度


JACK為達到足夠的低延時的調度要求是目前Linux 2.6 內核的實時操作系統優化的動力。Linux 2.6 內核最初的延時表現和老的2.4內核對比是讓人失望的。實時操作系統的調整工作已經在眾多的對主線內核和一個對2.6.24版本的插入優化的 -rt分支中的調度調整中達到頂峰,最後成為一個CONFIG_PREEMPT_RT(配置優先)補丁。
使用JACK的軟體
Rosegarden
JACK Rack
Ardour
VLC Player
Aqualung
Qtractor
LADSPA
PulseAudio