macOS · Apple Silicon · 14.2+

Stream any app's audio, with your voice on top.

WhiteHole is the GUI front-end BlackHole 2ch never had. Mix your microphone with audio from any app on your Mac — Spotify, a browser tab, a game, your DAW, a soundboard — and route the whole thing into Discord, Zoom, OBS, or anywhere else that takes an input device.

WhiteHole app icon

What's inside Pulls audio out, instead of in.

🎙

One-click mic mixing

Your microphone and any system audio are mixed into a single stereo stream. Independent gain sliders so your music doesn't drown out your voice.

Standout
🌀

CoreAudio Process Tap

Bypasses the flaky ScreenCaptureKit audio path. Uses Apple's macOS 14.2+ Process Tap API to capture the system audio mix directly — minus WhiteHole's own playback, so no feedback loops.

⚫️

Speaks BlackHole natively

Auto-detects every BlackHole device on your Mac and pipes the mix straight into it. Your output device list stays clean — just point Discord at BlackHole 2ch.

📡

Live frame meter

Status pill shows mic and app frame counts in real time. If audio dries up, you'll know exactly which side broke before Discord does.

🛡

No driver to install

WhiteHole is a regular signed app. It uses BlackHole 2ch (which you install once via Homebrew) as its loopback. Uninstalling is dragging it to the Trash.

🎧

Works with anything that makes sound

Streaming a YouTube video to your call. Sharing in-game audio. Playing music from Spotify behind a podcast. WhiteHole doesn't care which app — if your Mac can play it, WhiteHole can route it.

How it works A short trip through the singularity.

01

Capture

WhiteHole starts an AVAudioEngine on your default microphone and a CoreAudio Process Tap on the rest of the system.

02

Mix

Both streams resample to 48 kHz / stereo / float32 and meet at a final mixer with per-source gain.

03

Eject

The mixed stream is written into BlackHole 2ch via a dedicated AVAudioEngine bound to the BlackHole device.

04

Discord listens

Set Discord's input to BlackHole 2ch. Your voice + your music arrive as one tidy input.

Setup Three commands, two clicks, one stream.

  1. Install BlackHole 2ch

    WhiteHole is the GUI; BlackHole is the loopback. Install it once via Homebrew:

    brew install blackhole-2ch

    No Homebrew? Grab the signed installer from Existential Audio:

    Download BlackHole 2ch
  2. Download & launch WhiteHole

    Grab the zip, drag WhiteHole.app into /Applications, and double-click. macOS may ask you to grant Microphone access on first run.

    Download WhiteHole.app
  3. Hit Start

    Pick a BlackHole output device, balance your mic and app gain, and press Start. The status bubble will show mic:N app:M frames ticking up.

  4. Point Discord at BlackHole

    In Discord → User Settings → Voice & Video → Input Device: BlackHole 2ch. Set Output to your real headphones so you can still hear the call.

FAQ Things that come up at session zero.

Why does the source-app picker do nothing right now?

WhiteHole uses a global system tap that excludes itself, so every other app's audio is captured. Per-app filtering is on the roadmap — for now, mute the apps you don't want bleeding into the call.

Why not just use BlackHole on its own?

BlackHole gives you a virtual loopback device, but it doesn't mix and it can't add your microphone. Without WhiteHole you'd need an aggregate device, a multi-output device, and probably Audio MIDI Setup tabs you didn't want to know about.

Is my audio sent anywhere?

Never. Everything stays on your Mac. WhiteHole has no network code at all.

Does WhiteHole work on Intel Macs?

The build is Apple Silicon only. The CoreAudio Process Tap API works on Intel too in theory; if there's demand we'll cut a universal build.

It says "no audio" — what now?

Make sure your system Output is set to your headphones (not BlackHole), the mic input is your real mic, and that WhiteHole is allowed in System Settings → Privacy & Security → Microphone. The status pill will tell you which side is silent.