PulseAudioでライン入力を使う

PCの熱が辛い

最近暖かくなってきました．NotePCにあまり仕事をさせていなくてもCPU温度は65~75度くらい．

$ acpi -ti
Thermal 0: ok, 71.0 degrees C
Thermal 0: trip point 0 switches to mode critical at temperature 99.0 degrees C

Flash動画をブラウザ経由で再生すると初めのうちはそうでもないけどすぐに130%くらいCPUを使ってPCの動作重く&CPU熱くなります（特にニコ生TS）．そして最近は100度を超えてシャットダウンしてしまうように．

再生初め

$ top -bn1 | grep -A 3 PID
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21114 mk 20 0 1114852 214732 103616 S 43.8 1.3 0:13.54 plugin-containe
22343 mk 9 -11 588044 12992 9416 S 12.5 0.1 1:30.03 pulseaudio
3816 mk 20 0 561012 172172 147924 S 6.2 1.1 1:51.02 Xorg

暫く経ったら

$ top -bn1 | grep -A 3 PID
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21114 mk 20 0 1168452 241256 125892 S 147.1 1.5 2:12.09 plugin-containe
25291 mk 20 0 43820 3936 3176 R 17.6 0.0 0:00.03 top
3816 mk 20 0 574540 171532 146696 S 11.8 1.1 2:08.95 Xorg

※plugin-containeがpepperflashのプロセス．

pepperflashをAdobe Flash Playerに変更するとましになったような気もしましたがよくクラッシュする&スクリーンセーバ自動抑制機能などもないようなのでちょっと使いづらいです．

$ sudo update-alternatives --config flash-mozilla.so
alternative flash-mozilla.so (/usr/lib/mozilla/plugins/flash-mozilla.so を提供) には 2 個の選択肢があります。

選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/lib/browser-plugin-freshplayer-pepperflash/libfreshwrapper-flashplayer.so 70 自動モード
1 /usr/lib/browser-plugin-freshplayer-pepperflash/libfreshwrapper-flashplayer.so 70 手動モード
2 /usr/lib/flashplugin-nonfree/libflashplayer.so 50 手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:

スマホやChromeCastで動画再生を試みる&PC経由でBluetoothヘッドセットで音声を聞きたい

スマホやChromeCastで再生して外部ディスプレイに映すようにしたらどうだろうと試してみるとニコニコ動画/生放送は画質が悪くなってしまうけど他のサービスでは良さそうです．しかし音声をBluetoothヘッドセットで聞きたいです．それもPCと一緒に．
ということで，以下のような接続を試してみました．PC(Debian)でのBluetoothはblueman-appletを，音声デバイスの切り替えなどはpavucontrolを，Bluetooth音声のプロファイルはA2DPを利用しています．

○ Android → Bluetooth → PC(Debian) → Bluetooth HeadSet

○ iOS → Bluetooth → PC(Debian) → Bluetooth HeadSet

✘ Android → 3.5mmライン → PC(Debian) → Bluetooth HeadSet

✘ iOS → 3.5mmライン → PC(Debian) → Bluetooth HeadSet

✘ ChromeCast → HDMI → HDMIモニタ → 3.5mmライン → PC(Debian) → Bluetooth HeadSet

Bluetooth ではうまく行くのですが，3.5mmライン入力がうまく行きません．ChromeCastはBluetoothが使えないのでちょっと困ります．
ライン入力の波形は出ているしレコーダアプリでラインからの音の録音は出来るのでPCに音は流れてきているようです．

以下のFAQページによると`module-loopback`モジュールを読み込むと良いようです．

“FAQ” https://www.freedesktop.org/wiki/Software/PulseAudio/FAQ/#index39h3

以下のようにすると反映されてライン入力からの音が出るようになりました．

$ pactl load-module module-loopback

ログアウトすると設定は消えるので以下の辺りの設定ファイルに書いておくと良さそうです．

$ man default.pa|grep -A5 'SYNOPSIS'
SYNOPSIS
~/.config/pulse/default.pa

/etc/pulse/default.pa

/etc/pulse/system.pa

/etc/pulse/default.pa を ~/.config/pulse/default.pa にコピーして編集してPulseAudioを再起動して反映出来ました．

$ mkdir -p ~/.config/pulse
$ cp /etc/pulse/default.pa ~/.config/pulse/default.pa
$ vi ~/.config/pulse/default.pa
$ diff /etc/pulse/default.pa ~/.config/pulse/default.pa
167a168,170
>
> # 3.5mm Juck In
> load-module module-loopback
$ /usr/bin/pulseaudio -k
$ /usr/bin/pulseaudio --start --log-target=syslog

再起動しても問題無さそうです．
とりあえずこの状態でライン入力からの音声とPCの音声が同時にBluetoothヘッドセットで聞ける状態になりました．

しかし問題点がひとつ．ライン入力とBluetooth(A2DP)入力を同時に行おうとするとライン入力の音が聞こえなくなってしまいます．これは要調査ですね……．

＜追記＞

~/.config/pulse/default.pa の以下をコメントアウトで行けてるよう．これ出力側だけかと思ってたんですが入力も効くんですかね．

> #load-module module-switch-on-connect

てことでライン入力とBluetooth入力とPCの音声が全部同時に出力できるようになりました :)

＜／追記＞

環境

PC : ThinkPad X220

PC OS : Debian stretch amd64

PC Bluetooth Adapter : Bluetooth ドーター・カード(BDC-3.0)60Y3271/60Y3275 → Broadcom BCM20702A1

Android : LGL22

iOS : iPad 3rd

Bluetooth HeadSet : JABRA CLIPPER Black + ダイソーカナル型ヘッドホン

有線ヘッドホン : ダイソーカナル型ヘッドホン