JACK導入・3分クッキング(2020年8月25日改訂)
(17.10beta1追記+18.04LTS alpha2/beta)+ manjaro + antergos + ubuntu 18.04LTS and 20.04LTS + Linux Mint 20 )クッキングの流れは3ステップ。工程をグループにしてゆっくり考えれば誰でもできる。
- jackキットを一式導入する
※追加::ユーザー所属グループにaudio があるか確認してみましょう。なければ設定します。 DEに応じたGUIで設定してください。だいたい設定の「アカウント」で変更できます。ターミナルでも良いです。- jackを設定する(ここがミソ)
- アプリケーションを設定する
ユーザー所属グループにaudio があるか確認する。
debian/ubuntu/mintは自動設定の気がします。
余談(manjaro とantegosでは部分的に違いますが、導入後は当然同じなわけで、何れも問題なく動いています。というより、ubuntu/mint ではどうやってもハイレゾが微妙なUSB-DACがあるんですが、manjaro とantergos ではそのDACもほぼパーフェクトじゃないかと。このふたつのarch系に関しては最終的にはdbusを使うようにしました)余談終了。
bitperfect視点の気づき
追記:ビットパーフェクトっぽい話です。JACK処理落ちなどの際にチェックしておくべきことを記事にしました。オススメではありますが、結局のところだめなものはだめなので、特定USB-DACでははまらないようにしましょう。
通常pulseでヘロヘロなものを改善したところで仕方ないってのが当方の結論。USB-DACは買い替えたほうがましです。
以下はこのページに来た方はきっと興味があるはずです。おすすめなのでお時間があればどうぞ。
JACKインストール。はじめます
さて、といっても、ubuntu/mintだと、いまや簡単です。CTRL+ALT+T でターミナルを開いて、下の一行を貼り付けてエンター。
sudo apt-get install qjackctl
か
sudo apt install qjackctl
のいずれかを。基本同じです。
めんどくさい人は、この段階で、pulseaudio-module-jackも最初からいれておいてもいいです。パルスオーディオとの共存を考慮したい人向けです。普通に使いたい人は、むしろ次を発行でいいのではないかと。VLCを使っているという前提です。
sudo apt install qjackctl pulseaudio-module-jack vlc-plugin-jack
sudo apt install qjackctl pulseaudio-module-jack vlc-plugin-jack
※archメモ sudo pacman -S qjackctl
依存関係含めて必要一式が導入されます。それでインストール/導入は終わりです。17.10でも確認してみました。Synapticなどでも同様です。qjackctlで検索して選んでください。依存関係はおまかせです。15.10、16.04LTS、18.04LTSでも同じでした。閲覧数がなぜか多いので加筆修正しました。
当方はてきとーなので「気分はカジュアルオーディオ、なんとなくハイレゾ。ライブラリはFLAC。楽曲管理は、EACやそのケーススタディ wav,ape,tak,tta,flac,+cue FLACに決めました。」 みたいな「カジュアル」な考え方で音楽環境を構成しています。がちじゃないです。ゆるゆるです。
設定作業::ハマりどころはここです。ここからじっくりと詰めていきますよ。
メニュー(サウンドとビデオに配されていると思います。)からqjackctlをラウンチ、設定、[開始|終了]。メニューにもしなければ?!、/usr/bin/qjackctl にあると思います。生で起動してみましょう。設定画面のタブ4枚目、その他で自動起動設定にできますがしないほうがいいかもしれません。D-Busインターフェイスの有効化はオフにしておいたほうがいいかもです。D-Busがらみでエラーメッセージが確認できる場合、真っ先に疑ってください。ちなみに2018年からDbusなjackを導入することにしました。SMP対応のせいか?!比較してみると円滑なのです。気のせいかも。気のせいでしょう。
当方は自動起動にはしていません。普段使わないので。あはは。
はい。設定終わり。
状況確認とタブ1枚目「設定」
タブの1枚目「設定」がうまく行かない場合は、次のようにデバイスを確認してみてくださいサウンドデバイスの番号など状況確認は、次のコマンドで。当方の場合は、以下の黄色デバイスをデフォルト出力先にしていて、jackもこの出力先に設定しています。下の画面全体のキャプチャで確認できます。
aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: Generic [HD-Audio Generic], デバイス 3: HDMI 0 [HDMI 0]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 1: Generic_1 [HD-Audio Generic], デバイス 0: ALC892 Analog [ALC892 Analog]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 1: Generic_1 [HD-Audio Generic], デバイス 1: ALC892 Digital [ALC892 Digital]
サブデバイス: 0/1
サブデバイス #0: subdevice #0
aplay -L
Lが大文字です。長いので略。
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: Generic [HD-Audio Generic], デバイス 3: HDMI 0 [HDMI 0]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 1: Generic_1 [HD-Audio Generic], デバイス 0: ALC892 Analog [ALC892 Analog]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 1: Generic_1 [HD-Audio Generic], デバイス 1: ALC892 Digital [ALC892 Digital]
サブデバイス: 0/1
サブデバイス #0: subdevice #0
aplay -L
Lが大文字です。長いので略。
考え方としては、ふつーHDMIにJACKは使わない??ので、HDMIというデバイス行はスルーですね。いちおう自分のハードウェア構成は知ってないと少し悩むかもしれません。以下の画面キャプチャで黄色をどう指定しているのか見比べてみてください。それでわかると思います。当方の光デジタル先のアンプは96kまでのハイレゾしか対応していないので96K設定にしています。最近のAVアンプなどをお持ちの場合は192k対応は通常余裕だと思います。私もAVアンプは更新しましたので、余裕です。
mplayerに、jackを掴ませて再生している図です。 mpvでもサウンド出力先指定して、同じことができます。兄弟なので。定義ファイルで固定にもできます。デフォルトは、Pulse。 |
参考:: .jackdrc はこういう一行ファイルです。~/.jackdrc
/usr/bin/jackd -dalsa -dhw:Generic_1,1 -r96000 -p1024 -n3 -s -m -H -M -P -zs
今の環境はjackを使っていないのですが、これは2015年11月の実ファイルです。この時はオンボードの光出力S/PDIFでアンプに流していました。そして5年の月日が流れた。2020年7月23日段階では、AVアンプ更新、S/PDIF(同軸)とS/PDIF(角・光)で、アンプやデコーダーボード(ES9038Q2M)、新たに購入したUSB-DAC などを使っています。遅いAMDから速いAMD Ryzenに更新もしました。
JACKで使ってみた音楽プレイヤー、再生アプリ(JACK対応限定)
JACKでの音出しテストです。あえて「pulseaudio-module-jack 未導入ケース」の説明なので、PulseAudioにしか対応していないアプリケーションは、JACKを終了するまで音がでません。JACKを終了した途端に(忘れた頃)再生を始めます。ここ大事です。テストにでます。どのアプリでもJACK経由で再生できる pulseaudio-module-jack については時間があれば丁寧に。とおもったけれど書き換えた冒頭通りまたは、リンク先の手順通りにすればそのまま動きます。このモジュールをいれちゃうと表題の「JACK 3分クッキング」の縛りである180秒を超過してしまうので、別項-STEP2にします。結果的に、そこまで必要なのか?! という問題はありますね。2020年の今では、ほぼこの記事のメンテナンスのためだけに、jackをテストしている感じですね。だはは。冠履顛倒。
Ubuntu How to route all audio through Jack https://www.youtube.com/watch?v=UVhRDU6Kcds の設定と同じになります。ブラウザ(chrome)でもPulseAudio JACK Sinkルートで再生できるようになります。
JACKに素で対応しているアプリ
ざくっというと次のリストの通りです。自分が導入テストした範囲。けっこうWindows版もありますね。素というと少し嘘よ(アンジェ)ですが。ていうか、全部のLinux楽曲ソフトウェアはハイレゾかつJack対応といってもいいような気がします。そういうものか。jackdのsink に流せればいい、と。- Audacious
- Audacity(編集、解析用に使えます) 、
- DeadBeef(jackプラグインの別途導入が必要。アンドロイドアプリもありますね)
Clementine- smplayer(mpvフロントエンド)
- Gnome mplayer(mpv フロントエンド)
- mpv
- mplayer(またはmplayer2)
最初のjack音出しテストなら、Audaciousがわかりやすくていいかもしれません。
コマンド派ならmpv/mplayerです。次のように、音声出力を指定します。jackのところを、alsaやpulseに変えてテストできますので、他のシーンでも便利でしょう。定義ファイルに指定もできます。nano ~/.mpv/config 。
ao=jack を記入します。
DeadBeefの記事はまじめに書いたので、jackプラグインの活用の仕方としてご覧ください。
#確実に指定できるので、ターミナルでのテストはこのほうがいいかも。
$ mpv --ao=jack "音声ファイルはできれば重いハイレゾ.flac"
$ mpv --ao=jack "音声ファイルはできれば重いハイレゾ.flac"
DeadBeef……デザインモードで、カスタマイズできます。素で対応とはほんとはいえないがお気に入りなので紹介します。 以下にjackを含む DeadBeef 音楽プレイヤー 設定の仕方を完全フルカラーでまとめました。
(横道)妙な周波数ファイルがリストされているのは、ノイズがのっているので、どういうのり方なのか、聴いているからです。DeadBeefについていえばイコライザオンにすると高い周波数に別の信号がソフトウェア内部で発生しています。0にどんな数字をかけても0なのに?!というが私の解釈ですが、どうも期待どおりではないです。Audaciosでも発生しています。っていうか、ubuntu上のすべての導入済みアプリ、aplay、paplay でも発生しています。ちな、Windowsでは、WMPでも発生しています。SONY Xアプリだけが正確、ノイズがはいりません(ハードは同一でOSとアプリが違うということです)。正弦波「だけ」再生している限り、聴こえないはずの音がやっぱり聴こえてしまうのは、ubuntu/mintなので。鋭意調査中です。(無駄な気もしますが)。SONYすげー。ということにして続けます。ついでにいうと、EQなんかはぜんぶ無効にしたほうがいいと思います。雑音がはいる。
DeadBeefはJackと相性がよい作りになっています。jackを出力先指定しており、jackが起動していなければjackを自動起動して再生してくれます。Deadbeefを終了すればjackも終了します。当方はjack常時起動ではありませんので好ましい機能です。jackプラグインを別途ダウンロード、追加して設定します。設定さえ済ませておけばjackの存在を気にかける必要がなくなります。左上にdeadbeefとして検索してください。設定の仕方を記事にしました。
vlcの例
VLCメディアプレーヤはプラグインがあった気がしますので、それで使えるようになると思います。ちなみにvlcをコマンドラインで再生する場合は、cvlc にしてもいいよともいわれますので、そうしています。プラグインはあります。プラグインをいれて設定で出力選択するだけで使えるようになります。次のコマンドを発行してください。
sudo apt-get install vlc-plugin-jack
実際に導入してVLCで再生した場合は次のようになります。
出力モジュールの部分を[jackオーディオ出力]にします。
カジュアルに使いたい大半の方がめざしたい、PulseAudioとの共存
次のステップは音楽専用機する人は不要ですが、カジュアルオーディオ派の多くが目指したいと思うはずの、PulseAudioとの共存です。つまり、一旦設定しておけばその後ユーザーは何も考えずに高音質設定(jack)で音がでるようになる。そうするってことです。横着です。
どのアプリでもPulseaudioからJACKで再生できる pulseaudio-module-jack でjack経由で再生します。おわり。――いや、ほんとにそれだけなんです。導入はこの記事の冒頭通りです。再度コマンドだけ書きます。
sudo apt install qjackctl pulseaudio-module-jack vlc-plugin-jack
ひとつだけファイルを編集:: default.pa の書き換え
$ sudo apt install qjackctl pulseaudio-module-jack vlc-plugin-jack #JACK
$ sudo nano /etc/pulse/default.pa
45行目あたり。説明行込みで都合3行挿入
load-module module-jack-sink
load-module module-jack-source
2行挿入
#load-module module-alsa-sink この行付近の下に。
##### add this lines for pulseaudio-module-jack
load-module module-jack-sink
load-module module-jack-source
$ sudo nano /etc/pulse/default.pa
45行目あたり。説明行込みで都合3行挿入
load-module module-jack-sink
load-module module-jack-source
2行挿入
#load-module module-alsa-sink この行付近の下に。
##### add this lines for pulseaudio-module-jack
load-module module-jack-sink
load-module module-jack-source
Pulseaudio 停止と再起動
$ killall pulseaudio PulseAudio
※fedora manual から
利用可能なsink先の確認
jack_outが生まれていたらOK。
$ pactl list short sinks
0 jack_out module-jack-sink.c float32le 2ch 48000Hz RUNNING
1 alsa_output.pci-0000_07_00.1.hdmi-stereo module-alsa-card.c s32le 2ch 48000Hz SUSPENDED
2 alsa_output.pci-0000_09_00.4.iec958-stereo module-alsa-card.c s32le 2ch 48000Hz SUSPENDED
JACKが動いていて「RUNNING」、実際に音出しできている状態です。
トラブルシューティング::ジタバタしても仕方ない
図絵(トラブった絵予約)
図に示すように、jack sink が複数になってしまったりした場合は、再起動するか。次のコマンドを発行してみてください。
ほぼ確実に治るはずです。ジタバタせずに再起動が確実です。論理的には正しくても無理な場合は無理です。
$ pulseaudio -k && pulseaudio --start && sudo alsa force-reload
カジュアルオーディオですから
キャプチャの状態を説明します。どうなっているかというと、
JACKで音出ししています。
- WINEでゲーム音声を再生しています。
- 3つのアプリケーションで楽曲再生しています。
- firefoxでYoutube動画を再生しています。
WINEでは顕著な効果が感じられたが……
WINEに関していえば(10000Hzを超えるテストトーンがノイズだらけだったのですが)ノイズが確実に減りました。JACKの効果でしょう。軽いゲームのBGMなどでは問題ないレベルです(また、JACKと無関係にWINE1.8以降ではさらにサウンドは改善されていると思います。これは断言します)。私見ですが、そもそもWINEなのでどんなに頑張ったところで、遅延やノイズは聴こえがちです。いい線いっていることはたしかです。
VirtualBoxでも同様です。たまに勘違いされているWindowsしか使わないオーディオユーザーブログで、「慣れたWindowsアプリケーションでLinux上で鳴らしてみた」みたいな記事がありますが、JACKを導入、運用するようなユーザーならどうしようもないことがわかりますね。ディスってごめんなさい。音悪いでしょ?! 許容できるかどうかなので個人の嗜好の問題ですけどね。
自分は低遅延、リアルタイムカーネルと呼ばれるカーネルは使わなくなりました
音楽専用(+ピュアオーディオ志向)なら、これに加えて低遅延カーネルを導入したほうがいいですね。電気は多少食います。再生ピッチに違和感などを感じたら、低遅延カーネルの出番かもしれません。もっとも、ものごとには限度ってものがありますからね。それに今の時代、Linux でLLカーネルなくてもJACKでちゃんとできるってのが通説になりつつありますから。ArchLinuxWikiになるほどという記述があり自分は納得しています。
だからRealTimeカーネル/LLカーネルといわれるカーネルは使わなくなりました。
http://poor-user.blogspot.jp/2016/04/install-linux-lowlatency-on-ubuntu1604.html
⚠ここまで読んでいただけた方は設定の前に次も合わせて目を通しておくといいかもし
れません。2017年9月24日現在の当方の総括です。 2020年の今も特に意見に変わりはありません。
ついでに告白します。2020年夏はもっぱら"マルチプロセッサハードウェア向け"JACK2を現在使っています。arch系manjaro linux利用時。 ubuntu系では従来JACK(旧バージョン)のままです。
しつこくも後編に続きます。👉 https://poor-user.blogspot.com/2018/07/jack-34.html