7

With the "Multi-output device" feature in audio midi setup in macOS, we are able to use a MacBook's internal speaker and an external Bluetooth speaker simultaneously to play the same music.

However, the issue is that the external speaker might have a larger latency, so that the audio is not in sync.

Is there a way to increase the latency of built-in speaker by an amount via some software so that by adjusting a bit, we can match the internal and external speakers?

Also, how can I adjust the relative loudness of each device in a multi-output device?

6
  • Isn't this what 'Drift Correction" is for? As for relative volume: you set the volume for each physical device, and then 'live with it'.
    – benwiggy
    Commented Jan 24, 2023 at 13:01
  • 2
    @benwiggy - You can't sync Bluetooth. it doesn't use real-time clock like a true audio device, it's more of a network protocol. It processes it as & when it gets round to it & respects no master clock.
    – Tetsujin
    Commented Jan 24, 2023 at 13:33
  • @Tetsujin Why can't the receiving bluetooth device just buffer a small number of samples and then use an internal clock to read that buffer? That would smooth out any fluctuations. The buffering would add no noticeable delay even at 44kHz I would think. I've had this same question about SPDIF as well. Commented Jan 24, 2023 at 20:06
  • @Tetsujin It depends on how tight you want the sync. Bluetooth is automatically synced reasonable number of ms as part of A2DP called delay reporting. As high-quality BT audio can have latencies exceeding 200 ms, it's used every time you watch video on a Bluetooth headset.
    – user71659
    Commented Jan 24, 2023 at 23:39
  • @TylerShellberg - S/PDIF suffers from a little clock jitter, but no serious delay. Bluetooth can take something like 50ms or more to process signal.
    – Tetsujin
    Commented Jan 25, 2023 at 15:57

1 Answer 1

7

This requires more sophisticated routing capability than you might at first think.

There are a few utilities that can intercept a stream on its way to your outputs & speakers, but the simpler ones can only affect the entire stream, they can't split it & handle each part separately.

The cheapest app I can think of that could do this would be Rogue Ameoba's Audio Hijack. There is a more expensive app, Loopback from the same company, but it's harder to manage at hobbyist level. [There is also a cheaper, much more consumer-oriented one, SoundSource, which is also very good… but it can't do this task.]

Audio Hijack can actually intercept the audio stream at any point, whilst also being able to pass it through. This would give you the chance to send signal to Bluetooth, then run the pass-through into a delay & volume control, before sending it onward to the internal speakers.

enter image description here

Ignore the actual routing details, this is just an example.
This would give you control over the delay & relative volumes. One issue you may find is that Bluetooth doesn't have any kind of fixed delay amount, it can fluctuate depending on conditions. It was never designed for critical listening. The only other thing is that Audio Hijack needs to be running & the 'Record' button, bottom left, pressed [even though you're not actually using it to record anything].
There's a free demo if you wanted to try it out.

I have to add a slice of personal opinion here - Rogue Amoeba's contribution to the Mac's audio routing capabilities is second to none. Others exist; none integrate so smoothly. [I have no affiliation, merely a satisfied customer.]

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .