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.

Turn NetVST plugins OFF before quitting NetVSTHost

NetVSTHost acts as a port listener (server); the NetVST plugins NetFilter and NetSynth are its clients.

It's safe for a client to shut down its end of the socket connection; this is what happens when you turn the plugin's "on/off" setting to OFF. (It also happens automatically if the plugin instance is destroyed by the DAW.)

It is NOT safe for the server to shut down its end of the socket connection while clients are still sending/receiving data. This can cause the DAW to hang or crash.

To avoid this, always switch OFF all NetFilter/NetSynth plugin instances BEFORE quitting the NetVSTHost program they're connected to.

Synergy controls 2+ computers with 1 mouse/keyboard

Synergy is a $20 software product from UK company Symless, which allows you to use just one mouse and keyboard to control two or more computers. Any combination of Windows, Macintosh, or Linux machines can be used.

With Synergy, you still need a separate monitor for each machine, but you can just roll your mouse seamlessly from one to another. Wherever the mouse pointer is, you can click and type. I find it very convenient for using Logic Pro X on my Mac at the same time as NetVSTHost on a Windows PC.

Click on the title above to go to the Symless web site. Ignore their videos, where they they try far too hard to sell you the Synergy product. Just buy it. It works fine, and it's well worth the $20.

Notes on the AU plugins

The Audio Unit plugins NetFilter and NetSynth have been compiled under Xcode 3.2.6, to allow compatibility back to Mac OS X 10.5 (Leopard). They are "fat binaries", meaning they contain both 32-bit and 64-bit code.

NetFilter can only handle one configuration: stereo-in, stereo-out. If you try to use it on a Logic Pro channel strip which is mono, Logic will offer you the option to load it as "mono", but then it will fail and Logic will crash. This is exactly the kind of "dumb" limitation you can expect with such early-stage code, and I promise to fix it soon. In the meantime, the workaround is to convert the mono channel to stereo, by putting in an instance of Apple's Gain plugin, in "mono->stereo" mode. (Click on the insert button to add a new effect to the track, go to the Utility menu group, choose Gain and then mono->stereo.) The Gain plugin must come before NetFilter in the signal chain.

NetSynth also supports only one configuration: zero (audio) inputs, stereo output. Hence it's important to ensure that your VST chain in NetVSTHost is producing a stereo output. (This will be the case for most VSTi synthesizer plugins, so it's not a big issue.)