JACK Audio Connection Kit
JACK (JACK Audio Connection Kit 的遞歸縮寫)是一個專業級的聲音服務(守護進程),它為聲音和MIDI數據提供實時的、低延時的連接,有關的程式使用JACK的API。
![]() | |
![]() | |
原作者 | Paul Davis, Stéphane Letz |
---|---|
開發者 | JACK團隊[1] |
當前版本 |
|
源代碼庫 | |
編程語言 | C[3], C++ |
操作系統 | BSD、Linux、Mac OS X、Solaris、Windows |
類型 | Sound server |
許可協議 | GNU GPL, GNU LGPL |
網站 | jackaudio.org |
它是由保羅·戴維斯(他憑着這項工作贏得了2004年的開源獎[4])帶領的一個開源社區開發。自從2002年初以來一直是Linux下的關鍵的基礎設施和事實上的專業音頻軟件標準。這個服務是在GNU GPL協議下的開源軟件,它的庫則採用更寬鬆的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操作系統。[5]
低延時調度
編輯JACK為達到足夠的低延時的調度要求是目前Linux 2.6 內核的實時操作系統優化的動力[6][7]。Linux 2.6 內核最初的延時表現和老的2.4內核對比是讓人失望的。[8]實時操作系統的調整工作已經在眾多的對主線內核和一個對2.6.24版本的插入優化的 -rt分支中的調度調整中達到頂峰,最後成為一個CONFIG_PREEMPT_RT
(配置優先)補丁。
[9]
參見
編輯參考資料
編輯- ^ JACK Developer Information. jackaudio.org. [2010-01-02]. (原始內容存檔於2010-01-08).
- ^ Release 1.9.22. 2023年2月2日 [2023年2月15日].
- ^ Ohloh Analysis Summary - JACK. Ohloh. [2010-02-02]. (原始內容存檔於2012-06-06).
- ^ Open Source Awards 2004: Paul Davis for JACK. techrepublic.com.com. [2010-02-16]. (原始內容存檔於2012-07-01).
- ^ What's new in JACK2? - Linux Audio Conference 2009 paper by primary JACK2 author Stephane Letz. linuxaudio.org. [2010-02-17]. (原始內容存檔於2010-03-17).
- ^ Original annoucement of a voluntary pre-emption patch for the Linux 2.6 kernel series by Ingo Molnar, 2004. lkml.org. [2010-02-17]. (原始內容存檔於2016-08-18).
- ^ Finding Origins of Latencies Using Ftrace, paper by Steven Rostedt from the Real-time Workshop 2009 (PDF). [2010-02-17]. (原始內容存檔 (PDF)於2012-10-21).
- ^ Real-time audio vs. 2.6, Linux Audio Conference 2006 paper by Lee Revell (PDF). [2010-02-17]. (原始內容存檔 (PDF)於2020-11-10).
- ^ Real-Time Linux Wiki. Linux Kernel Organization. [2010-06-08]. (原始內容存檔於2012-02-06).