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、アプレットまで問題なく音が鳴るようになりました。しばらくこれで使ってみようと思います。