JACK (JACK Audio Connection Kit)是Linux作業系統下十分強大的處理聲音訊號流向的服務。透過JACK,使用者可以讓自己的Linux電腦能夠在錄音的同時監聽輸入的聲音、產生聲音訊號,並且控制聲音訊號的流向到不同的音訊處理軟體中即時處理。



使用 lowlatency 的 Linux 核心

要在Ubuntu作業系統或是其衍生的發行版中使用JACK,可以先用uname -a或是uname -r指令來查看自己的核心(Kernel)是否是使用lowlatency版的。因為JACK需要作業系統進行低延遲的排程處理才能正常運作。

linux-jack

如果您的Linux核心並不是lowlatency版的,可以執行以下指令來安裝lowlatency版的核心:

sudo apt install linux-lowlatency

linux-jack

使用JACK很可能會遇到硬體相容性的問題,可以參考這篇文章來更深入地了解Ubuntu的Linux核心的更新或更換方式:

安裝 JACK 和相關的控制台軟體

如果您是使用Ubuntu Studio發行版,因為已經內建了JACK,所以這個步驟可以省略。

在使用uname -a或是uname -r指令確認自己正在使用的是lowlatency版的Linux核心後,就可以使用以下指令來安裝JACK:

sudo apt install studio-controls carla

如果是Ubuntu 20.04之前的版本,要把指令中的studio-controls套件名稱更換成ubuntustudio-controls

在安裝套件的過程中,會詢問是否要讓JACK擁有實時(realtime)權限的確認畫面,選擇即可。

linux-jack

安裝好後即可開啟Studio Controls (Ubuntu Studio Controls)。

linux-jack

如果有出現Fix Realtime Permissions按鈕(如上圖)就按下去,然後重新開機吧!

linux-jack

啟動 JACK 服務

開啟Studio Controls,按下Start or Restart JACK按鈕等個幾秒鐘就可以啟動JACK服務。

linux-jack

如果JACK服務啟動成功,JACK Status欄位會顯示Running

linux-jack

Carla

Carla可以把支援JACK的硬體、軟體給圖形化,方便控制音訊的流向。

JACK服務啟動後,開啟Carla,在Patchbay分頁中可以看到目前系統中的JACK軟硬體裝置有哪些,以及它們的連接關係。

linux-jack

我們可以在Carla中任意地調整這些裝置的連接線,來控制音訊的流向。舉例來說,可以把systemcapture_1capture_2分別連接到systemplayback_1playback_2,如此一來這台Linux電腦便能夠實現一邊錄音一邊監聽的功能。

linux-jack

若要移除連線要使用滑鼠右鍵,如下圖。

linux-jack

如下圖,筆者把卡西歐(CASIO)電子琴的USB MIDI輸出連接到這台Linux電腦,在Carla中會立刻出現這個裝置。筆者又把卡西歐電子琴的MIDI連接到MuseScore,這樣一來筆者用卡西歐電子琴彈奏出來的音(MIDI訊號)就會經過MuseScore的處理,套用SoundFont轉成聲音訊號並播放出來,或者進行MIDI錄製。有關MuseScore的介紹可以查看這篇文章

linux-jack

Carla本身也有插件功能,按下Add Plugin...可以選擇要加入的插件。

linux-jack

linux-jack

Audio Gain為例。筆者想讓麥克風接收到的聲音在監聽的時候不要太大聲,所以先把systemcapture_1capture_2分別連接到Audio Gaininput_1input_2,再把Audio Gainoutput_1output_2分別連接到systemplayback_1playback_2

linux-jack

切換到Rack分頁,可以調整插件的設定,並即時得到設定改變的結果。

linux-jack

如果您想保留Carla現在的設定以便下次使用,Carla也有提供儲存和讀取的功能。

linux-jack

開機後自動執行 JACK 服務

預設情況下,JACK在Linux開機後並不會自動執行,我們總是需要開啟Studio Controls來啟動JACK服務。如果不想這麼麻煩的話,可以在/etc/pulse/default.pa檔案最尾端加入以下文字,讓Linux在開機後自動執行JACK服務。

load-module module-jack-sink
load-module module-jack-source

linux-jack