Download the installer — PilotCommBox-Setup-2026.09.01-beta.exe (~50 MB, Windows 10 2004+ / 11, no .NET install needed)
All versions: Releases page. Windows SmartScreen will warn because the app isn't code-signed — choose More info → Run anyway (the full source is right here in this repo).
A standalone software audio panel / intercom for flight simming (MSFS 2024, BeyondATC, vPilot, …) — the software equivalent of a GMA-345-style audio control panel:
- Multiple crew stations, each with its own headset (mic + output), volumes and PTT keys
- VOX or PTT intercom between stations, with sidetone
- Game/sim audio mixed into every headset (captured via Windows process-loopback — no extra virtual cable needed for this)
- Radio PTT routes the keyed mic to a virtual cable that BeyondATC/vPilot uses as its microphone, with real audio-panel TX lockout (first station to key wins)
- Radio-over-game ducking — game audio drops during ATC calls
- Global keyboard and joystick/yoke button PTT bindings (work while the sim has focus)
- Runs standalone; the sim is never required
- Windows 10 2004+ / Windows 11 (process-loopback capture needs 2004+)
- .NET 8 Desktop Runtime
- VB-Audio Virtual Cable (free/donationware) — the one third-party piece, needed only for the mic → ATC path, because Windows has no user-mode API for creating a virtual microphone.
- Install VB-Cable and reboot.
- Build and run PilotCommBox (
dotnet build, runPilotCommBox.exe). - Crew stations — for each seat: pick the headset's microphone and output, bind an Intercom PTT and a Radio PTT (click the button, then press any key or joystick/yoke button). VOX is on by default, so the intercom is voice-activated even without PTT.
- Game / Sim audio — leave on "All system audio except PilotCommBox" (default). MSFS
can keep playing to your normal default device; PilotCommBox mirrors it into every headset.
Alternatively pick single process mode and enter
FlightSimulator2024.exe. - Radio TX — select CABLE Input (VB-Audio Virtual Cable) as the TX device. In BeyondATC (or vPilot), set the microphone to CABLE Output.
- Radio RX (optional, recommended) — set RX source to single process with
BeyondATC.exeso ATC audio gets its own volume knob and triggers game-audio ducking. Leaving it on combined is fine too; ATC audio then arrives via the game-audio capture. - Press ▶ Start.
Volumes, PTT bindings and VOX settings apply live. Device / station / source changes need an engine stop-start.
Station mics ──(VOX / Intercom PTT)──▶ every other headset + own sidetone
Station mics ──(Radio PTT, one at a time)──▶ CABLE Input ──▶ BeyondATC mic
System audio (minus PilotCommBox) ──▶ every headset (ducked while ATC talks)
BeyondATC audio ──▶ every headset (drives ducking)
Internally everything is mixed at 48 kHz float. Each physical device runs on its own WASAPI shared-mode stream; per-source ring buffers absorb clock drift between devices (bounded at 250 ms, trimmed back to 80 ms — you'll never accumulate runaway latency on long flights).
Delayed echo of your own voice (~0.5 s): the VB-Cable installer usually makes CABLE Input your Windows default output device (multimedia and communications). Change both back to your real headset/speakers (Settings → System → Sound, and the Communications default under Sound Control Panel → Playback). With the cable as default, anything that monitors your mic (Windows "Listen to this device", Razer Synapse mic monitoring) plays your voice into the cable, and the game-audio capture loops it into your headset ~250 ms later. PilotCommBox warns at engine start if it detects this. Genuine sidetone through the app is ~60–90 ms.
PilotCommBox.exe --smoketestwritessmoketest.lognext to the exe: device enumeration, process-loopback activation, a full engine start/stop, config round-trip.- Config lives at
%APPDATA%\PilotCommBox\config.json. - If a headset is unplugged mid-flight the affected station errors but the rest keep running; restart the engine after reconnecting.
- Joystick buttons not detected: another app may hold the device exclusively.
dotnet publish PilotCommBox/PilotCommBox.csproj -c Release -r win-x64 --self-contained true -o publish
ISCC.exe installer/PilotCommBox.iss
Requires Inno Setup 6 (winget install JRSoftware.InnoSetup).
Output: installer/Output/PilotCommBox-Setup-<version>.exe — self-contained, no .NET runtime
needed on the target machine. Bump the version in both PilotCommBox.csproj and
installer/PilotCommBox.iss.
PilotCommBox is free for personal, noncommercial use under the PolyForm Noncommercial License 1.0.0 — hobby flying, shared cockpits, streaming your own flights, and tinkering with the source are all fine. Commercial use (selling it, bundling it with a paid product, use inside a for-profit training operation, etc.) is not permitted without a separate license — contact the author.
PilotCommBox/
Audio/ engine, mixer graph, capture pipelines, process-loopback interop
Input/ global keyboard hook, DirectInput joystick polling, PTT router
Models/ JSON-persisted configuration
Services/ config, device enumeration/hot-plug, smoke test
UI/ MVVM view models
MainWindow.xaml, App.xaml