A delay for each speaker
Each local speaker sits anywhere from 2 seconds before to 20 seconds after the Mac's built-in speakers, and it changes live while you listen, so you can nudge it until the echo is gone.
Free and open source · for macOS 15 and later
AudioSync plays your Mac's audio on AirPlay speakers and the Mac's own outputs all at once. It lines them up, so you hear one song instead of an echo. Think of it as a free Airfoil alternative that does less, on purpose.
Free software under the GPL (GPL-3.0-or-later). Alpha, so expect a few rough edges.
I wanted the music on my desk speakers and the HomePod in the next room at the same time. That's really all this does: it grabs the audio once and sends it everywhere you switch on.
Plays from
Plays to, all at once
Every speaker takes its own time to make a sound. AirPlay holds about two seconds of audio before it plays, while a speaker plugged into the Mac plays right away. Same song, two start times: it sounds like it's playing twice.
AudioSync holds back every output attached to the Mac by its own amount, so they all play the same moment of the song at once. The AirPlay speakers stay matched to one another as well.
A small Dock app with a main window, plus a compact panel in the menu bar for quick switching.
Each local speaker sits anywhere from 2 seconds before to 20 seconds after the Mac's built-in speakers, and it changes live while you listen, so you can nudge it until the echo is gone.
Put the microphone where you listen. AudioSync plays a short sweep on the built-in speakers and then on a local speaker, and sets that speaker's delay from the difference. Measuring every speaker in one go comes in the next version.
Coming in the next version. Turn on Web Remote, scan its QR code and enter the pairing code. Your phone can then switch speakers, set volume and delay, and show what's playing. It uses plain HTTP, so keep it to your home network.
One master volume for everything, and a separate one on every speaker.
32 Hz to 16 kHz, ±12 dB, a preamp and 12 presets. It's applied once, so every speaker gets the same sound.
Artwork, title and artist, with play, pause and skip, when the music comes from Spotify or Music.
Save a set of speakers as a group, let favorites connect on their own, and start AudioSync at login if you like.
An Apple TV that asks for a code gets a prompt the first time. After that it connects without one. A speaker with a password asks for it once each time AudioSync starts.
A few limits to keep in mind before you install it.
AUDIOSYNC_AIRPLAY2=1. That experimental support plays one AirPlay 2 speaker at a time. The next version adds a switch for it in the menu.The idea is the same: send the whole Mac, or one app, to AirPlay speakers and local outputs together. AudioSync just does less. It plays to AirPlay receivers, Google Cast speakers (one at a time, with an offset you set by ear; Google Home groups come in the next version) and the outputs macOS already knows about, and it needs macOS 15 or later. AirPlay 2 is still experimental and off by default.
It's free. Grab the latest build, or build it yourself from the source.
For macOS 15 (Sequoia) or later. Open the disk image and drag AudioSync to Applications.
The builds aren't notarized yet, so macOS blocks the first launch. To get past it:
Or, from Terminal. A copy fetched this way skips the extra step:
curl -fsSL https://raw.githubusercontent.com/yassersutojoyo/audiosync/main/scripts/install.sh | bash
You'll need:
git clone https://github.com/yassersutojoyo/audiosync
cd audiosync
./setup.sh
The first run needs a network connection and takes a while. After that, ./build.sh is all you need. The development notes have the details.
Windows 11 and Linux versions are in the works too. They aren't out yet.