Jack インストールと設定・3分クッキング(改訂4版)前篇

jackの導入・3分クッキング

(17.10beta1追記+18.04LTS alpha2/beta)+ manjaro + antergos + ubuntu 18.04LTS )

 クッキングの流れは3ステップ:

  1. jackキットを一式導入する
  2. jackを設定する(ここがミソ)
  3. アプリケーションを設定する
    ※追加::2の前に、ユーザー所属グループにaudio があるか確認してみましょう。なければ設定します。 DEに応じたGUIで設定してください。だいたい設定の「アカウント」で変更できます。ターミナルでも良いです。
$ id | grep audio
92(audio) <<すでに設定済み。なければ追加。
 
$ sudo gpasswd -a ログイン名 audio

debian/ubuntu/mintは自動設定の気がします。
 余談(manjaro とantegosでは部分的に違いますが、導入後は当然同じなわけで、何れも問題なく動いています。というより、ubuntu/mint ではどうやってもハイレゾが微妙なDACがあるんですが、manjaro とantergos ではパーフェクトじゃないかと。このふたつのarch系に関しては最終的にはdbusを使うようにしました)余談終了。

追記、jack処理落ちの際にチェックしておくべきことを記事にしました。オススメではありますが、結局のところだめなものはだめなので、特定USB-DACでははまらないようにしましょう。通常pulseでヘロヘロなものを改善したところで仕方ないってのが当方の結論。

インストール

さて、といっても、ubuntu/mintだと、いまや簡単です。CTRL+ALT+T でターミナルを開いて、下の一行を貼り付けてエンター。

sudo apt-get install qjackctl

sudo apt install qjackctl
のいずれかを。

めんどくさい人は、この段階で、以下も最初からいれておいてもいいです。パルスオーディオとの共存を考慮したい人向けです。普通に使いたい人は、むしろ次を発行でいいのではないかと。
 

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が大文字です。長いので略。

考え方としては、ふつーHDMIにJACKは使わない??ので、HDMIというデバイス行はスルーですね。いちおう自分のハードウェア構成は知ってないと少し悩むかもしれません。以下の画面キャプチャで黄色をどう指定しているのか見比べてみてください。それでわかると思います。当方の光デジタル先のアンプは96kまでのハイレゾしか対応していないので96K設定にしています。最近のAVアンプなどをお持ちの場合は192k対応は通常余裕だと思います。

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でアンプに流していました。

JACKで使ってみた再生アプリ(JACK対応限定)

JACKでの音出しテストです。あえて「pulseaudio-module-jack 未導入ケース」の説明なので、PulseAudioにしか対応していないアプリケーションは、JACKを終了するまで音がでません。JACKを終了した途端に(忘れた頃)再生を始めます。

どのアプリでもJACK経由で再生できる pulseaudio-module-jack については時間があれば丁寧に。とおもったけれど書き換えた冒頭通りまたは、リンク先の手順通りにすればそのまま動きます。このモジュールをいれちゃうと表題の「JACK 3分クッキング」の縛りである180秒を超過してしまうので、別項-STEP2にします。結果的に、
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(フロントエンド)
  • Gnome mplayer(フロントエンド)
  • mpv
  • mplayer(またはmplayer2)
など。それぞれ、コマンドラインでパラメーター引き渡しが必要だったり、定義ファイル指定が必要だったり、 JACKを出力先に設定してあげる必要などがありますが、最初の音出しテストなら、Audaciousがわかりやすくていいかもしれません。

コマンド派ならmpv/mplayerです。次のように、音声出力を指定します。jackのところを、alsaやpulseに変えてテストできますので、他のシーンでも便利でしょう。定義ファイルに指定もできます。nano ~/.mpv/config 。

#確実に指定できるので、ターミナルでのテストはこのほうがいいかも。
$ 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をコマンドラインで再生する場合は、cvlc にしてもいいよともいわれますので、そうしています。プラグインはあります。プラグインをいれて設定で出力選択するだけで使えるようになります。
次のコマンドを発行してください。

sudo apt-get install vlc-plugin-jack

実際に導入してVLCで再生した場合は次のようになります。

vlcの例 

出力モジュールの部分を[jackオーディオ出力]にします。


JACKとPulseAudio共存:カジュアルオーディオですから

次のステップは音楽専用機する人は不要ですが、カジュアルオーディオ派の多くが目指したいと思うはずの、PulseAudioとの共存です。つまり、一旦設定しておけばその後ユーザーは何も考えずに高音質設定(jack)で音がでるようになる。そうするってことです。横着です。
どのアプリでもPulseaudioからJACKで再生できる pulseaudio-module-jack でjack経由で再生します。おわり。――いや、ほんとにそれだけなんです。導入はこの記事の冒頭通りです。
以下のキャプチャを説明します。どうなっているかというと、
JACKで音出ししています。
  • WINEでゲーム音声を再生しています。
  • 3つのアプリケーションで楽曲再生しています。
  • firefoxでYoutube動画を再生しています。
同時です。うるさいです。

WINEに関していえば(10000Hzを超えるテストトーンがノイズだらけだったのですが)ノイズが確実に減りました。JACKの効果でしょう。軽いゲームのBGMなどでは問題ないレベルです(また、JACKと無関係にWINE1.8以降ではさらにサウンドは改善されていると思います。これは断言します)。



音楽専用(+ピュアオーディオ志向)なら、これに加えて低遅延カーネルを導入したほうがいいですね。電気は多少食います。再生ピッチに違和感などを感じたら、低遅延カーネルの出番かもしれません。もっとも、ものごとには限度ってものがありますからね。

http://poor-user.blogspot.jp/2016/04/install-linux-lowlatency-on-ubuntu1604.html

ここまで読んでいただけた方は設定の前に次も合わせて目を通しておくといいかもし
れません。2017年9月24日現在の当方の総括です。

しつこくも後編に続きます。👉 https://poor-user.blogspot.com/2018/07/jack-34.html

Linux Hi-Res Audio USB-DACなどの設定

ハイレゾ対応にするための定義ファイルの編集(サンプルレート、ビット深度は2行書き換えるだけ) Pulse Audio でのお話です。


ターミナル(端末)を開きます。CTRL+ALT+T

sudo gedit /etc/pulse/daemon.conf

;; default-sample-format = s16le
;; default-sample-rate = 44100

default-sample-format = s32le
default-sample-rate = 192000

2行書き換えて、

pulseaudio -k ; pactl list short sinks
としてください。リブートでもいいです。これで基本的に完了です。最近のデバイスであれば、192k/24bitぐらいはデフォルトなのでほとんどこの通りでだいじょうぶかと思います。マルチブートであればWindowsの設定で実際に音が鳴るかどうかを試験して設定できますので、その上限に合わせるとよいです。かなり古いサウンドチップなどの場合は、48K(DVDのサンプリングレート)が上限だったりします。
もちろん環境に応じて書き換えてください。

以下は何か困ったら参考にしてみてください。

試しに、以下の3つのコマンドを順次実行して結果をみるといいかもしれません。
(追記:確実に設定するにはやはり必要。)

pactl list short sink-inputs
34    7    21    protocol-native.c    s32le 2ch 192000Hz

pactl list short sinks

0    alsa_output.pci-0000_00_01.1.hdmi-stereo    module-alsa-card.c    s16le 2ch 48000Hz    SUSPENDED
2    bluez_sink._SONY_    module-bluetooth-device.c    s16le 2ch 48000Hz    SUSPENDED
7    alsa_output.pci-0000_00_14.2.iec958-stereo    module-alsa-card.c    s32le 2ch 96000Hz    RUNNING


pacmd list-sinks | grep sample
    sample spec: s16le 2ch 48000Hz
    sample spec: s16le 2ch 48000Hz
    sample spec: s32le 2ch 96000Hz

※このS/PDIF接続先のアンプがスペックで96k上限。

(おまけ)BluetoothとS/PDIFケーブルを抜いて、USB-DACに接続した場合の出力例。
pactl list short sinks       
0    alsa_output.pci-0000_00_01.1.hdmi-stereo    module-alsa-card.c    s16le 2ch 48000Hz    RUNNING
8    alsa_output.pci-0000_00_14.2.analog-stereo    module-alsa-card.c    s32le 2ch 96000Hz    SUSPENDED
9    alsa_output.usb-Burr-Brown_Japan_Burr-Brown_Japan_PCM2702-00-PCM2702.analog-stereo    module-alsa-card.c    s16le 2ch 48000Hz    SUSPENDED


9は、2002年の製品です。
 

謎というか、調べないとわからないことが多いですね。音を正しく出すというのはLinuxでも手間いらずで5分で終わるのですが、どうなっているのか?確認したり、マウス操作したくないので自動的にsinkをシェルで切り替える設定にするにはどうしたらいいの?とか思うとタコユーザーには時間かかります。

音源ソースフォーマット別の結果

それぞれのフォーマットをAudacity ,deadbeef 再生中に実行,確認。
(PulseAudio出力)
» pactl list short sink-inputs

233    1    288    protocol-native.c    s16le 2ch 44100Hz        1)
439    6    902    protocol-native.c    float32le 2ch 44100Hz   1-2)
235    1    292    protocol-native.c    float32le 2ch 96000Hz   2)
236    1    294    protocol-native.c    float32le 2ch 192000Hz 3) 
1) CDと同じ。44.1k/16bit

1-2) 320k MP3(audacity)
2) 96k/24bit
3) 192k/24bit

384k/24bitフォーマットも作っって再生してみた場合、3)と同じです。

おまけ
pactl list short sink-inputs
2    5    21    protocol-native.c    s24le 2ch 192000Hz deadbeef

●384k with audacity
50    5    125    protocol-native.c    float32le 2ch 192000Hz audacity
(5    alsa_output.pci-0000_00_14.2.analog-stereo    module-alsa-card.c    s32le 2ch 192000Hz    RUNNING
)


当方でdeadbeefは、PulseAudio出力で384kフォーマット再生は落ちます。ALSAだと落ちません。

勘違いでなければ、Realtek 892の同社のスペックシート通り、最大192k/24bit、このHD Audioの上限に設定されています(Windows7起動でも同じ)。内部の電源ノイズを拾わないのであれば、私のチープな環境では、これが最高のハイレゾ再生可能環境です。

  • アンプへのS/PDIF出力は古いアンプの仕様で律速されるので、96k/24bitが上限
  • USB-DACのUSB接続は、44.1/24bitが上限。古い製品。
  • HD Audioでマザーボード上のデジアナ変換は、192k/24bitが上限。

一般に、嫌われるオンボードサウンドデバイスですが、ノイズがのらなければ、これでハイレゾスペックは満たしますので、そこにヘッドフォンを繋いで聴くことにします。 USB-DACの交換も当面しないことにしました。


前面ミニジャックではノイズを拾いますのでリアジャック接続です。シールドすればいいのかもしれません。

ここまでの前段階で、ノイズが自分で気づかないレベルの電源に置換しています。だからノートPCの場合ににわかに適用できるかわかりませんし、S/PDIF端子とか同軸デジタル端子とかノートPCにはついていません。テストしようがありません。ThinkPadにはついていないです。 そういうモノなのでしょう。光音声出力が搭載されているマザーボードもすべてではないから、S/PDIFも試すことができるケースも限定的だとは思います。そもそも、ノートPCにどんなサウンドチップが搭載されているかは覚えてないです。音楽聴かないし。笑)