Repository navigation
Releases
AudioSync 0.8.8
A security update for the Mac, Windows and Linux. It closes more of the ways another device on your network could misuse the Web Remote, pose as a speaker or fill your speaker list with fakes.
Updates
Check for Updates… installs this one from 0.8.7, on the Mac, on Windows and in the Linux AppImage.
One thing to know first: if an AirPlay speaker turns down AudioSync's stored pairing, it now shows that it needs pairing again instead of AudioSync quietly sending your password. Switch it on and type its password to pair it again.
What changed
- The Web Remote answers only devices on your computer's own networks and Tailscale devices at its Tailscale address. Wrong codes from endless IPv6 addresses no longer lock pairing for everyone.
- A Web Remote pairing ends a year after the device paired, however often it's used. A copied sign-in that gets used first is unpaired once your phone comes back, and a phone's pairing stays apart from any other AudioSync it meets at the same address.
- AudioSync asks a Google Cast speaker to prove it's genuine before playing to it, and turns off one whose answer doesn't check out.
- AudioSync connects to AirPlay and Google Cast speakers it finds only at addresses on your own networks, never at this computer's own address or a host on the internet. A Cast speaker you add by address is used as typed. A flood of made-up speakers can no longer grow the list without limit or push real ones out, and hidden characters can no longer garble a speaker's name or add fake lines to the debug log.
- AudioSync no longer sends your AirPlay password to an AirPlay 2 speaker in the older, weaker form, and an AirPlay speaker over IPv6 takes resend, timing and clock messages only from its own address.
- On Windows, an update checks the new file again right before it replaces the old one. On Linux, another account can no longer make AppImage updates roll back.
- For advanced users, a hidden setting cuts the AirPlay delay from about 1.75 s down to 0.1 s, at your own risk on a busy Wi-Fi network. CHANGELOG.md says how to set it.
- A phone that missed the Web Remote's new sign-in cookie, for example during a restart, gets it again instead of being asked for the pairing code.
- The Now Playing card follows a Several Apps mix on the Mac, Windows and Linux: an app the mix leaves out no longer shows there, and the card's buttons no longer control it. On Windows that includes Firefox.
- On Windows, Refresh Devices (F5) searches the network again for AirPlay and Google Cast speakers, so after you switch Wi-Fi networks it finds the speakers on the new one.
- On Windows, a Google Cast speaker you added by address while the speaker list already showed it keeps its name, delay, zone and presets after a restart, and removing it clears its message too.
- When AudioSync's own stream to a Google Cast speaker stops on an internal error, the speaker goes off at once and says the connection was lost.
Install
- Mac (Apple silicon, macOS 15 or later): download
AudioSync.dmgand drag AudioSync to Applications. It's not notarized, so macOS blocks the first launch: open it once, click Done, then click Open Anyway in System Settings > Privacy & Security. The disk image window shows the same steps. - Or from Terminal, with no Open Anyway step:
curl -fsSL https://github.com/yassersutojoyo/audiosync/releases/latest/download/install.sh | bash. It checks the download againstSHA256SUMS.txt, puts AudioSync in Applications (so it needs an administrator account) and opens it. - Windows 11:
AudioSync-0.8.8-windows-x64.ziporAudioSync-0.8.8-windows-arm64.zip, or in PowerShellirm https://github.com/yassersutojoyo/audiosync/releases/latest/download/install.ps1 | iex. The exe isn't signed, so SmartScreen warns the first time you open a downloaded zip: click More info, then Run anyway. - Linux:
AudioSync-0.8.8-x86_64.AppImageorAudioSync-0.8.8-aarch64.AppImage(make it executable and run it),AudioSync-0.8.8-amd64.deborAudioSync-0.8.8-arm64.deb(sudo apt install ./AudioSync-0.8.8-amd64.deb), or in a terminalcurl -fsSL https://github.com/yassersutojoyo/audiosync/releases/latest/download/install-linux.sh | bash. It needs glibc 2.39 or newer and PipeWire.
The full list is in CHANGELOG.md.
AudioSync 0.8.7
A security update for the Mac, Windows and Linux, from an outside review of AudioSync, plus fixes for speakers that hang after a crash in their connection.
Updates
Check for Updates… installs this one from 0.8.6, on the Mac, on Windows and in the Linux AppImage.
One thing to know first: an Apple TV paired over AirPlay 1 by an older version, without the key that identifies it, asks for its pairing code again the next time you turn it on.
What changed
- Pairing an Apple TV over AirPlay 1 fails when the Apple TV doesn't send the key that identifies it, so no other device on the network can pose as it later.
- The Web Remote no longer lists microphones or other inputs and refuses a switch to one, so a paired phone can't turn a microphone on from afar. You can still pick an input on the computer.
- A phone paired with the Web Remote works only from the network address it paired from, and its sign-in cookie is replaced every 10 minutes while you use it. If your phone gets a new address on the Wi-Fi, the remote asks for the pairing code again.
- On the Mac, other apps can no longer run their own code inside AudioSync to use its microphone and audio recording permission.
- Another device on your network has a harder time posing as one of your Google Cast speakers. AudioSync streams only to the address it connected to and ignores announcements that try to move a known speaker somewhere else.
- Each release now carries the Mac, Windows and Linux install scripts, and each script downloads the app and its checksums only from that one release.
- On Windows, a crash in one speaker's audio no longer leaves it showing as on while it plays nothing: the speaker opens again, and a failed capture stops with an error.
- A crash in the connection to a Chromecast or AirPlay speaker no longer leaves it hanging: an AirPlay speaker tries its connection again, and a Chromecast speaker fetches the stream again or stops with an error you can see.
Install
- Mac (Apple silicon, macOS 15 or later): download
AudioSync.dmgand drag AudioSync to Applications. It's not notarized, so macOS blocks the first launch: open it once, click Done, then click Open Anyway in System Settings > Privacy & Security. The disk image window shows the same steps. - Or from Terminal, with no Open Anyway step:
curl -fsSL https://github.com/yassersutojoyo/audiosync/releases/latest/download/install.sh | bash. It checks the download againstSHA256SUMS.txt, puts AudioSync in Applications (so it needs an administrator account) and opens it. - Windows 11:
AudioSync-0.8.7-windows-x64.ziporAudioSync-0.8.7-windows-arm64.zip, or in PowerShellirm https://github.com/yassersutojoyo/audiosync/releases/latest/download/install.ps1 | iex. The exe isn't signed, so SmartScreen warns the first time you open a downloaded zip: click More info, then Run anyway. - Linux:
AudioSync-0.8.7-x86_64.AppImageorAudioSync-0.8.7-aarch64.AppImage(make it executable and run it),AudioSync-0.8.7-amd64.deborAudioSync-0.8.7-arm64.deb(sudo apt install ./AudioSync-0.8.7-amd64.deb), or in a terminalcurl -fsSL https://github.com/yassersutojoyo/audiosync/releases/latest/download/install-linux.sh | bash. It needs glibc 2.39 or newer and PipeWire.
The full list is in CHANGELOG.md.
AudioSync 0.8.6
A small update to the Now Playing card and the Master Volume, on the Mac, Windows and Linux.
Updates
Check for Updates… installs this one from 0.8.5, on the Mac, on Windows and in the Linux AppImage.
What changed
- Shuffle and Repeat in the Now Playing card show a small dot under them while they are on, and Repeat has a plainer icon.
- The speaker before the Master Volume slider mutes and unmutes it, and its waves follow the level. Unmuting brings back the last level you had, or 50 if there was none since AudioSync started.
- On the Mac, the speaker after the Master Volume slider is gone, so the slider is longer.
Install
- Mac: download
AudioSync.dmgand drag AudioSync to Applications. It needs macOS 15 or later. It's not notarized, so macOS blocks the first launch: open it once, click Done, then click Open Anyway in System Settings > Privacy & Security. The disk image window shows the same steps. - Or from Terminal, with no Open Anyway step:
curl -fsSL https://raw.githubusercontent.com/yassersutojoyo/audiosync/main/scripts/install.sh | bash. It checks the download's SHA-256 checksum, puts AudioSync in Applications (so it needs an administrator account) and opens it. - Windows 11:
AudioSync-0.8.6-windows-x64.ziporAudioSync-0.8.6-windows-arm64.zip, or in PowerShellirm https://raw.githubusercontent.com/yassersutojoyo/audiosync/main/scripts/install.ps1 | iex. The exe isn't signed, so SmartScreen warns the first time you open a downloaded zip: click More info, then Run anyway. - Linux:
AudioSync-0.8.6-x86_64.AppImageorAudioSync-0.8.6-aarch64.AppImage(make it executable and run it),AudioSync-0.8.6-amd64.deborAudioSync-0.8.6-arm64.deb(sudo apt install ./AudioSync-0.8.6-amd64.deb), or in a terminalcurl -fsSL https://raw.githubusercontent.com/yassersutojoyo/audiosync/main/scripts/install-linux.sh | bash. It needs glibc 2.39 or newer and PipeWire.
The full list is in CHANGELOG.md.
AudioSync 0.8.5
This is the first beta, and the first release with Linux. AudioSync now runs on macOS, Windows and Linux. On Windows and Linux you can install it with one line, and the notices tell you what to do next instead of only what went wrong.
Updates
On the Mac and on Windows, Check for Updates… installs this one from 0.8.0.
Linux
- An AppImage for x86_64 and aarch64, and a .deb for amd64 and arm64. It needs glibc 2.39 or newer and PipeWire.
- It captures the whole system or one app and plays to AirPlay speakers, Google Cast and your local outputs, Bluetooth included, in sync, same as the Windows version.
- The AppImage updates itself, like the Windows app. A copy installed from the .deb doesn't: it tells you to get the new version from the release page.
Install in one line
- Windows, in PowerShell:
irm https://raw.githubusercontent.com/yassersutojoyo/audiosync/main/scripts/install.ps1 | iex. It puts the x64 or ARM64 build for your PC under your own Programs folder with a Start menu shortcut, and needs no administrator rights. - Linux, in a terminal:
curl -fsSL https://raw.githubusercontent.com/yassersutojoyo/audiosync/main/scripts/install-linux.sh | bash. It puts the AppImage for your machine in~/.local/binwith a menu entry, without sudo. - Both check the download against
SHA256SUMS.txtbefore they install anything. Run them again to update.
Notices that say what to do
- When AirPlay pairings, or on Windows your settings, couldn't be saved, the notice says to free up some space if the disk is full.
- A speaker without PTP timing says to close the app using port 319 or 320, and a Google Cast speaker that stopped AudioSync's stream says to turn it on again.
- A calibration that was interrupted or couldn't measure two speakers says how to try again.
- The notices for an unplugged input name the device, on the Mac now too.
The Mac and Windows, closer together
- On the Mac: Check for Updates Automatically in the AudioSync menu, Show Virtual Devices and Add by Address… in the Speakers menu, an Apple TV PIN you can see as you type it, and a Retry that keeps the passwords you typed.
- On the Mac: a Bluetooth speaker that drops off shows that it was disconnected, and the source picker lists input devices by name.
- On Windows: an AirPlay speaker that drops off the network shows Reconnecting… while AudioSync tries again, and a Bluetooth speaker that just connected comes in sync whenever you turn it on.
- On both: the Equalizer row shows its preset under its name, a name too long for its line scrolls like the Now Playing title, notices ease in and out, and the Now Playing card has Shuffle and Repeat for players that offer them.
Smaller fixes
- A Google Cast speaker with no usable address turns off after three failed connects instead of waiting forever.
- With a full curve list, Save Curve lets you save over a curve by its name.
- The web remote uses the same names as the apps, and says so when every speaker is hidden.
- When a preset leaves a Google Cast speaker off because it isn't on the network, the notice says "Not on the network".
Install
- Mac: download
AudioSync.dmgand drag AudioSync to Applications. It needs macOS 15 or later. It's not notarized, so macOS blocks the first launch: open it once, click Done, then click Open Anyway in System Settings > Privacy & Security. The disk image window shows the same steps. - Or from Terminal, with no Open Anyway step:
curl -fsSL https://raw.githubusercontent.com/yassersutojoyo/audiosync/main/scripts/install.sh | bash. It checks the download's SHA-256 checksum, puts AudioSync in Applications (so it needs an administrator account) and opens it. - Windows 11:
AudioSync-0.8.5-windows-x64.ziporAudioSync-0.8.5-windows-arm64.zip, or the PowerShell line above. The exe isn't signed, so SmartScreen warns the first time you open a downloaded zip: click More info, then Run anyway. - Linux:
AudioSync-0.8.5-x86_64.AppImageorAudioSync-0.8.5-aarch64.AppImage(make it executable and run it),AudioSync-0.8.5-amd64.deborAudioSync-0.8.5-arm64.deb(sudo apt install ./AudioSync-0.8.5-amd64.deb), or the terminal line above.
On Windows and Linux, AudioSync plays to AirPlay 1 and AirPlay 2 receivers, with a password prompt for a receiver that has one and a code prompt for an Apple TV that asks for one. AirPlay 2-only speakers, stereo pairs and home theater groups play by default, and a speaker that does both uses AirPlay 2, or AirPlay 1 when it was paired over AirPlay 1 or AirPlay 2 can't take it.
The full list is in CHANGELOG.md.
AudioSync 0.8.0
This one is mostly about AirPlay 2 speakers: several of them play at once now, and a speaker that drops off the network waits for it to come back. Everything below works on the Mac and on Windows unless a line says otherwise.
Updates
On the Mac, on 0.7.0 or 0.7.1, Check for Updates… in the AudioSync menu installs this one. From now on the Mac app checks an update's signature before it unpacks it, and every update waits for your click instead of offering to install by itself.
On the Mac, the Guide now says where Check for Updates… is. On Windows, it says how updates work.
The Windows app now updates itself. Help > Check for Updates… looks for a newer version, and with File > Check for Updates Automatically, which is on by default, it also looks at launch, unless a check worked in the last 24 hours, and again every 24 hours while AudioSync runs. Download and Install fetches the update, checks it was signed with AudioSync's release key and installs it, and Restart Now opens the new version. The update notice has Skip This Version, as on the Mac: the automatic checks then stay quiet about that version until a newer one comes out, and Help > Check for Updates… still offers it. If the new version doesn't start within 15 seconds, or Windows security blocks the file, AudioSync puts the old version back and offers the release page, and that version isn't offered again at launch. An update check gives up after 30 seconds, even when the server answers slowly. Builds you make yourself never check. AudioSync 0.7.1 on Windows can't update itself, so get this release from the release page by hand once.
AirPlay 2
AirPlay 2 is now on by default, so AirPlay 2 speakers, stereo pairs and home theater groups play without turning on AirPlay 2 (Experimental) first. A speaker that plays both AirPlay 1 and AirPlay 2 still uses AirPlay 1 unless you turn on AirPlay 2 (Experimental), in the gear menu or the AudioSync menu on the Mac and the File menu on Windows, then quit and reopen AudioSync.
- Up to 16 AirPlay 2 speakers play at once. One past that stays on, its row says "Waiting: too many AirPlay 2 speakers", and it starts when another one stops.
- AudioSync remembers per speaker whether it plays with PTP or NTP timing, so the next launch starts with the one that worked.
- Pairing asks less often. A paired speaker that also announces it wants a code plays with its saved pairing, and when a code pairing fails at its last check, AudioSync tries what the speaker already stored instead of starting over.
- Plus smaller fixes for speakers on another network, two speakers sharing one link-local IPv6 address, pairing steps that never answer, speakers that turn AirPlay 1 down, and speakers that read Busy after a quick restart.
AirPlay speakers in general
- A speaker that's on but has left the network waits for it to come back instead of retrying. Its row says "Not on the network right now, plays once it's back".
- A speaker you turn on stays on while it asks for its password or code. Its row says "Waiting for the password" or "Enter the code shown on" and the speaker's name, and Cancel turns it off. The pairing prompt, its notices and the Guide now ask for the code an Apple TV or AirPlay 2 speaker shows, the word the speaker row already used, instead of a PIN.
- The master volume now sets how loud AudioSync sends to AirPlay speakers, and no longer moves a speaker's own volume or a TV's. A speaker's own volume and its zone's volume still set the speaker.
- When several speakers start together, they connect half a second apart, and a speaker that's already playing keeps its sound while another one pairs.
- A speaker set to connect automatically that asks for a code or password now turns off with a notice saying which one it needs, instead of being skipped without a word or reading On while nothing plays.
- On the Mac, the first launch after an update could find no AirPlay or Google Cast speakers until you reopened AudioSync. It now looks again by itself when nothing turns up a few seconds after Local Network access is allowed.
- On the Mac, AudioSync keeps handling speaker and network changes while an error alert or a code prompt is open, and on Windows while the error box for a window that failed to open is up. On the Mac, a speaker whose pairing ends while its code prompt is open turns off with a notice, and the prompt closes.
- On the Mac, stereo pairs and home theater groups behave as on Windows: a pair keeps playing on the speaker that connects, names a member that plays nothing as missing, and asks for a member's password by that speaker's name.
- Plus smaller fixes to the Reconnecting… status, notices for declined streams, speakers that ask for a code every time (on Windows, hovering over the note now explains it), a password prompt that now says when the password you typed was wrong, delay changes during new cover art, muted AirPlay 1 speakers, speakers that show only some of their addresses, AirPlay sending priority, AirPlay starting again on Windows when it can't start at launch, a speaker dropped with a timeout when AudioSync's sending was held up for a moment, and, on Windows, a speaker's own AirPlay delay saved by an older version, which nothing showed and which is no longer applied, as on the Mac. On the Mac, when AirPlay stops after an internal error or can't start, a notice says so and has a Retry button, as on Windows, a pairing that can't be saved gets a notice and stays as you set it until you quit, also after Retry, and a speaker muted for a calibration stays muted when it connects again. On Windows, an older Apple TV that turns its stored pairing down asks for a new code right away, a speaker that still asks for a code right after pairing points to its Allow Speaker & TV Access setting, a speaker AudioSync turns off because it couldn't be reached or stayed busy says it's off and how to turn it on again, and while no AirPlay speaker is found the note offers Open Network Settings, as the Mac offers Open Local Network Settings.
Google Cast
- A Chromecast or other Google Cast speaker that ends the stream on its own gets it again, unless it already ended it in the 10 minutes before.
- A speaker you pause on the device itself, with its remote, the Google Home app or your voice, plays in time again when you press play there. Before, it played late until you chose Resync. Its row says "Paused on the speaker" meanwhile.
- The master volume turns a Google Cast speaker down inside AudioSync, as it does for local speakers, and leaves the TV's own volume alone.
- A speaker that loses its connection tries again at once, then after 1, 2, 4 and 8 seconds, then every 10 seconds. One that doesn't answer when you turn it on, say a TV that's switched off, turns off after a few tries and says it isn't responding, instead of reading Connecting forever.
- A speaker that was on when you quit turns on again after you relaunch, once it's on the network. One you added by address shows as offline until it answers, and keeps its name, zone and presets once AudioSync finds it.
- Volume holds better: a speaker keeps its volume when it reconnects, a fast drag no longer jumps back, the slider follows the TV again after the TV refuses a level, and Mute changes to Unmute as soon as you click it. On the Mac, a volume set while the speaker still connects, by a preset for example, is kept.
- When a speaker ends AudioSync's stream, by another app or by its own controls, the notice says the speaker stopped AudioSync's stream instead of blaming another app.
- Plus smaller fixes for speakers that leave the list or that another app takes over, removing an added address, network address changes, speaker groups, offsets, fixed-volume speakers, connects that failed while the computer slept, floods of fake speakers on the network, the name in a notice for a speaker added by address, the Windows note that AudioSync can't look for Cast speakers, and, on the Mac, a speaker that announces no name, now listed under its network name instead of "Unknown device".
When a speaker or the source drops out
- A speaker that drops off for a moment, such as a Bluetooth speaker losing its link, no longer makes your other speakers skip and then go silent. For 10 seconds the others keep their timing, so only that speaker has a gap.
- A local speaker that goes silent while its row says it plays, changes format, or won't start yet, say while Bluetooth reconnects, stays on and plays again by itself while the other speakers keep their timing.
- Unplugging the input you stream from no longer stops streaming; the sound comes back when you plug it in, on another USB port too. When another app takes the input for itself, AudioSync tries it again every 3 seconds instead of stopping. The unplugged input stays in the source list with "(not connected)" after its name.
- On Windows, a "Waiting for audio" notice shows while streaming is on and nothing has played yet. On the Mac, a speaker on this Mac that's unplugged, or won't start for 30 seconds, gets a notice that it plays again as soon as it's back, and while nothing has been heard since streaming started, "Waiting for audio" says where to allow it: System Settings > Privacy & Security > Screen & System Audio Recording.
- On Windows, a Windows audio restart now restarts only the capture while speakers stay connected, an app you play from that runs as administrator is noticed when it quits.
- After a wake, AudioSync keeps trying to capture for up to a minute, on the Mac and on Windows.
- Plus smaller fixes for speakers that play in bursts, Mac captures that stall or sleep, Several Apps on Windows when one app restarts, gaps from Windows timing errors, a Windows source-switch notice that stayed after streaming stopped, the Windows notice that a speaker on this PC was disconnected, which now goes away once streaming stops or you switch the speaker off, an app on the Mac that starts playing from a new process, which Audio...
AudioSync 0.7.1
This one is for the Mac and Windows.
Zones in the menu bar panel and the Windows tray flyout now work like they do in the main window: the round icon switches a zone on or off, and its name or arrow shows or hides its speakers. On Windows, fold a zone in the main window and it's folded in the tray flyout too, and the other way round. On the Mac, each one keeps its own.
Also new:
- A speaker in a zone keeps a short row under This Mac (This PC on Windows) or Connected Speakers, with its switch and a link to its zone. That switch turns only this speaker on or off.
- Only This Speaker, in a zone speaker's menu, plays that speaker and turns the zone's other ones off, apart from speakers you hid. They stay in the zone. If it's a Google Cast speaker that's offline or in use by another app, nothing switches.
- On the Mac, a zone with none of its speakers around can still be opened from its greyed icon, so you can see which ones are missing.
- On the Mac, double-click a zone's name to rename it, or a speaker's name in its row under "In zones". A zone's speakers now sit in one tinted box, and the link to a speaker's zone is a small button with the zone's icon and name.
- On the Mac, Switch to All System Audio When the Source App Quits is now on unless you turned it off, so AudioSync keeps playing when the app you capture quits.
- About AudioSync shows just the version number.
On Windows, a zone with none of its speakers found can now be folded from the keyboard: Tab reaches its arrow, and Go to Zone puts the focus there. A stereo pair or home theater in a zone says it needs AirPlay 2 while AirPlay 2 is off, as on the Mac, and a Google Cast speaker in a zone says it stayed off only while another Cast speaker is on.
Fixed: on the Mac, the menu bar panel no longer shows a second, full-size box while it opens, and showing or hiding a zone's speakers in it resizes it in one motion. Reopening it while it's still fading out no longer leaves it stuck at its old size. On the Mac, a zone click or a preset no longer takes a Google Cast speaker back from another app that's using it. On the Mac, with VoiceOver, Go to Zone lands on the zone's round icon, or on its arrow when none of its speakers is around.
The full list is in CHANGELOG.md.
Install: on the Mac, Check for Updates… in the AudioSync menu picks it up, or download it below as with 0.7.0.
About the Windows build:
- This is the first Windows release. It's a preview, and it isn't signed, so SmartScreen warns the first time you open it.
- It needs Windows 11.
- AirPlay reaches speakers that take AirPlay 1. It asks for the password of a speaker that has one, and for the PIN an Apple TV shows when it asks for a code.
- AirPlay 2 is experimental and stays off unless you turn on File > AirPlay 2 (Experimental).
- What was tried for this release: a run on a Windows 11 PC playing silently to its own speakers, and three emulated AirPlay receivers. Nothing in this release was tried on a real AirPlay speaker or Apple TV.
- Download the zip for your PC below (x64 or arm64). The Windows source, with every Rust crate it builds from, is attached as AudioSync-0.7.1-windows-source.tar.gz.
AudioSync 0.7.0
This one brings zones and speaker presets, a Web Remote for your phone, a calibration run for all your speakers at once, several apps as one source, and Google Cast speaker groups. It's Mac only: the Windows version isn't part of this release yet. I tested most of the AirPlay and Google Cast changes against emulated receivers, so some of them haven't met a real speaker or TV yet.
Updates
From this version on, AudioSync updates itself, so this should be the last one you install by hand. Check for Updates… in the AudioSync menu looks for a newer release on GitHub, checks the download's signature, installs it and opens AudioSync again. Once you allow it, it also checks now and then on its own. Builds you make yourself never check.
New
- Zones replace speaker groups. A zone is a set of speakers with its own volume, and a speaker is in one zone at a time. Click a zone's round icon to switch its speakers on or off together, or use Move to Zone in a speaker's menu. Your groups become zones the first time you start this version.
- Speaker presets save which speakers are on, their volumes, the zone volumes, the master and the equalizer curve. Recall one from the Presets card, the menu bar panel or Window > Presets, where the first nine have Control-Command-1 to 9.
- Calibrate All Speakers plays the test sweep on each speaker that's on, one at a time, and lists each new delay. Apply sets them all at once and Undo puts them all back. Calibrate Zone… does the same for one zone. Headphones and virtual outputs are left out, since the microphone can't hear them.
- Web Remote: control your speakers from a phone on the same network. It's off until you turn it on under Web Remote… in the gear menu or the Window menu. The phone can switch speakers and zones, set volumes and delays, recall a preset, change the source and show what's playing. It uses plain HTTP, so keep it to your home network.
- A source can be several apps at once: Several Apps in the source menu plays only the checked apps, or all apps except them.
- An input device with more than two channels gets an Input Channels menu, and a level meter shows under the source while you capture a microphone or line in.
- Save your own equalizer curves under a name, up to 50.
- A speaker group made in the Google Home app plays as one Cast speaker. A Cast speaker that doesn't show up can be added by its address with Add by Address… under Connected Speakers.
- Cast speakers show the track, artist, album and cover, and Master Volume scales them too.
- AirPlay speakers get how far into the track you are, their remote's buttons work with AudioSync, and they stop when you pause instead of playing on.
- AirPlay 2 has a switch now: "AirPlay 2 (Experimental)" in the app menu or the gear menu. It's off by default and takes effect the next time AudioSync starts. With it on, a stereo pair or an Apple TV with HomePods shows as one row.
- Hide Speaker takes a speaker you never use out of every list. Hidden Speakers in the gear menu brings it back.
- The first time a feature needs a macOS permission, AudioSync says why before macOS asks, and if you said no, the notice opens the right pane in System Settings. If you update from an earlier version, Now Playing reads Spotify and Music right away, as before, and macOS asks for Automation itself if it still needs to.
- On a first install, a Permissions window asks for Local Network and audio capture together, so streaming doesn't stop later to ask. AudioSync > Set Up Permissions… opens it again.
Changed
- A microphone or line in as the source keeps every speaker in step. With an AirPlay or Cast speaker on, everything plays about 2 seconds after the input.
- Changing the source or the input channels while streaming keeps the AirPlay and Cast speakers connected, so a speaker that asks for a code doesn't ask again. If the new source can't start, the old one plays on.
- Switching the source or the input channels leaves a much shorter gap on AirPlay speakers, because AudioSync no longer restarts their stream for it. On a test receiver the silence went from about 1.7 s to about 0.3 s.
- Turning streaming on with every speaker off starts it, and the first speaker you turn on starts playing. Before, an alert stopped you. On a first install, This Mac starts on.
- The menu bar panel opens as a popover from the icon, with a little arrow pointing at it, and a second click on the icon closes it again. On recent macOS that second click opened it right back up.
- An AirPlay speaker's row shows the volume the speaker itself is at, so a TV that follows AirPlay's usual volume scale should show the same number as AudioSync. The zone and the master scale a speaker's volume but never cap it, so it can go past 100 and stays there after a restart, and turning the master down to 0 and back up brings each speaker back to where it was.
- An input device with 16-, 24- or 32-bit integer samples can be a source now.
- A Bluetooth headset's hands-free microphone is no longer offered as a source or used for calibration, since recording from it switches the headset to call mode.
- AirPlay speakers can wait up to 20 seconds instead of 3, so a long Cast offset plays in full.
- Plainer wording across the app, and in the dark theme the teal text is lighter so it stays readable.
Fixed
- In the main window, a zone's header works like a speaker row: its round icon switches the zone on or off, and a click anywhere else on the header shows or hides the zone's speakers. Before, a click on the name switched the whole zone.
- Calibration works while the source plays nothing.
- A mix keeps playing when one of its apps quits while the others still run.
- With Switch to All System Audio When the Source App Quits on, streaming no longer stops when the app quits right after its sound ended.
- A Cast offset you set by hand, or with Apply or Undo, no longer gets put back by a late update from the speaker.
- The menu bar panel keeps its text readable over any window behind it.
- The menu bar panel no longer stutters when it opens or closes, also when you open it again quickly or close it while it's still opening. With Reduce Motion on, it only fades.
- A Bluetooth speaker you turn on within 3 seconds of connecting it no longer plays late for the whole stream. AudioSync restarts it once, quietly, 2 seconds after it starts.
- A paused player keeps its track and cover on AirPlay speakers.
- A source that starts after an AirPlay stream no longer loses its first moment of sound.
- A paired AirPlay speaker that can't prove it's the same speaker no longer plays.
- After streaming starts with every speaker off, a speaker that goes off before it ever plays, such as one that asks for a code every time, no longer stops streaming.
- An AirPlay speaker that turns the connection down before any pairing starts goes off with a notice that says so, instead of asking for a PIN or code.
- An AirPlay speaker that's retrying when its receiver leaves the network stops retrying, and its notice goes away. It joins again once the receiver is back.
- A volume step from an AirPlay TV's own remote stays where the remote put it. Before, AudioSync sent the level back, and the TV could round it and undo the step.
Install
- Download
AudioSync.dmgand drag AudioSync to Applications. It needs macOS 15 or later. - It's not notarized, so macOS blocks the first launch. Open it once, click Done, then click Open Anyway in System Settings > Privacy & Security. The disk image window shows the same steps.
- Or install from Terminal, with no Open Anyway step:
curl -fsSL https://raw.githubusercontent.com/yassersutojoyo/audiosync/main/scripts/install.sh | bash. It checks the download's SHA-256 checksum before it installs.
Coming from 0.6.0 or older? Those versions can't update themselves, so install this one by hand once. Later releases arrive through Check for Updates….
The full list is in CHANGELOG.md.
AudioSync 0.6.0
This one adds Google Cast speakers, a microphone calibration for local speakers, and a lot of timing fixes for local and Bluetooth speakers. It's Mac only for now: the Windows version isn't part of this release yet.
New
- Google Cast speakers. They show up with your other speakers, start and stop with streaming, and have their own volume and Mute. One plays at a time, and speaker groups made in the Google Home app can't play. If another app starts casting to a speaker AudioSync plays on, AudioSync turns it off and tells you.
- Cast has no shared clock, so you line a Cast speaker up by ear with its offset under the speaker, and it's kept for that speaker. If one drifts, Resync under its volume restarts the stream with a short gap. AudioSync never does that on its own.
- With a Cast speaker and AirPlay speakers on together, the side that's ahead waits for the other. AirPlay can wait at most 3 seconds; past that, a notice says how far ahead AirPlay plays and suggests lowering the Cast speaker's offset.
- Calibrate with Microphone under a local speaker sets its delay for you. It pauses the music, plays a short, quiet sweep on the built-in speakers and then on that speaker, and sets the delay from the difference. The built-in speakers need to be in the list. If you cancel, the microphone isn't allowed, or the result isn't clear, the delay stays as it was and AudioSync says why.
- Rename a speaker: double-click its name, or choose Rename… from its … menu. The name sticks after a restart and shows in the menu bar panel and in notices. Clear it to get the device's own name back.
- When the app you capture quits, AudioSync can switch to all system audio instead of stopping. Turn on "Switch to All System Audio When the Source App Quits" in the app menu or the gear menu.
- The Guide has three diagrams, in light and dark: where the sound goes, what a speaker's delay does, and how a Cast speaker's offset fits with your other speakers. Each has a description for VoiceOver.
- AirPlay 2, experimental and off unless you start AudioSync with
AUDIOSYNC_AIRPLAY2=1. It plays one AirPlay 2 speaker at a time, and a speaker that asks for a PIN gets the pairing prompt. It hasn't been tried on a real AirPlay 2 receiver yet.
Changed
- Bluetooth speakers and headsets keep about 10 ms more audio buffered, so they're less likely to run short right after starting.
- A Bluetooth speaker that's the earliest of your local speakers, with no AirPlay speaker on, makes everything play up to about 10 ms later against the screen. With no AirPlay speaker on and your earliest local speaker at the capture's sample rate, sound plays about 25 ms later against the screen than before. The delays between your speakers stay as you set them.
- A local speaker that drifts too far to smooth out now waits longer before a short skip or moment of silence puts it back in time, so those happen less often. Until then, such a speaker can sit a little further from the others than before.
Fixed
- A typed delay applies as soon as you leave its field (Tab, another field, a slider, the power switch), and the step buttons add to what you typed.
- A delay field blocks characters it can't take instead of showing them for a moment, and marks the field in red with a note on what it takes.
- Clicking the empty space of an open delay panel closes it.
- Local speakers with a delay, or playing next to AirPlay, keep their timing when their clock runs a little fast or slow, instead of drifting until a skip put them back.
- A local speaker at the same sample rate as the captured audio no longer runs short now and then.
- A speaker (often Bluetooth) that started while the system was slow to wake AudioSync no longer plays a little ahead of the others for the whole session, so the same delay lands on the same timing every time.
- A Bluetooth speaker that reports an odd latency no longer cuts its fade-out short or holds the stop too long when you switch it off.
- Raising a playing speaker's delay by more than 5 seconds restarts it at the new delay instead of leaving it silent for the whole increase.
Install
- Download
AudioSync.dmgand drag AudioSync to Applications. It needs macOS 15 or later. - It's not notarized, so macOS blocks the first launch. Open it once, close the warning, then click Open Anyway in System Settings > Privacy & Security. Or run
xattr -dr com.apple.quarantine /Applications/AudioSync.app. - Calibrate with Microphone asks for the microphone the first time you use it.
The full list is in CHANGELOG.md.
AudioSync 0.5.0
AudioSync 0.5.0 is a big one under the hood: a new audio engine and AirPlay sender, both written from scratch, and a new license.
What changes for you:
- A new audio engine, written in Rust, plays your audio now. The old bundled AirPlay engine is gone, so the app is much smaller and runs nothing next to itself.
- AirPlay goes through AudioSync's own sender. Your AirPlay speakers, volumes, groups and auto-connect carry over. An Apple TV that asks for a PIN pairs once more, and AirPlay 1 speakers with a password work now. Speakers that only take AirPlay 2 aren't listed yet.
- I haven't tried the new AirPlay sender on a HomePod yet. If your HomePod doesn't show up or doesn't play, please open an issue with the debug log: quit AudioSync, run
AUDIOSYNC_DEBUG=1 /Applications/AudioSync.app/Contents/MacOS/AudioSyncin Terminal, make it happen again, and attach/tmp/audiosync-debug.log. - Delays work with local speakers alone. The built-in speakers are the reference, so you can line a Bluetooth speaker up with them without any AirPlay speaker on. Speakers now play as far apart as their delays say, so a delay you tuned by ear may need a nudge of 10 to 20 ms.
- A typed delay applies when you press Return, which keeps its controls open, or Command-S for every delay you typed, or when you click outside the speaker rows or close the window. A click anywhere on a speaker's row opens or closes its delay controls. A number out of range gets a red outline and a line with the range. Escape drops what you typed, and quitting before it applies keeps the delay you had.
- No more crackle when a 44.1 kHz Bluetooth speaker starts, and no click every minute or two on a speaker whose clock runs a touch fast.
- With two Bluetooth speakers on at once, the one whose audio arrives late from macOS no longer runs short of audio and drifts off the delay you set.
- Speakers that came back after being unplugged play again instead of staying silent, and AirPlay speakers keep playing after the Mac wakes from sleep.
- AirPlay speakers with a screen, such as a TV, show the track playing in Spotify or Music, with its artwork.
- When a local speaker you switched on sits at 25% or less, or is muted, in macOS, its row says so, and one click fixes it.
- An AirPlay speaker no longer jumps to full volume when streaming starts. Each one starts at 60% or lower the first time, so set its slider once.
- AudioSync is now licensed under the GPL, version 3 or later, instead of MIT. The About panel says so. The source is this release's tag in the repository; the app bundles no third-party GPL code anymore. The written offer that came with 0.4.x for its bundled engine's sources still holds (see THIRD_PARTY_NOTICES.md).
- The updater that was never switched on is gone. Updates stay manual, from this page.
- Known issue: with two or more Bluetooth speakers or headphones playing at once, the sound can break up. The Mac's Bluetooth and Wi-Fi share one radio, and it shows most with Wi-Fi on 2.4 GHz. One Bluetooth output together with wired or AirPlay outputs plays cleanly. A fix is being worked on for 0.5.1.
Install: macOS 15 (Sequoia) or later. Download AudioSync.dmg and drag the app to Applications. Releases aren't notarized, so macOS blocks the first launch: open AudioSync once, dismiss the warning, then click Open Anyway in System Settings → Privacy & Security. SHA-256 checksums are in SHA256SUMS.txt.
The full list is in the CHANGELOG.