Splitwave is a node-based audio router for macOS, Linux, and Windows. Wire microphones, system audio, per-app capture, and WAV files into a visual graph, run them through a chain of effects — EQ, compression, reverb, limiting, and more, plus your own CLAP, VST3 and AU plugins — then send the result to speakers or record it in WAV, FLAC, AIFF, MP3, Opus, or AAC.
Jump to: macOS · Linux · Windows
Want to build the app or contribute? See docs/DEVELOPMENT.md and docs/CONCEPT.md.
Download the latest .dmg from Releases,
open it, and drag Splitwave to Applications.
macOS will block the app on first launch ("cannot verify developer") because the binary is not notarized. To allow it, run once in Terminal:
xattr -cr /Applications/Splitwave.appThen open Splitwave normally.
After each update, Screen Recording permission resets (macOS revokes it when the binary changes and the app is unsigned). To re-grant it: open System Settings → Privacy & Security → Screen Recording, click − to remove Splitwave, then click + and add it back.
Requires a PipeWire-based audio session (default on most current distros).
Device-volume control additionally needs the PulseAudio compatibility layer
(pipewire-pulse, also default on most distros).
Download the build for your system from Releases:
- AppImage —
chmod +x Splitwave_*.AppImage && ./Splitwave_*.AppImage .deb(Debian/Ubuntu) —sudo apt install ./Splitwave_*.deb.rpm(Fedora/RHEL/openSUSE) —sudo rpm -i Splitwave-*.rpm
Requires Windows 10 version 2004 or newer (for per-app capture) and the
WebView2 runtime
(preinstalled on current Windows 10/11). Download the .exe installer from
Releases and run it.
To expose a Splitwave output as a microphone:
- Open Virtual devices and choose Install virtual microphone.
- Complete the VB-CABLE installer.
- Restart Windows if Splitwave shows Restart required.
- Select
CABLE Inputin a Speaker node. - Select
CABLE Outputas the microphone in the target app.
VB-CABLE is third-party donationware; see its official page for licensing and support.
| Feature | macOS | Linux | Windows |
|---|---|---|---|
| Mic / speaker device I/O | ✅ | ✅ | ✅ |
| System audio capture | ✅ ScreenCaptureKit | ✅ PipeWire | ✅ WASAPI loopback |
| Per-app audio capture | ✅ ScreenCaptureKit | ✅ PipeWire | ✅ Process Loopback (Win10 2004+) |
| App icons in the picker | ✅ | ✅ | ✅ |
| Device volume control | ✅ | ✅ | ✅ |
| Recording: WAV / FLAC / AIFF / MP3 / Opus | ✅ | ✅ | ✅ |
| Recording: AAC (M4A) | ✅ | ❌ | ❌ |
| Virtual audio devices | ✅ AudioServerPlugin | ✅ PipeWire null-sinks | ✅ fixed VB-CABLE microphone |
| Effects, metering, file playback | ✅ | ✅ | ✅ |
| CLAP plugins | ✅ | ✅ | ✅ |
| VST3 plugins | ✅ | ✅ X11 | ✅ |
| Audio Unit plugins | ✅ | ❌ | ❌ |
- Inputs: microphones, system audio, per-application audio, WAV files, virtual device loopback
- Outputs: physical speakers/interfaces, file recording in WAV (16/24-bit PCM + 32-float), FLAC, AIFF, Opus, MP3, AAC (M4A), virtual devices
- Effects: Gain, Mute, Channel Balance, Saturator, 10-band Graphic EQ, Brick-wall Limiter with look-ahead, Compressor (with sidechain), Noise Gate (with sidechain), Noise Suppressor, De-esser, Declick, Stereo Delay, Algorithmic Reverb (Freeverb), Level Meter, EBU R128 LUFS Meter, Waveform and Spectrum analyzers
- Plugins: host your own CLAP and VST3 plugins (all platforms) and Audio Unit plugins (macOS) as effect nodes, with the native editor embedded in the app, parameters editable in the node, and plugin state saved with the pipeline. On Linux, plugin editors need an X11 session (XWayland works); VST3 defines no Wayland embedding
- Presets & templates: shared effect presets with factory defaults, plus ready-made pipeline templates in the create flow
- Virtual devices: create named virtual audio devices that appear system-wide on macOS and Linux. Windows uses the single fixed VB-Audio VB-CABLE pair as a managed virtual microphone; it does not provide arbitrary named Windows devices.
System and per-app capture use ScreenCaptureKit on macOS, PipeWire on Linux, and WASAPI loopback / the Process Loopback API on Windows. Virtual devices are AudioServerPlugin drivers on macOS and PipeWire null-sinks on Linux. Windows uses VB-Audio VB-CABLE through the existing WASAPI output path.
- Frontend: Svelte, Tauri, @xyflow/svelte
- Engine: Rust --
rtrb(SPSC ring buffers),rubato(resampling),hound(WAV),flac-codec,opus,mp3lame-encoder,ebur128 - macOS:
cpaldevice I/O; custom Swift static library for ScreenCaptureKit, compiled bybuild.rsviaswiftc; CoreAudio HAL FFI for device enumeration; libASPL-based AudioServerPlugin for the virtual device driver - Linux:
pipewirefor device I/O, system/app capture, and virtual null-sinks;libpulse-bindingfor device-volume control (talks topipewire-pulse);freedesktop-desktop-entry/freedesktop-iconsfor app icons - Windows:
cpal(WASAPI) device I/O; thewindowscrate for WASAPI loopback + Process Loopback capture,IAudioEndpointVolume, audio-session enumeration, and exe icon extraction (pngfor encoding)
Want to build the app or contribute? See CONTRIBUTING.md.
Splitwave is licensed under MIT.
Third-party component notices (LGPL, MPL-2.0, etc.) are in NOTICE.
Support the ongoing development of Splitwave on Patreon to have your avatar and link featured here!
Questions, bug reports, and feature requests go through the issue tracker; for anything else, email support@splitwave.app.
If you find this app useful and want to help keep it going, consider supporting us:
- Patreon: patreon.com/cw/splitwave
- or crypto donation:
- Tether USDT (TRC20):
TLhTvnn8CtVuQZruLXmRurGhR9GWd7DrWZ - TON:
UQCpokpaZfwmVTjKDj0LrAbEPO-65c81-MiuBQOa7lTXbMGR - Bitcoin (BTC):
bc1q6tusr5rht7dgmw8gqzkx7rwdg4q8932lwn2rsy
- Tether USDT (TRC20):
