Skip to content

Repository files navigation

Bypass

A simple macOS app with one toggle that routes your audio into a virtual microphone ("Bypass") you can select in QuickTime, Zoom, Meet, OBS, etc.

Flip the toggle on → your system audio is duplicated into Bypass while you still hear it normally → pick Bypass as the mic anywhere.

How it works

Two pieces:

  1. Bypass.driver — a Core Audio HAL plug-in (AudioServerPlugIn). It publishes a virtual device whose output is looped back to its input through a shared ring buffer, so anything played to Bypass can be recorded from Bypass — a virtual microphone. (Only a driver can add a selectable audio input on macOS; an app alone cannot.)

  2. Bypass.app — a SwiftUI app with a single toggle. When on, it builds a Multi-Output Device named “Bypass Output” that contains [your current output device + Bypass] and makes it the system default output. Your audio plays on your real speakers/headphones and is duplicated into Bypass at the same time. A small meter reads the Bypass mic so you can see audio arriving.

Why a multi-output instead of capturing each app?

The first design used a Core Audio process tap to grab a specific app's audio. That turned out to feed back into itself (a global tap captures Bypass's own output → into Bypass → captured again …), which corrupts the stream. A multi-output device is driven on the real device's clock with no feedback, so the Bypass loopback stays clean. This was verified end-to-end (real app audio → Bypass mic = clean signal).

Using it

  1. Install the driver (one-time, asks for your password) — the Install microphone button, or cd BypassDriver && ./build_driver.sh && sudo ./install_driver.sh.
  2. Flip the toggle on.
  3. In your app:
    • Apps that follow the system output (browsers, QuickTime, Spotify, most players) need nothing — they're already routed.
    • Apps that pick a specific output device (e.g. Ableton) — set their audio output to “Bypass Output”. You'll still hear everything.
  4. In QuickTime: New Audio Recording ▸ ⌄ ▸ Bypass. Its level moves with your audio.

Build

# driver
cd BypassDriver && ./build_driver.sh            # universal Bypass.driver
sudo ./install_driver.sh                         # install + restart coreaudiod
# (install strips the iCloud quarantine flag — coreaudiod won't load quarantined plug-ins)

# app — open Bypass.xcodeproj in Xcode and Run (⌘R), or:
xcodebuild -project Bypass.xcodeproj -scheme Bypass -configuration Debug build

If you change the driver source, rebuild it and refresh the bundled copy the app installs:

cd BypassDriver && ./build_driver.sh
cd .. && ditto -c -k --keepParent BypassDriver/build/Bypass.driver Bypass/BypassDriver.zip

Gotchas learned the hard way

  • Quarantine: files under an iCloud-synced Desktop get com.apple.quarantine; coreaudiod silently refuses to load a quarantined HAL plug-in. Install strips it.
  • Exported symbol: the plug-in factory function must be exported (no -fvisibility=hidden), or CFPlugIn can't find it and the device never appears.
  • coreaudiod restart: SIP blocks launchctl kickstart; use killall coreaudiod.
  • Multi-output must not be private — a private aggregate can't be the system default and is hidden from apps like Ableton.
  • The driver is ad-hoc signed (fine for local use; sign + notarize to distribute).

About

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages