Play audio simultaneously via multiple devices
by Tianren Liu
Basic
pacmd load-module module-combine-sink sink_name=combined
# optional, set as default
pacmd set-default-sink combined
# verify
pacmd list-sinks | grep -e "name:" -e "index:"
To specify the set of devices
# find the names of available sinks
pacmd list-sinks | grep -e "name:" -e "index:"
# create a master virtual sink device
pacmd load-module module-combine-sink sink_name=combined slaves=[name1],[name2]
Latency control
Method 1: add a virtual device
pactl load-module module-null-sink sink_name=delayed
pactl load-module module-loopback latency_msec=150 source=delayed.monitor sink=[fast sink]
pacmd load-module module-combine-sink sink_name=combined slaves=delayed,[slow sink]
Method 2: in the simplest scenario
pactl load-module module-loopback latency_msec=150 source_dont_move=true source=[slow sink].monitor sink=[fast sink]
To combine two HDMI audio devices
check the link below
To remove the virtual combined sink
# when there is only one virtual combined sink
pacmd unload-module module-combine-sink
# when there are multiple, first find out the index
pactl list short modules
# remove the virtual sink by index
pacmd unload-module [module index]
Based on How to simultaneously play audio via 2 separate HDMI output devices connected to one GPU?, Latency doesn’t work with PulseAudio on linux
tags: Ubuntu 20.04