※2022-07-24追記 pactlの場合の記述を追加
環境
- elementary OS 0.4.1 Loki (Ubuntu 16.04.3 LTS)
困ったこと
LinuxでUSB接続でRoland Quad Captureから音声を出力する際、デフォルトだと4チャンネルの出力かつリア(後ろ)2つのスピーカーから出力するサラウンド設定になっており、またフロントのスピーカーからは出力されない設定になっている。
この時Linux版Steamの一部ゲーム (Steam Playで開始したゲーム) で音声を出力しようとするとフロント側2チャンネルから音声を出力しようとするため音声が出力されない場合があった。(ゲームによってリア側スピーカーでも出力する場合もあった)
やったこと
サウンドカードの出力を4チャンネル→2チャンネルにダウンミックスしたらSteamからno soundな状態を解決出来るんじゃないかと推測し設定を変更したところ正常に音声が出力されるようになった。
設定方法
PulseAudioの設定を変更
出力用のオーディオデバイスを確認する
$ pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_09_00.1.hdmi-stereo-extra2>
name: <alsa_output.usb-Roland_QUAD-CAPTURE_00009AA969A6A699620D9B2B2B8A81D8-00.analog-surround-40>
name: <alsa_output.pci-0000_0b_00.3.analog-stereo>
※ pacmdが見つからない場合はpactlを使う
$ pactl list sinks | grep name:
上記で出力されたものの中からミックスダウンしたいデバイスのname
をコピーしておく
master
で先程取得したname
を指定しremapする (指定されたオーディオデバイスを元に新しい設定でコピーするイメージ)
# channels=2でチャンネルの数を2チャンネルに変更した別のoutputデバイスを作成
$ pacmd load-module module-remap-sink sink_name=quad-capture-stereo master=alsa_output.usb-Roland_QUAD-CAPTURE_00009AA969A6A699620D9B2B2B8A81D8-00.analog-surround-40 channels=2 channel_map=front-left,front-right
# Windowsで言うデフォルトのサウンドデバイスとして先程 sink_name で指定した出力先を指定
$ pacmd set-default-sink quad-capture-stereo
※pactlの場合
$ pactl load-module module-remap-sink sink_name=quad-capture-stereo2 master=alsa_output.usb-Roland_QUAD-CAPTURE_00009AA969A6A699620D9B2B2B8A81D8-00.analog-surround-40 channels=2 channel_map=front-left,front-right master_channel_map=rear-left,rear-right
$ pactl set-default-sink quad-capture-stereo
※mappingがうまくいかない場合 master_channel_map
でマッピング元のchannelを明示的に指定するとうまくいく場合がある
$ pactl load-module module-remap-sink sink_name=quad-capture-stereo2 master=alsa_output.usb-Roland_QUAD-CAPTURE_00009AA969A6A699620D9B2B2B8A81D8-00.analog-surround-40 channels=2 channel_map=front-left,front-right master_channel_map=rear-left,rear-right
pacmdはランタイムの一時的な設定の変更をするだけなので再起動したら元に戻る。
永続化するには /etc/pulse/default.pa
に先程の load-module
や set-default-sink
コマンドを書き込む
$ sudo vim /etc/pulse/default.pa
〜中略〜
load-module module-remap-sink sink_name=quad-capture-stereo master=alsa_output.usb-Roland_QUAD-CAPTURE_00009AA969A6A699620D9B2B2B8A81D8-00.analog-surround-40 channels=2 channel_map=front-left,front-right
set-default-sink quad-capture-stereo