NetVST is now part of AudioKit

AudioKit is an open-source framework to facilitate audio/music app development on Apple platforms, including Macintosh OSX, iPhone and iPad. I was recently invited to join the AudioKit core team, and I'm focusing my effort on expanding the "core" parts of the framework to other platforms, including Windows and Linux.

To this end, I've created a new code repository on GitHub called AudioKitNet, where I'm exploring how plugin vendors can modify their existing plugins to allow the DSP work to be done on servers.

NetFilter/NetSynth now have custom GUIs

Originally, the NetSynth/NetFilter plugins didn't provide a custom GUI, so you were stuck with whatever generic GUI your DAW provided. This turned out to be very clumsy for entering IP addresses and port numbers.

As of the December 24, 2017 update, both the AU (Mac) and VST (Windows) plugins provide a simple GUI to specify the IP address and port number for the remote server (NetVSTHost instance).

The Windows GUI looks like this, and you enter a single string e.g., then hit Update.

Windows GUI

The Mac GUI is almost the same, but has separate input boxes for the four IP address numbers and the port number; otherwise, it works the same.

enter image description here

NetVSTHost now runs on the Mac!

NetVSTHost is written for Windows, but the .exe can run under Linux and Mac OS using Wine. Setting up Wine to run 32-bit, network-capable .exe's under a 64-bit operating system can be a challenge, to say the least. However, thanks to Mike Kronenberg's incredible new WineBottler tool, the whole process is largely automated, yielding a standard Mac OS app bundle, which can be double-clicked just like a native Mac application, and opens NetVSTHost (running inside Wine). Color me impressed!

Don't mix LAN speeds

I tried running NetVSTHost on a 2014 HP Windows laptop, connected to a very new gigabit-Ethernet switch along with an older Mac Mini client, and the performance was terrible!

It turned out that although the old, Core Duo Mac Mini from 2006 had a gigabit Ethernet port, the much newer HP laptop only had a 10/100 port. As a result, the switch had to fully receive each packet and re-send it at the different speed -- in both directions -- resulting in huge latency.

The lesson is, make sure all devices on your NetVST LAN are running at the same speed -- preferably 1 gigabit/sec.

CPU usage hugely reduced

I'm very happy to report that by rearranging the order of network operations slightly, I have been able to bring the plugins' CPU usage down to essentially zero.

The original NetVST implementation was pretty good, but CPU usage of the plugins (especially on the Mac) was stubbornly high, around 15%. At that rate, it didn't seem practical to use many plugin instances. With the newest implementation, this issue is gone.

Head to the wiki downloads page to get the updated NetVST and plugins. Note you must update both the NetVST Windows executable and all NetVST plugins, because this change breaks backward compatibility.

VST GUI on one PC, DSP on another

I have made a small but important step. In an unpublished experimental version of NetVST, I have added support for parameter automation and patch-selection to the protocol.

I have also created a new "NetWrapper" VST plugin, which "wraps" another selected plugin. That is, it acts as a simple VST host, loads the selected plugin and then passes most communications through to it. In this way, the actual VST host sees the NetWrapper instance as though it were the wrapped instance, and is able to open its GUI. MIDI and audio data, parameter changes, and patch selections are streamed across the network to another instance of the wrapped plugin.

By using two complete plugin instances, on two computers, we can thus run the plugin GUI on one machine (e.g. in a DAW host), and the DSP on the other.

There is a very short demo video on YouTube.

Why is this important? In all previous NetVST work, a second (third, etc.) PC used to run plugins must be directly accessible to the user of the first PC, which at the very least, makes for a cluttered desk. This new approach means that, in principle, the DSP computer need not even be in the same room. Indeed, it need not even have a screen at all.

This is an important step toward the NetVST Project vision of putting DSP code onto "headless" network servers.

Vienna Ensemble Pro 6

I recently learned about Vienna Ensemble Pro 6 (VEP6), which is commercial software that does everything NetVST does, and more. With the manufacturer's kind permission I tested the 30-day free trial version.

VEP6 is a bit expensive, but for professional users it will be well worth the price. It works very well, and can bridge between PCs, Macs, 32/64-bit, VST and AU in all combinations. Impressively, VSE has managed to reduce its CPU overhead to near-zero.

For non-professional users, the price may simply be too high. 275 Euro for the software itself, and then you need a USB dongle (either VSE's own or a Steinberg eLicenser Key) for every machine you want to use as a server. This brings the total price to about $400 USD, though VSE does sweeten the deal by including one license for their Epic Orchestra sample library and player.

Bottom line: If you're a professional composer, buy VEP6--it's excellent. If you're not a pro yet, but hope to become one, especially as a composer for film/TV where you'll need heavy-duty orchestra samples, think seriously about VEP6. Otherwise, use NetVST.