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.

NetVSTHost works on Linux/Wine

I tried running NetVSTHost on a PC under Linux Mint 18 with Wine. The stock Wine version for Mint 18 is still 1.6, which is not adequate. However, updating to the latest stable version 2.0.1 allowed me to run NetVSTHost (with SynthEdit-built plugins) without any real trouble.

This is quite promising. While MS Windows is, naturally, the most "Windows compatible" PC OS, it's not always the ideal choice for PCs used as VST servers. I prefer older versions of Windows (mainly Windows 7), but that is now not only unsupported, but virtually unobtainable. Linux Mint 18 is a viable alternative.

Interestingly, the audio latency using NetVSTHost across a LAN to another computer is far less than when playing the same VST direct to the Linux PC's sound card. Most Linux distros have very bad audio latency to the sound card, which NetVSTHost avoids entirely, as it relies only on network APIs.

Compression not useful?

After quite a bit of work to incorporate David Bryant's WavPack compression library into NetVST, I have to say that at least so far, it's not useful. It increases CPU usage a lot, but provides no benefit in this application.

I recommend setting your Audio Quality selections to maximum ("no compression") at all times.

I thank Mr. Bryant for his kind assistance, and I will continue to research this issue.

Sending PC monitor signals over Cat5 cable

In an earlier post, I talked about finding a commercial remote-desktop software solution inadequate for a studio setup where VSTs run on a PC in a different room from the DAW machine(s).

The A/V industry offers a practical alternative, in the form of some interesting devices to send PC video signals over long distances using the same Cat5 cables used for Ethernet LANs.

There is some interesting discussion of the issues at this page on Ars Technica, and a selection of relevant products available from the Black Box Network Services site.

Testing NoMachine remote desktop

Today I tested NoMachine. This excellent (and free!) remote-desktop software solution allows you to control one computer (e.g. a Windows PC) from the desktop of another (e.g. a Mac), using secure network connections.

It works well, even across Wi-Fi connections. It allows you to, e.g., make adjustments to VST GUIs in NetVSTHost (or NetVSTHost's own GUI) from the screen of your Mac or Windows client computer, without having to have the NetVSTHost PC physically close enough to use a directly connected monitor.

BUT, it does interfere with NetVST connections a little. AU Lab on the Mac reports occasional "overload" conditions, meaning that the PC is not able to provide new blocks of audio fast enough.

WavPack compression added

I have now added options to compress audio data to reduce network bandwidth, based on David Bryant's excellent WavPack compression library.

The following compression levels are available:

  1. Low quality: lossy compression, about 8:1 ratio
  2. Medium quality: lossy compression, about 5:1 ratio
  3. High quality: lossy compression, about 3:1 ratio
  4. Lossless: lossless compression, about 1.7:1 ratio
  5. No compression: 1:1 ratio

You will find it hard to tell the difference among these various options. WavPack's algorithms add none of the dreadful "bubbling" artifacts found in other audio compression methods. The only artifacts of stronger compression levels are a kind of white noise similar to old-fashioned analog tape hiss.

You would normally develop your tracks using Low or Medium quality, to minimize network bandwidth, and switch to Lossless or No Compression only for track bouncing and final mix/bounce. During non-realtime bounce operations in e.g. Logic Pro X, it doesn't matter how long plug-ins take to render audio, so you don't have to care about network bandwidth.