ManjaroがPulseAudioからPipewireに移行, アップデートにも影響 (誤り, 追記あり)

2022-07-15

追記 (解決)

アップデートによってシステムワイドにpipewire-pulseが加えられたわけではなく、easyeffectsの依存パッケージにpipewire-pulseが加えられただけであった。 このため、easyeffectsを削除すれば問題なくアップデートできた。

そのため、本記事の内容は誤解であった。

要点

  • 2022年7月のアップデートでpulseaudiopipewire-pulseに置き換わり、PulseAudio環境が事実上利用不可に
  • manjaro-pulseパッケージは残っているものの、依存関係が壊れててインストールはできない
  • この影響でmanjaro-pulseを使っていた環境はアップデート不可に (依存の壊れたパッケージを消せばOK)
  • PipeWireになってるTelegramなどのアプリはPipeWire化必須

PulseAudioとPipeWire

PulseAudioはLinuxのオーディオシステム全体をカバーする強力なソフトウェア。 一方、PipeWireは事実上単なるサウンドライブラリ。

PipeWireはPulseAudioに取って代わると息巻いているが、実際はPulseAudio互換ライブラリを用意することで大部分をPulseAudioの資産に頼ってる。

PulseAudioにPipeWire互換APIはないので、PipeWire化してPulseAudio互換ライブラリで今までの運用を維持するのが現実的。 ただ、結構不具合(うまく動作しない)はある。

できればPipeWireへの移行は避けたい気がするが、クライアントプログラム側は結構PipeWireに移行しているため、ちょっと難しい選択。 理由ははシンプルで、ライブラリがPulseAudioよりずっと使いやすいため。

ただし、ffmpegは割とPipeWireに消極的。

PipeWireはその思想や指向など、全体的にWaylandによく似ている。 エッセンシャルな部分ではよくできているが、それ以外の多くのものを切り捨てており、使いこなしているパワーユーザーの使い勝手に大きな悪い影響を与える。

従来のManjaroのサウンドシステム

manjaro-pulsemanjaro-pipewireがあり、メタパッケージになっている。 manjaro-pulseがデフォルトであった。

システムとしてはpipewire本体は入るのだが、これを鳴らす方法がないため、PipeWireで再生するプログラムは音を鳴らすことができない。

pipewire-pulseパッケージがPipeWire側のPulseAudio互換レイヤー。

manjaro-pulseはこのパッケージを使うようになったが、pulseaudio-rtppulseaudio-lircなどがpulseaudioに依存しているため、アップデートに失敗する。

PipeWireアプリケーション

Telegramは少し前のアップデートからPulseAudio環境で音が鳴らなくなっている。 pipewireライブラリが入っているためか、それとも単純にPipeWireのみをサポートするようになったためかは分からない。

また、他のいくつかのPipeWireに依存しているアプリケーション(数は多くはない)もまた、音を鳴らす方法がない。

これらの問題はmanjaro-pipewire環境に移行することで解消される。

アップデートについて

選択肢はいくつかある

  • アップデートを妨げるパッケージを消す
  • 事前にmanjaro-pipewire環境に移行してからアップデートする
  • いずれfixされるだろうという考えのもと、待つ

ManjaroのPipeWire環境について

  • セッションマネージャーはPipeWire Media SessionよりもWirePlumberのほうが現在は推奨されてる
  • Pulseで鳴らされるなら変わらずpavucontrolを使って制御可能。PipeWireで鳴らされるものは(当然ながら)別にセッションマネージャーが必要
  • 「音がうまく拾えない」「ミュートが正しく機能しない」といった不具合が多い
  • Sink/Sourceの認識がおかしくなることがある。偶発的ではなく、おかしくなるデバイスは常におかしい
  • デバイスによってはマイクのボリュームコントロールがおかしい。また、起動するたびにボリュームがリセットされる場合がある
  • mpvの再生音が他の操作に割り込まれて切れ切れになりやすい。ただ、最近はPulseAudioでも同様の問題が発生するようになった
  • レイテンシや音質で気になるところは特にない
  • AURのpulseeffects-legacy-gitから、communityのeasyeffectsに移行することになる。使い勝手は少し良くなる
  • いくつかの(Telegramを含む)PipeWireクライアントアプリケーションが動作するようになる
  • mpvでPipeWireを使うには、OpenALなどを使うようにし、OpenALがPipeWireを使うようにする、といった方法が必要。ただ、ALSAやPulseとして普通に鳴らすことはできる
  • ただ、Manjaroの公式パッケージのmpvはOpenALもSDLも使えないため、no way.
  • pacmdpulseaudioパッケージ、pactllibpulseパッケージ所属なので、manjaro-pipewireに移行するとpacmdが使えない
  • manjaro-pulse環境下ではZshにおいてpactlload-moduleのあとの第二引数にモジュール名に対する補完が効くが、manjaro-pipewireはサブコマンドしか補完されない。補完の問題はここだけの模様

ひとこと

一部のPipeWire派に踏み荒らされてる感じがして、私は嫌。

メリットを感じてるならまだいいけど、現状ではデメリットしか感じられないので。

最近のFreedesktopはいらんことしかしないなという気持ちでいる。 最近のFreedesktopの人たちはやたらとWindowsやMacを模倣したがる印象で、Unixらしさや、美点を理解していないような感じがする。

PipeWireのシンプルな設計は悪くないけれども、PulseAudioがどれだけの問題を解決したかということを考えると、歴史的経緯や過去のあれこれを知らない人の机上の空論のようだ。 PipeWireがPulseAudio並の資産を持って取って代わろうというのであれば、理解しなくはない。 ライブラリレベルの問題は、それこそOpenALとかがあるので、PipeWireが素晴らしいと称賛する気にもなれない。

また、PipeWireはJackを置き換えるのも現状、現実的ではない。 音楽制作者の基本的な考え方を理解していないように見える。

もちろん、PipeWireの態度にリスペクトがなく、傲慢であるという問題もあるが、実用上デメリットがあるということに比べれば些事である。