A real-time audio routing desktop app for Windows.Build a node graph that connects physical and virtual audio devices, and create virtual audio endpoints on demand through a custom kernel driver.
Warning Cable is in early development. The virtual audio device feature requires Windows test signing to be enabled.
Cable lets you wire any audio source to any audio sink on Windows from a visual node graph. Built-in nodes cover physical input/output devices (via cpal), virtual devices created by the bundled CableAudio kernel driver, app loopback capture (WASAPI), VST3 plugin hosting, and a small library of utility processors (Mixer, Gain, Channel Split/Merge, Delay, Compressor, Reverb, Echo, Spectrum Analyzer, Waveform Monitor).
The app is built on Tauri v2: a React + React Flow frontend drives a Rust audio runtime that processes the graph in topological order on a sub-millisecond spin-loop thread. A type system on the frontend statically validates each connection (channels / sample rate / bit depth) before the graph is pushed to the runtime, so only fully-validated graphs ever reach the audio engine.
- Download the latest
Cable_<version>_x64-setup.exefrom the Releases page. - Run the installer.
- (Optional, for virtual audio devices) Enable Windows test signing — see Notes.
- Launch Cable from the Start Menu.
The first launch creates two placeholder nodes (Audio Input Device → Audio Output Device). Right-click the canvas to add more nodes; drag from one handle to another to connect.
- Windows 10 (1809+) or Windows 11
- x64 CPU
- For virtual audio devices: test-signing mode enabled and the CableAudio driver installed
- Visual node graph — React Flow canvas with drag-to-connect, right-click context menus, and per-edge type badges
- Physical I/O — Enumerate and route any WASAPI / DirectSound / WDM device through
cpal - Virtual audio devices — Create render and capture endpoints on the fly via the CableAudio kernel driver; rename them with UAC elevation
- App loopback capture — Capture audio from a specific running process (per-app capture, Windows 10 2004+)
- VST3 host — Load and run third-party VST3 plugins inside the graph
- Built-in processors — Mixer, Gain, Channel Split / Merge (2/4/6/8 channels), Delay, Compressor, Reverb, Echo
- Visualizers — Spectrum Analyzer (FFT) and Waveform Monitor (oscilloscope-style)
- Static type checking — Every edge is validated against the format expected by its sink; mismatched edges are highlighted and the graph is held back from the runtime until valid
- Save / load — Persist a graph as JSON and drag-and-drop to reload
- Sub-millisecond runtime — Topological-order spin-loop processing thread for low-jitter audio routing
- Test signing for virtual devices. The CableAudio kernel driver is currently signed with a self-generated test certificate. To install it you must enable test mode:
followed by a reboot. A production-signed driver is on the roadmap.
bcdedit /set testsigning on - Buffer size. The runtime defaults to a 512-frame buffer at the device's native sample rate. Smaller buffers reduce latency but increase the chance of underruns on heavily loaded graphs.
- Virtual device naming. Renaming a virtual endpoint writes to
PKEY_Device_FriendlyName, which requires administrator privileges. Cable re-launches itself with elevation only for the rename action; the main window does not need admin rights. - Graph validity gate. If any node fails validation (e.g. a stereo source feeding a mono sink), the runtime keeps running the last fully-valid graph. Fix the offending edge or node and the new graph is pushed automatically.
- Licensing. App code (
src/,crates/) is GPL-3.0; the kernel driver (driver/) is MS-PL, derived from the Microsoft WDK samples and VirtualDrivers/Virtual-Audio-Driver. See LICENSE.
- Rust (stable, with
x86_64-pc-windows-msvc) - Node.js ≥ 20
- pnpm ≥ 10
- Visual Studio Build Tools with the Desktop development with C++ workload
- Windows Driver Kit (WDK) — only needed if you build the driver
# Install JS deps
pnpm install
# Run the app in dev mode (frontend HMR + Tauri)
pnpm tauri dev
# Frontend-only dev server (no Rust)
pnpm dev
# Production app build
pnpm tauri build
# One-shot full build (driver + frontend + Tauri app)
.\scripts\build.ps1
# Driver only (requires WDK)
.\scripts\build.ps1 -Target Driver
# App only (skip driver)
.\scripts\build.ps1 -Target Apppnpm lint # oxlint
pnpm fmt:check # oxfmt --check
pnpm test # Vitest (frontend)
cargo test --workspace # Rust unit + ABI tests
cargo fmt # rustfmtDriver integration tests run inside a VMware guest. Prerequisites: VMware Workstation + vmrun on PATH, driver build artifacts under driver/x64/Debug/package/, and a .env with VM_PASSWORD=....
.\.vm\setup.ps1 # one-time VM provisioning
.\.vm\test.ps1 # run all Pester suites
.\.vm\test.ps1 -TestFilter "*IOCTL*" # filter by Pester FullName
.\.vm\exec.ps1 "Get-PnpDevice -Class MEDIA"- Production-signed kernel driver (no more test-signing required)
- Per-edge sample rate conversion and bit-depth dithering
- MIDI-style modulation graph (control-rate edges) alongside audio edges
- More built-in processors: parametric EQ, limiter, noise gate, convolution reverb
- LV2 / CLAP plugin hosts in addition to VST3
- Multi-graph project files with per-graph enable/disable
- macOS port (Core Audio backend; virtual device support TBD)
- Real-time CPU and latency telemetry per node
