6/22/2020

[note] linuxにてデフォルトの再生デバイスの変更

をしたので、久しぶりにメモ。

事の始まり、という程大層な話でもありませんが、作業用のPC(ubuntu)について、USB接続のヘッドセットを繋いで使う事が増えまして。その一方、ヘッドセット(のヘッドホン部分)は一般にあまり音質は良くないもので、音楽等の音質を気にするような場合には向いていないため、そのような場合には従来の通りマザーボードの方の音声出力に別のヘッドホンを繋いで使用していたのですね。

そうすると、当然ながら再生デバイスが複数併存する事になって、用途に応じた切り替えが都度必要になるわけです。しかるにubuntuだと、pulseaudioのコントロールパネルから選択する方法がデフォルトで用意されています。時々使う程度なら、その都度パネルを開いて選択、という方法でも良かったのですが、ここで問題が生じました。WEBブラウザで動画を再生する場合等には、一時停止も含め、音声出力が途切れる際にその設定がリセットされ、デフォルトに戻ってしまうのです。デフォルトでない方を使っていると、再開やシーク、別動画の再生等、頻繁に行う操作の度にパネルから選択しなおさないといけないわけですね。

流石にこれは面倒だ、というわけで、デフォルトのデバイスを切り替える事にしました。しかしpulseaudioのパネルにはそれを行う項目がありません。色々調べてみても、結局のところ設定ファイルを書き換える(もしくはコマンドを実行する)しかないようです。というわけで、その方法を以下にメモ。なお、OSはubuntu20.04LTSです。

まず、デバイスのIDを取得します。下記コマンド。

$ pacmd list-sinks |grep -e 'name:' -e 'index:'

すると例えば下記のようなデバイスのリストが表示されます。

   * index: 1
        name: <alsa_output .usb-c-media_electronics_inc._usb_pnp_sound_device-00.analog-stereo>
    index: 2
        name: <alsa_output .pci-0000_08_00.1.hdmi-stereo>
    index: 3
        name: <alsa_output .pci-0000_08_00.6.analog-stereo>

これは私のPCの場合の出力ですが、今回デフォルトに選択したいのはindex: 3のデバイスです。ちなみにindex: 1はヘッドセット、index: 2はモニタの音声出力ですね。合計3種ある、という事です。変更前はindex: 1のヘッドセットがデフォルトになっていました。初期状態だと、番号順の先頭がデフォルトに設定される、という事でしょうか?

ともあれ。デフォルトのデバイスを切り替えるコマンドは下記の通り。

$ set-default-sink 'alsa_output.pci-0000_08_00.6.analog-stereo'

・・・なのですが、これをターミナルから実行しても、既に開いているアプリには反映されません。(反映されるタイミングについては未調査につき省略)

仕方がないので、今の所私は、設定ファイルに書き込み、一旦ログオフして再ログインする手順を踏んでいます。面倒ですが、そんなに頻繁にデフォルトを切り替える必要があるわけでもないので、とりあえずはいいか、という事で。設定ファイルは下記。

<設定ファイル>
 /etc/pulse/default.pa

このファイルのどこか(最下部にそれ用らしいエリアがあるのでそこでよい)に、上記コマンドを書き込みます。

しかる後に、一旦ログオフして再ログイン。これでデフォルトのデバイスが切り替わり、煩わしい選択作業から開放された、というわけです。やれやれ。