2015年11月3日火曜日

Jack インストールと設定・3分クッキング

jackの導入・3分クッキング(17.10beta1追記)

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

sudo apt-get install qjackctl

sudo apt install qjackctl
のいずれかを。

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

sudo apt install qjackctl pulseaudio-module-jack 

依存関係含めて必要一式が導入されます。それでインストール/導入は終わりです。17.10でも確認してみました。Synapticなどでも同様です。qjackctlで検索して選んでください。依存関係はおまかせです。15.10でも同じでした。閲覧数がなぜか多いので加筆修正しました。
当方はてきとーなので「気分はカジュアルオーディオ、なんとなくハイレゾ。ライブラリはFLAC。楽曲管理は、EACやそのケーススタディ wav,ape,tak,tta,flac,+cue FLACに決めました。」 みたいな「カジュアル」な考え方で音楽環境を構成しています。がちじゃないです。

設定作業

メニュー(サウンドとビデオに配されていると思います。)からqjackctlをラウンチ、設定、[開始|終了]。メニューにもしなければ?!、/usr/bin/qjackctl にあると思います。生で起動してみましょう。


設定画面のタブ4枚目、その他で自動起動設定にできますがしないほうがいいかもしれません。D-Busインターフェイスの有効化はオフにしておいたほうがいいかもです。D-Busがらみでエラーメッセージが確認できる場合、真っ先に疑ってください。


当方は自動起動にはしていません。普段使わないので。あはは。
はい。設定終わり。

状況確認とタブ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とはある意味無関係の蛇足)

MATEはプロファイルでアナログとデジタルを選択する。この機体はReltek 892を使っており、光デジタルケーブルでアンプに流しています。だから、アナログは選択しません。適切な出力先(IEC958)を選ぶというだけの話です。あくまでデフォルトシンクで、JACKの出力先とは違います。同じでも構わないです。絵が古いだけで、どのディストリ、フレイヴァーでもやることは同じです。


Cinnamon Mint18のサウンド設定画面


横道ですが、こうして選ぶのもめんどうですか。つながっている全出力、同時鳴動というのもできますよ。たとえば、アナログ、デジタル、A2DP、同時に音出しができました。あほらしいので元に戻しました。何も考えなくていいという意味はではいい方法かも。いや、ばかげていますよね。


ここまで3分クッキングでした。

 

割り込み1::ubuntu 17.10beta/Artful Aardvark

で試してみた

特にどうというわけではないのですが、17.10はUSB-DACで設定してみました。まだ不安定な環境ですね。導入は出来ても動作しないアプリケーションがあったりとかですが。あんまり使ってないのですが、Audaciousの動作がなんか変わっているよう。
Audacious with jackは:: jackd を起動しておいて、
  1. jack出力 を選択して、
  2. 浮動小数点に設定する。



17.10 .jackdrc はこれですね。このオーテクのDACを推薦するわけではないのでご注意を。気にいってはいますが、パーフェクトじゃないので。
/usr/bin/jackd -dalsa -dhw:HA90USB,0 -r192000 -p4096 -n8

割り込み2 ::jackが必ずしも良い結果を生むとは限らない。非jackな割り込みです。


今、通常環境では、次の絵のように「alsaで排他的っぽくデバイスを掴んで再生する」ようにしています。audacious,deadbeef共にです。

自分の試行錯誤した知見?!からいえば、セレロン並の低速環境なら、
  • 低遅延カーネル
  • directにハードウェア指定
で十分かと思います。特に後者は効きます。排他的(っぽく)にサウンドデバイスが使われるのでメリットは大きいです。※絵の出力デバイスに注目。
  • パフォーマンスを最大クロック固定、
  • 再生アプリの優先度最大

もたいした効果はなかったです。無意味。
ちなみに同様の設定をmpvにも施してみました。長いので別稿(排他的にサウンドデバイスを使う::カンタンな設定の準備/WindowsでいうところのWASAPIみたいなDAC利用方法/ALSA・排他的っぽいです)。

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……デザインモードで、カスタマイズできます。素で対応とはほんとはいえないがお気に入りなので紹介します。 以下に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オーディオ出力]にします。


gnome mplayerの例



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日現在の当方の総括です。

排他的にサウンドデバイスを使う::カンタンな設定の準備/WindowsでいうところのWASAPIみたいなDAC利用方法/ALSA・排他的


蛇足中の蛇足::自分用メモ::ubuntuStudio の所要パッケージなら。落として、sudo dpkg -i *.deb
#!/bin/sh
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/o/osspd/osspd-pulseaudio_1.3.2-7_amd64.deb
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/o/osspd/osspd_1.3.2-7_amd64.deb
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/u/ubuntustudio-meta/ubuntustudio-audio-core_0.154_amd64.deb
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/u/ubuntustudio-meta/ubuntustudio-audio-plugins_0.154_amd64.deb
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/u/ubuntustudio-meta/ubuntustudio-audio_0.154_amd64.deb
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/u/ubuntustudio-controls/ubuntustudio-controls_1.3_all.deb


据え置き利用者ゆえの水を注すような独り言。単なる愚痴


USB-DAC。USB-DACが優秀なわけでないのです。大事なのはDACです。S/PDIF(光端子・光デジタル)がついているマザーボードをもっている場合、あらたにDACを調達するのなら、S/PDIF(光端子)入力付きDACを使うほうがハッピーです。YAMAHAのプリメインアンプ(たとえばA-S301::最近安い。9kg)みたいなのでもいいでしょう。結局メーカーもUSBしか端子がないノートPCやMACに対応するためにそうなってしまっただけですね。今後はUSB Audio Class2.0 機器がWindows10の対応を機会に熟成していけばいいわけですけれど、はっきりいってLinuxなどOS問わず、

不具合はUSBゆえに。USBに起因します。(当社調べ)

S/PDIFで接続できれば、ほとんどの問題が解決すると思います。不要なひとはUSB-DACを捨てようです。笑) 持ち歩くのが好きなひとは止めることはできませんし、個人の価値観の問題なのでアレですが、USB-DACはじゃまくさい(ちいさくてかわいいけれど)。電池食うし。

たとえば、コンポでUSB-DAC搭載とかってあるじゃないですか。あれだって、S/PDIF出力をPANASONIC PMXに搭載してくれていたら、うちではS/PDIF経由onLinuxで使うので、driverなどを心配する必要もありません。確実に安定して動くので即買っただろうにと思います。メーカーに電話したらチップの名前教えてくれなかった。笑) それはいいです。


S/PDIF搭載マザーボードは数千円ぐらい割高であったりしますが、その分他のチップも上位品が使われていたりしますので、損ではないと思います。Linuxの人にとっては、(優れているから使われているわけではない)USB-DACを使わずに済むのは最大のメリットです。
ノートPCの場合は選択の余地がありませんけれど。

カジュアルな人はAVレシーバー/AVアンプでしょうから、S/PDIFで接続すると楽ちんだし、USB-DACは逝ってよしなのです。(個人の感想です) 私が買うのはテストしたい(無駄づかいしてみたかった)からですが::笑。
持ち歩き用途ゼロです。じゃまくさい。ちなみに手持ちのXPERIAシリーズはZ4からミニジャックからハイレゾ出力ができるようになっています。湯たんぽを買ってしまった気もしないではありませんが富士通の例のスマホよりはましかと。電車の騒音の中で使うわけで、どうでもいいかな、と。

自分的には、おそらく今後USB-DACは買いません。DAC機能が充実したプリメインアンプは買うでしょうけれど。USB-DACは音響機器というよりパソコン機器かなとも当方は思います。自称メーカーのdriverの出来(ODM)に左右されるのはしんどいです。

2015年11月2日月曜日

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

定義ファイルの編集(サンプルレート、ビット深度は2行書き換えるだけ)


新規にターミナル(端末)を開きます。
ubuntu系は以下を同時押し。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にどんなサウンドチップが搭載されているかは覚えてないです。音楽聴かないし。笑)