How to play audio on multiple outputs in sync on a Mac
A Mac can send its sound to several outputs at once, but they don’t play at the same moment. A TV or Bluetooth headphones run behind the built-in speakers, and in one room that sounds like an echo. Levels 1.4 plays every app on the outputs you pick and holds the faster ones back, so all of them sound together.
Why outputs play at different times
Every output needs some time between receiving audio and making a sound. The built-in speakers are quick. A TV runs the sound through its own processing first, and Bluetooth headphones buffer audio to keep the wireless link steady. macOS keeps a latency figure for each device, but it only knows what the device reports.
The Multi-Output Device in Audio MIDI Setup keeps the clocks of its devices in step, so they don’t drift further apart over time. It doesn’t line up their delays, though, and a slow device stays exactly as late as it started. Setting one up is covered in how to play sound through two outputs.
Play on several outputs with Levels
- Install Levels 1.4 or later. Playing on several outputs needs macOS 14.2 or later.
- Click the Levels icon in the menu bar, then click the device name at the top of the panel. The Outputs page opens in the same panel.
- Under Play on, tick the outputs you want. The Mac’s default output always plays and is marked Default. You can change it in System Settings → Sound.
- Play something. While Levels sets up the outputs, Lining up… shows next to the title for a moment. After that every app with sound plays on all the ticked outputs.
- If a device still sounds early or late, play something with a clear beat and move its slider under Sync until the echo is gone. The − and + buttons move it by 1 ms. Levels remembers the setting for that device.
The panel on the home page is a working copy: click the device name to open Outputs, tick a device and move the sliders.
How Levels lines them up
Levels captures each app’s sound with a Core Audio process tap and writes it into a buffer, together with the time each piece was captured. Every output gets its own player, which runs on that output’s own clock.
The shared delay is the path of the slowest output. Levels holds every other output back by the difference, so each sound leaves all of them at the same moment. The Delay box on the Outputs page shows this per device. The solid bar is the device’s own delay, the light bar is how long Levels holds it back, and the label reads slowest or waits with the number of milliseconds.
Each player reads from the buffer by the Mac’s absolute time. The crystals that clock audio devices run at slightly different speeds, tens of parts per million, which comes to a millisecond or two every ten minutes. Levels resamples to absorb that difference, so it never builds up into an echo.
The latency of each device comes from macOS. It is the same figure audio workstations such as Ableton Live show. What macOS can’t see, like a TV’s sound processing over HDMI, you add once with that device’s slider.
What we measured
- After setting the offset for a TV, we recorded it and the MacBook speakers with a microphone. The clicks from both arrived together, with a spread of 0.00 ms at the 0.1 ms resolution of the measurement.
- A Philips TV connected over HDMI played about 100 ms later than macOS reported. macOS listed its latency as about 2 ms.
- By ear, the MacBook speakers, the TV and a pair of headphones playing at once sounded like a single source.
Limits
- It needs macOS 14.2 or later, the first version with process taps.
- All sound waits for the slowest output. With a TV that is around 170 ms, so video on the Mac’s screen runs ahead of the sound. On the TV’s own screen the gap is smaller, because the TV delays the picture too. For a film on the Mac, play on one output.
- AirPlay speakers are not part of synced playback. They buffer about two seconds of audio.
- A TV over HDMI is tuned by ear once and Levels keeps the setting. After you reconnect the cable it may need a small correction.
- Bluetooth headphones use the latency they report to macOS. If they report none, tune them by ear like a TV.
- An app that starts playing after you turn on several outputs plays only on the default output for about the first second.
Levels compared with a Multi-Output Device
| Levels | Multi-Output Device | |
|---|---|---|
| Where you set it up | The Levels panel in the menu bar | Audio MIDI Setup, then System Settings → Sound |
| System output | Stays on your usual device | Switches to the combined device |
| Clock drift between devices | Absorbed by resampling against the Mac’s clock | Drift Correction |
| Different delays of the devices | Lined up to the slowest output | Left as they are |
| Fine tuning per device | From −200 to +500 ms, in 1 ms steps | None |