Networking for Audio Plug-Ins  Shane Dunne, ADC, London 2018
Copyright ©2018 Shane Dunne. All rights reserved.

Technical Summary

The basic Digital Audio Workstation (DAW) software architecture supports plug-ins—dynamically-linked software units which either generate or process audio data. Each plug-in typically contains two mostly-distinct parts which we refer to as Graphical User Interface (GUI) and the Digital Signal Processing (DSP).

The DAW program supports any number of plug-in instances in the memory of a single computer. Advanced plug-ins often place heavy demands on the computer's CPU, so there are practical limits to DSP setups.

To reduce the CPU burden, specialized DSP-acceleration hardware can be added to the DAW computer, but this is expensive, not only due to the cost of the hardware, but because it significantly raises software-development costs.

The author proposes that similar benefits can be obtained at far less cost using ordinary computers—commodity hardware—by allowing each plug-in's DSP code to run either locally (on the DAW computer, in the usual way), or remotely, in the form of a network service running on another computer on the same high-speed local-area network (LAN).

This approach offers several benefits:

Audio latency was discussed at some length in the presentation. Latency is primarily an issue for live recording, where the monitor-mix provided to artists must not lag their live performance by more than a few milliseconds. Three basic techniques were suggested, the first of which has already been implemented by the author.

  1. The plug-in remains one buffer behind the remote DSP module, so the effective latency is always exactly one buffer-interval (determined by DAW settings, no more than 12 milliseconds).
  2. Chaining connected DSP modules on the server-side avoids unnecessary round-trip network communication, avoiding the resultant compounding latency.
  3. Low-latency monitor mixes (for performer feedback during recording) can be computed on the server side, and fed back to the control room using standard connections (e.g. MADI or Audio-over-Ethernet).

These ideas are not new. Most were implemented in Apple's Logic Pro 7 DAW as early as 2004, but with no support for third-party plug-ins, its networking features went largely unused. The excellent Vienna Ensemble Pro 6 software provides remote access to plug-ins on networked computers, as does the author's NetVST project, but neither allows plug-in GUIs to remain local to the DAW machine.

The presentation included a pre-recorded video demonstration, and a live demo setup was available for participants to try during the coffee break which followed. The demonstrated code is available on GitHub under the MIT license, which permits use in closed-source commercial projects, and everyone is invited to experiment with it for themselves.

Modifying existing plug-ins built with JUCE is a fairly simple process with just a few steps

The demo code is deliberately simple, to avoid obscuring the basic principles. Considerable refinement will most likely be needed to bring the implementation up to commercial expectations for robustness and ease-of-use.