Skip to content

About

A macOS virtual Core Audio device and routing control panel for multiple audio interfaces.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

18 Commits

Folders and files

Repository files navigation

StudioPatch icon

StudioPatch

A virtual audio device and patchbay for macOS that combines channels from several audio interfaces into one device, in the order you choose.


Status: experimental (0.2.0). StudioPatch installs a Core Audio driver and a privileged helper. It has been tested on one studio setup and has no prebuilt releases: you build and sign it yourself. Read Docs/STATUS.md before relying on it.

Why

If you record with more than one audio interface on a Mac, your DAW usually sees either one interface at a time or a macOS aggregate device that lists every channel of every interface in a fixed order. Neither gives you a short, named list of exactly the inputs and outputs you use.

StudioPatch gives your DAW a single device called StudioPatch with exactly the channels you choose. You decide in a routing matrix which hardware channel feeds which device channel, and the DAW shows your own names, such as "Vocal mic" or "RE-201", for them.

The StudioPatch control panel: interfaces and sync settings on the left, the To Computer routing matrix on the right

Features

  • One virtual device, your channel layout. 0–128 inputs and 0–128 outputs, chosen independently, filled from any channel of any connected interface.
  • Routing matrix for each direction. One source per destination, unlimited fan-out, and no mixing, gain or other processing.
  • Your names in the DAW. Label interface inputs and outputs across presets, then copy names in either direction between Source and Destination. Mismatching labels are orange; click the one to keep. Virtual channel labels can also be edited directly.
  • Low added latency. The Sync Source interface is read directly through shared memory, without resampling. Measured: +0.67 ms round trip at 96 kHz and +1.33 ms at 48 kHz compared with using the interface directly (details).
  • Honest latency reporting, so DAW recording compensation keeps working.
  • Sample rate follows your DAW. Change the rate in the DAW or the panel; the Sync Source and locked interfaces follow. If the Sync Source cannot change, everything stays at the previous rate and you are told why.
  • Runs in the background. Audio keeps running after you close the control panel and starts at login.
  • Survives unplugging. A disconnected interface keeps its routes and labels (greyed out). The preset’s virtual device leaves Core Audio until every selected interface is back and routing is ready; a notification reports the removal.
  • Autosave and presets. Every change is saved immediately; named presets let you switch between setups.

Audio MIDI Setup showing the StudioPatch device with 46 inputs named after the user's labels, such as RE-201, Prophet 6 L and TR-1000 R
The StudioPatch device in Audio MIDI Setup: every channel carries the label set in StudioPatch.

How it works

Audio interfaces ◄──► StudioPatchService ◄── shared memory ──► StudioPatch driver ◄──► Your DAW
                      (background engine)                      (inside Core Audio)
                             ▲
                     StudioPatch.app (control panel: routing, labels, presets)

The control panel saves your configuration. A background service does the real-time audio work, and a Core Audio driver publishes the virtual device. A small root helper (the broker) connects the service and the driver to the same shared memory after checking their code signatures. Details are in Docs/ARCHITECTURE.md.

Requirements

  • macOS 14 Sonoma or later (developed and tested on Apple Silicon)
  • Xcode or the Command Line Tools, CMake 3.20+, Python 3
  • An Apple code-signing certificate (a free Apple Development certificate works)
  • Administrator rights to install the driver

Quick start

git clone https://github.com/stephanterning/StudioPatch.git
cd StudioPatch

export STUDIOPATCH_SIGNING_IDENTITY="Apple Development: Your Name (TEAMID1234)"
bash Scripts/build.sh                       # build, run tests, sign into Dist/

sudo bash Scripts/install-transport.sh      # broker
sudo bash Scripts/install-driver.sh         # Core Audio driver
bash Scripts/install-service.sh             # background service (no sudo)

Restart the Mac, open Dist/StudioPatch.app, select your interfaces and a Sync Source, and choose StudioPatch as the audio device in your DAW.

Review the install scripts before running them with sudo, and keep the clone where it is: the background service runs from Dist/. Updating, uninstalling and troubleshooting are covered in Docs/INSTALLATION.md.

Just want to look at the code or run the tests? You don't need a certificate. See CONTRIBUTING.md.

Documentation

License

StudioPatch is licensed under the GNU Affero General Public License v3.0 only.

It includes libASPL by Victor Gaydov and contributors (MIT License, with Apple sample-code licenses), vendored with local changes in Vendor/libASPL/.

StudioPatch is an independent project and is not affiliated with Apple, RME or Allen & Heath.

About

A macOS virtual Core Audio device and routing control panel for multiple audio interfaces.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages