PulseAudio で、ふたつの 3.5mm ミニジャックから front speaker 信号が同時に出力されるようにしたい。フロントスピーカーに加えて、サブウーファーからも音を出したいからだ。
使用中のマザーボード MSI MPG X570 GAMING PLUS についているオンボードサウンドカードは、出力が Lineout (Front Speaker), Rear Speaker と Center Speaker、入力が Mic. In と Linein しかなく、サブウーファーに使用したい LFE ポートがついていない。Windows を使っている分には、 Realtek のマネージャによって比較的かんたんに remap ができるが、Linux を使うときは頑張って pulseaudio のモジュールを使わなければならなかったので、記録しておく。
概要としては、module-remap-sink
というそのままのモジュールがあるので、これが Rear Speaker (Center でもよい) 端子 に Front Speaker 信号を route させる。
コマンド
pacmd load-module module-remap-sink sink_name=woofers sink_properties="device.description='Woofers'" remix=no master=alsa_output.pci-0000_2f_00.4.analog-surround-51 channels=2 master_channel_map=rear-left,rear-right channel_map=front-left,front-right
sink_name
, sink_properties
は (おそらく) なんでもいい。remix
はマニュアルを見ればわかる。僕はわからなかったが
but probably you want to set this to “no”.
と書いてあったので no にした。
master
はリマップするポートがある sink の名前を指定する。sink というのは出力サウンドカードという理解で多分合っている。調べるには、まず default sink & profile を指定し (今期待する出力先 (e.g. フロントスピーカー) から音が出るのであれば何もせず)
pacmd list-sinks
を実行すれば、sink の一覧が出てくので、その name
のアイテムを書く。例:
1 sink(s) available.
* index: 2
name: <alsa_output.pci-0000_2f_00.4.analog-surround-51>
driver: <module-alsa-card.c>
flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
state: RUNNING
suspend cause: (none)
priority: 9039
このときは、alsa_output.pci-0000_2f_00.4.analog-surround-51
を master
に指定する。書き忘れていたが、事前に pavucontrol
などで 5.1ch の設定をしておき、名前の suffix が -51
等自分のサウンドカードに合う channel になっていたほうがよい。
channels
は、リマップするポートの数。front left と front right を rear right と rear left にマップするので、2 と数える。
master_channel_map
は信号の destination で、 channel_map
は信号の source。この名前はチャンネルの設定 (5.1ch 等) で決まり、
pacmd list-sinks
の volume 欄等から確認できる。