Software audio routers
Patch cables for the cable-averse
June 3, 2017 — December 15, 2023
Audio routers are patching writ large.
Audio routers are “virtual cables” that route audio out of limited parochial software into differently limited parochial software, giving us flexibility in our audio process at the cost of confusion and labour. Using audio effects software to apply effects to audio synthesis software doesn’t sound like a weird idea, but it turns out to be tedious.
There are many software solutions that I am aware of, with different reliability, licensing, and platform support.
2023 update: Streamlined solutions for Twitch and game streamers have leveled up the ease here, often free.
- RØDE’s UNIFY — Virtual Mixing Software for Streaming and Content Creation is free and seems easy, designed to route output from some apps and mix it with some real audio inputs.
BlackHole
“is a modern MacOS virtual audio driver that allows applications to pass audio to other applications with zero additional latency.”jack
(open source, Windows, macOS, Linux, powerful but unfriendly). In theory, it can do everything I want, but in practice, I cannot see how to make it do that, and when I can, I cannot make it stable. When I get it doing what I want stably, I cannot work out how to easily reproduce it again in any subsequent session.- loopback (commercial, macOS)
- soundflower (free, macOS, flaky)
- VB Audio Cables (donationware, Windows/macOS)
- Audiobus, the iOS router, which I have no use for at present.
For a taste of the kind of work needed to make this go in practice, here are some example configs:
1 By platform
Breaking it down by platform:
1.1 macOS
Jack on macOS works now. For a few years its only working version was hidden deep in the GitHub bug reports. Development on this project stutters. But it seems to be the most flexible and most cross-platform. Sometimes it is too flexible, requiring much confusing configuration through a horrible GUI.
BlackHole is new and I have not tried it yet.
Soundflower is inflexible and periodically unmaintained despite intermittent commercial backing. Fragility hell in these free options is avoided somewhat by Loopback, a rather expensive commercial competitor which is maintained, but AFAICT doesn’t have the flexibility of Soundflower as far as routing audio from an app back to the app as with external apps, and seems to only do stereo. Maybe owners Rogue Amoeba will use that funding to keep maintaining their product, having ruined Soundflower on their own watch? But should I reward that behaviour by buying a license?
Apparently I did. VB Audio Cables is also real.
1.2 Linux
See Linux audio hell. In principle, Jack should work well there, relatively speaking, as it comes from Linux.
1.3 Windows
Jack seems to work on Windows. But there is also… VB Audio Cables which is by many accounts a viable workalike for Windows.
2 Jack
JackAss routes MIDI from jack-blind hosts:
JackAss is a VST plugin that provides JACK-MIDI support for VST hosts. Simply load the plugin in your favourite host to get a JACK-MIDI port. Each new plugin instance creates a new MIDI port.
internal routing with JACK explains why you can’t make it do what you expect with routing sub-buses to different apps — you need lots of virtual channels:
With a basic implementation of JACK now set up, we can begin to tweak JACK to our needs—internal routing. For those of you with larger 8-channel interfaces, you probably have noticed a slight problem with JACK: you do not have all eight microphone inputs available anymore! This is because we need to tell JACK how many inputs we want (both in and out).
For OS X users, simply adjust the Virtual I/O settings under Preferences until your hearts content and you should be good to go. For Linux and PC users however, things are not so easy. While the Channel I/O option sounds like a perfect match, it really does nothing most of the time. Instead we need to edit an .INI file.
- Close down JACK, as well as any connected apps.
- Go to where you installed JACK (most likely C:Files(x86)).
- In the 32 or 64 bit folder (depending on what version you are using) there is a file called JackRouter.ini
- Open JackRouter.ini with Notepad, and change the input and output values to however many channels you want. Presto!
- Restart Jack Control, enter your DAW, and you should now have a multitude of inputs and outputs at your disposal.
perhaps this is /etc/jackdrc
and ~/.jackdrc
on Ubuntu?
3 iOS
-
iOS routing board.
Connect hardware inputs and outputs, Audio Unit extensions, Inter-App Audio apps, Audiobus, soundfile players, built-in signal processing and filters, in any configuration you want.
Route anything to anywhere with mix-busses, effect sends, audiobus ports, and external multi-channel audio interfaces.
Play hosted synths and instruments using the built-in keyboard or external MIDI controllers, or sequence them from other apps using Virtual MIDI.
Record mixes, individual tracks, or both, straight into the storage space of AudioShare (no copying of files needed), with synchronized start and end.
Play back recordings, soundfiles and loops as channel sources in the mixer for backing tracks, further processing or mixing.
Route MIDI in any way you like using the MIDI matrix.