2022-06-11

PipeWire 再び(今度は大成功)

PipeWire 0.3.52 がリリースされたという記事を見て、再び Linux Mint に PipeWire をインストールしてみようという気持ちになりました。

いきなり PipeWire と決めたわけではなく、実は lowlatency カーネルにするか JACK にするかをまず検討し、未経験の JACK にしてみようと思ったのですが、いろいろ準備が面倒だったので、インストール経験のある PipeWire に落ち着いたという流れです。(なぜ?)

さて、Linux Mint に PulseAudio の代わりとして PipeWire をインストールするのは非常に簡単です。過去のこちらの記事を参照してください。

(過去記事)PipeWire からの daemon.conf

PipeWire のインストールが完了したら、以下のコマンドで「サーバー名」の部分に「on PipeWire」と表示されることを確認しましょう。
(0.3.52 がリリースされたというのに、PPA から降ってきたのは 0.3.51 でした)

$ pactl info
サーバー文字列: /run/user/1000/pulse/native
ライブラリプロトコルバージョン: 33
サーバープロトコルバージョン: 35
Is ローカル: はい
クライアントインデックス: 300
タイルサイズ: 65472
ユーザー名: 
ホスト名: 
サーバー名: PulseAudio (on PipeWire 0.3.51)
サーバーバージョン: 15.0.0
デフォルトサンプル仕様: float32le 2ch 44100Hz
デフォルトチャンネルマップ: front-left,front-right
デフォルトシンク: alsa_output.usb-0c76_USB_PnP_Audio_Device-00.analog-stereo
デフォルトソース: alsa_input.usb-0c76_USB_PnP_Audio_Device-00.mono-fallback
クッキー: 80f1:8f9b

以前にインストールした時よりも PipeWire のバージョンが上がっているので、「Timer with notifications」という Linux Mint のアプレットでポップノイズが出てしまう件が治っているのか確認してみたところ、残念ながら治っていませんでした。

このアプレット、指定時間経過後に音と表示でお知らせしてくれる大変便利なものなのですが、PipeWire だとポップノイズが出てしまうのでまた PulseAudio に戻そうかと真剣に悩むほど大事なアプレットなのです。
(「艦これ」の休憩時間とかをこれで計っています!!!)

そう言えば「このアプレットをインストールする時に SoX というツールも同時にインストールされたな」というのを思い出し、PipeWire と SoX とで何か不具合があるのではないかと調べ始めたのです。

が、なかなかめぼしい情報は見つかりませんでした。ふと、Synaptic で SoX の前提ソフトウェアを調べてみようと思い「SoX」というキーワードで Synaptic で検索をかけたところ、何やら怪しいパッケージ名を発見しました。それは「libsox-fmt-alsa」というものです。

ALSA はサウンドカードへのアクセスを制御してくれる基盤で、一度にひとつのアプリケーションしか ALSA を触れないのです。その上に乗っかって複数のアプリケーションから ALSA へアクセスできるように制御しているのが PulseAudio なのです。

という前提知識があったので、ワタシが使っているこの Linux Mint には ALSA モードで動く SoX しかインストールされていないのだな、と疑ったわけです。同じ並びに「libsox-fmt-pulse」というパッケージが存在していたので、確信を持ちました。
※画像ではインストール済みですが、発見時は libsox-fmt-pulse は未インストールでした

本当は libsox-fmt-pulse だけを追加インストールしても良かったんでしょうが、面倒だったので libsox-fmt-all というパッケージをインストールしてしまいました。

これでアプレットが音を鳴らしてもポップノイズが発生しなくなりました!!しかも、PC の再起動か Cinnamon の再起動が必要かと思ったのですが、どちらも不要でした。

なんで apt install sox を実行しても libsox-fmt-all がインストールされないのかは謎ですが、これで PipeWire でも Spotify、Firefox、アプレットまで問題なく音が鳴るようになりました。しばらくこれで使ってみようと思います。