Linuxオーディオ環境「JACKサウンドサーバー」の導入

(2019.11.13執筆、2025.04.25追記)


筆者の執筆時のOSは、Linuxmint20.3です。
LinuxのDTM(音楽制作)環境を整えるのに、欠かせないのがJACKサウンドサーバーの導入。
WindowsでいうASIOドライバー、MacでいうCoreAudioのような役割。

qjackctl

参考 ⇒ JACKサウンドサーバについて


Linux標準のサウンドシステムでは一つのアプリからしか音を鳴らせない。 しかし、JACKのパッケージを導入することで複数アプリから音声がmixされた状態でスピーカーに出力されます。 JACKサウンドサーバーで、パソコンがマルチオーディオに対応します。
加えて低レイテンシになる(音声の入力遅延が少なくなる)というメリットもある。

DAW環境には必須です。早速、LinuxにJACKを導入してみましょう。

「qjackctl」パッケージを導入する

「qjackctl」はJACKのパフォーマンスを細かく設定するためのアプリ。 このパッケージ内に、Jackライブラリが含まれます。

参考 ⇒ JACKサウンドサーバGUI(qjackctl)について

ページの下部に「qjackctl」を介してJACKオーディオサーバーを設定する方法が載ってます。

qjackctlをインストール

ともあれ「qjackctl」パッケージをインストールしてみます。ソフトウェア管理からもいけるけど

qjackctlインストール


ターミナルから導入してみます。
sudo apt install qjackctl pulseaudio-module-jack

パッケージをインストールする途中、同梱されてる"Jackd2"の導入で「リアルタイム実行優先度の設定を有効にしますか?」に。
はい、と答えます。いいえと答えても、いずれも次に「オーディオグループにユーザー権限を追加」する操作が必要になってきます。

オーディオ機能の制限を外す(ユーザーをaudioグループに追加する)手順

sudo gpasswd audio --add <username>
<username>の箇所には、linuxのユーザー名を記載してください。 ローカルユーザーをaudioグループに追加することで、JACK周りのオーディオ機能が解放されます。

ターミナルでaudioグループに属するユーザーの確認

grep audio /etc/group
audio:x:29:pulse,ユーザー名...が表示されることを確認


もしaudioグループにユーザーが追加されてない場合や、audioにmemlockが掛かってる場合、DAWやプラグイン起動時に以下のようなエラーメッセージが出ます。

audio memlock

audioのmemlockを無制限にする

/etc/security/limits.d/audio.conf
もしもaudio.conf.disabledになってる(JACKのリアルタイム設定を有効にしなかった)場合は、ルート権限で/etc/security/limits.d/下を開き、ファイル名をaudio.confに変更して有効化します。

次に

/etc/security/limits.d/audio.conf
このファイルにルート権限でアクセスし、中身を確認します。

@audio   -  rtprio     95
@audio   -  memlock    unlimited
@audio   -  nice      -19
#@audio - nice -19  の行の
左端に#が付いて無効化されていることがあるので、#を外します。
- nice設定は、audioグループの優先度を示すもので、値が小さいほど優先度が高くなるそうです。
Linux mintでのデフォルト値は-19でした。

わからない方はubuntustudio-controlsを導入して操作を完了させる

sudo apt-get install ubuntustudio-controls
オーディオグループ追加のコマンドがよくわからない方は、ターミナルで上記をコピーして実行し、ubuntustudio-controlsをインストールしたら、ユーザーのaudioグループの追加を画面上で操作することも出来ます。

audio memlock

ubuntustudio-controlsを起動して画像の場所をクリックするだけです。
クリックでオーディオグループにユーザー追加したら、memlockが自動で外れます、慣れない方におすすめです。

ここまでが下準備です。

qjackctlから設定を確認

qjackctl
インストール後、ミントメニューから「qjackctl」と入れて起動します。
次に設定ボタンをクリックして、諸設定を見ていきましょう。

ここから設定画面

qjackctl設定

私の設定サンプルです。(DTM打ち込みメイン用途)
ここで音声出力のサンプルレートやバッファサイズを変更することができる。
レイテンシーの時間も確認することができる。

  • サンプルレート....一般的なCDの音質44.1kHz。ハイレゾ音源は96kHz以降の設定。大きいほどCPU負担増
  • フレーム/ピリオド....数が小さいほどレイテンシー軽減、CPU負荷大。数が多いほどCPU負荷が減り、ノイズも改善。
  • ピリオド/バッファ....同上
  • レイテンシーの計算式...「フレーム/ピリオド」値 × 「ピリオド/バッファ」値 ÷ 「サンプルレート」値 × 1000 (ミリ秒)


サンプルレートは使用する音源に合わせて固定なので、残りのフレーム/ピリオド/バッファの調製例をば

リアルタイム収録を優先するときはバッファサイズを小さく

リアルタイムの収録再生、低レイテンシーを求めるのであれば、音飛びのないギリギリまでフレーム/ピリオドの値を少なくしてから収録に臨みます。(10msくらいが理想値らしい)
収録時は2mix(ボーカルとそれ以外)でトラック数を最小にして。低レイテンシーでも問題なく再生できるように。

音質やCPUコストを優先するときはバッファサイズを大きめに

逆に高音質音源やプラグインを多く使うことでCPU負荷が増え、音声にノイズや音割れが発生するときは、フレーム/ピリオドの値を大きめにとることで改善されます。(DAW上で完結してれば、多少の遅れは問題ない)


JACKの導入によりオーディオ周りの調整が円滑になり、DAWの音質を最大限に活かせるようになります。

その他の設定

参考。特に初期状態で困らない。

qjackctl設定その他

サウンド設定の変更を反映させる

設定の変更はJACK再起動後に有効になるので、
一度JACKを終了して閉じて、再びJACKを再起動、スタートした後に、DAWを立ち上げます。

追記:lowlatencyカーネルの導入

此処からよりリアルタイム入力を優先する人向けの記事。CPUの負担や内部の温度上昇、消費電力増...という部分を認識しつつも、リアルタイム音声の入出力を優先する人に、ぜひぜひ。

参考 ⇒ How to install linux-lowlatency on ubuntu


私自身はここをパスで。

追記2:pipewireについて

2025年、JACKの代わりにpipewireを導入する例が増えました。
現在オーディオの品質はJACKの方が安定しますが、アプリ毎にJACK音声出力のONとOFFの切り替えが煩わしいという一部の方にとって、代替え品と思わしきpepewireが出現しました。

参考 ⇒ Linuxで(不毛な)「良い音」を目指す設定


現状JACKと通常の音声出力であるpulse audioと切り替えできることが、省電力性とパフォーマンスに優れた選択肢です。 オーディオの品質にこだわる時にJACKを立ち上げる。(DAWの設定で、アプリ立ち上げ時に自動でJACK起動・音声出力を切り替えできるので煩わしさはありません)

オーディオ出力全体を何となく網羅し、操作の煩わしさを回避するpipewire。というコンセプトの段階では。DTMの視点だとJACKの導入を勧めたくあります。動向を見守りましょう。