Simultaneous Audio Output fot multiple devices in pipewire

Can someone help me with the process of establishing multiple audio outputs in Fedora 34 with pipewire.
Earlier in PulseAudio I used to install the package pacrefs and enable the virtual output device… option and it just works!
But I’m completely unaware of the process to follow in case of pipewire. Can someone suggest me an easy reliable solution.

1 Like

Did you try this … with the pipwire_pulseaudio plugin you should be able to run thous apps.

1 Like

I tried it but not worked as the package is not installed?
Any new updates as F35 is equipped with WirePlumber?

Install pipewire-jack-audio-connection-kit and qjackctl.

Start qjackctl and check for presence of the audio sinks via the “graph” button.
Start a player, and look for connections from player to audio sink in qjackctl/graph.
Open qjackctl/patchbay, “edit” the default input socket/plug in the right column.
(an output device has input sockets…)
Set the combobox “forward” to the second output device.
Save the configuration for further use.

Any connection from player to default output will go also to the “forwarded” device.
Note: as far I know, pulseaudio has latency compensation possibilities but jack has not.

Remark: the default output device for is still defined by pavucontrol.

Good lick !

4 Likes

Thank You! It Worked.
But as you mentioned the latency is noticable.
Also since WirePlumber is introduced in Fedora 35 is there a chance to use it and get simultaneous output directly from Pipewire as it offers low latency mode?

2 Likes

As I understood, pipewire/wireplumber is the base of the sound system and it offers interfaces which both pulseaudio clients like pavucontrol and jack clients like qjackctl understand. pavucontrol still has the “latency offset” parameters in the “output devices/advanced” tab. With “pw-dump -m” you can monitor wireplumber, and it looks like something changes when you change the latency offset in pavucontrol. You can give it a try to see whether you can get your soundcards synchronized!

1 Like

I am not managing to get them synchronised by manipulating the offset.

Did anybody manage?

I did not manage to get anything synchronized with this latency offset, so I doubt whether it’s still supported in Pipewire. However, “easyeffects” includes a delay module. I shortly checked:

pactl load-module module-null-sink to simulate a second audio card.
Insert easyeffects/delay line between playing program and null sink
in qjackctl:
connected playing program both to easyeffects and standard audio card
connected monitor of null sink to standard audio card.
Defined a 1 second delay in the delay line: I got an 1-second echo…

Unfortunately, easyeffects spreads an awful lot of modules over qjackctl graph.

May be this helps, just replace null-sink by your fastest sound card…

Edit: It works with laptop speaker + bluetooth adapter.

1 Like