bngstng
(Nathan Vidal)
April 27, 2025, 7:27pm
1
Hello, I use helvum in order to make sound come out of 2 devices at once. It doesn’t work very well, when I play music using the rhythmbox application, the jbl speaker is late. Also, each time I skip a song I have to redo the graph. This is how it looks in helvum.
Any way to fix my issues will be much appreciated, thanks.
There is often a delay playing sound over bluetooth.
You may be able to add a fixed delay to the other audio path.
This is done all the time in movie players to make lip-sync work.
Sorry, I do not know how to do this in pipewire (a quick web search did not turn up any useful info).
1 Like
bngstng
(Nathan Vidal)
April 28, 2025, 3:57pm
3
I have a bash script which does everything for me now.
#!/bin/bash
# Dynamically detect sinks
BT_SINK=$(pactl list short sinks | grep bluez | awk '{print $2}')
WIRED_SINK=$(pactl list short sinks | grep Headphones | awk '{print $2}')
COMBINED_SINK_NAME="combined_sync"
if [[ -z "$BT_SINK" || -z "$WIRED_SINK" ]]; then
echo "❌ Couldn't detect one or both sinks."
echo "Bluetooth: $BT_SINK"
echo "Headphones: $WIRED_SINK"
exit 1
fi
echo "🎧 Detected sinks:"
echo "Bluetooth → $BT_SINK"
echo "Headphones → $WIRED_SINK"
pactl unload-module module-combine-sink &>/dev/null
pactl unload-module module-loopback &>/dev/null
echo "Creating combined sink..."
pactl load-module module-combine-sink \
sink_name=$COMBINED_SINK_NAME \
slaves=$BT_SINK,$WIRED_SINK \
adjust_time=true
pactl load-module module-loopback \
source=${COMBINED_SINK_NAME}.monitor \
sink=$WIRED_SINK \
latency_msec=400 \
latency_compensate=false
echo " Done!"
2 Likes