Keep your music audible during FaceTime calls on macOS.
Start a FaceTime call and everything else drops to a whisper. That is macOS turning every other app down by 30 dB, and there is no setting to stop it. Unduck notices the call, takes over the audio, and puts the 30 dB back, then gives you a Music fader and a Call voice fader so you can set the balance yourself.
macOS 14.4 or later. No driver, no kernel extension.
Read this first. If you download the DMG and double-click it, macOS blocks it and says "Apple could not verify Unduck-0.1.dmg is free of malware." That is expected. Unduck is signed, but not notarized by Apple, and notarization requires a paid developer membership. macOS blocks anything without it.
The block happens twice, once on the disk image and again on the app, because the quarantine flag is copied along when you drag the app out. One command clears both:
xattr -d com.apple.quarantine ~/Downloads/Unduck-0.1.dmgThen:
- Download
Unduck-0.1.dmgfrom Releases. - Run the command above.
- Open the DMG and drag Unduck to Applications.
- Open Unduck and follow the setup checklist in the window.
The checklist asks for two things. Audio capture, so Unduck can hear other apps in order to rebalance them. Press Allow when macOS asks. And Accessibility, used only to un-pause the music your call interrupted. That one is optional, and skipping it costs nothing else. macOS does not let an app request Accessibility, so Unduck opens the right settings pane for you.
Then turn on Start Unduck at login and forget about it.
If you would rather not run a terminal command
You can click through it instead, but macOS asks twice.
- Double-click the DMG. It gets blocked.
- Open System Settings, Privacy and Security, scroll to the Security section, and press Open Anyway next to the message about the DMG.
- Double-click the DMG again. It mounts.
- Drag Unduck to Applications.
- Open Unduck. It gets blocked, this time as the app.
- Return to Privacy and Security and press Open Anyway again.
After that it launches normally and never asks again.
Building from source avoids all of this, because the app is then signed on your own machine. See Build it yourself.
Unduck engages by itself when a call connects and restores your volume when you hang up. You only need the window if you want to change the balance.
| Control | What it does |
|---|---|
| Music, Call voice, Master | Live balance during a call |
| Duck compensation | How much of the 30 dB to restore. 30 is right for built-in speakers; raise or lower it if your headphones or interface sound off. |
| Restore everything | Panic button. Puts your volume back immediately. |
Your volume is always restored on hang-up, on quit, and even after a crash. Unduck saves it to disk before touching it.
- Music apps pause themselves when a call starts. Unduck un-pauses them, but it does so with a blind play/pause key, so with two apps playing it can resume the wrong one.
- Duck depth is calibrated for built-in speakers. Other output devices may duck by a different amount; the Duck compensation slider is the manual correction.
- The other person cannot hear your music. Sending audio into the call needs a virtual input device and is not implemented.
git clone https://github.com/alecswang/unduck.git
cd unduck
./make-cert.sh # one-time local signing identity
./install.sh # build, install to /Applications, launchNeeds a Swift 6 toolchain: Xcode 16, or xcode-select --install.
Building locally avoids the Gatekeeper warning, because the app is signed by a certificate created on your own machine.
| Symptom | Cause |
|---|---|
| Music is silent during a call and the faders do nothing | Audio capture was denied. A denied capture returns silence rather than an error, so check the status line in the window. |
| Music never un-pauses | Accessibility is off, or was granted to an older copy of the app. Remove the entry, re-add Unduck, relaunch. |
| Music is still too quiet during a call | Your output device ducks by a different amount. Move Duck compensation. |
Log: ~/Library/Application Support/Unduck/unduck.log
- Architecture, how it works, and the non-obvious macOS behaviour behind each design choice
- Measurements, every constant in this code, how it was measured, and the theories that turned out wrong
- Releasing, signing, notarization, and what cannot be automated
tools/, the probe that produced those numbers