Add NJClient::GetSampleRate()

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add VeSTige aeffectx.h GPL header file

The Steinberg VST SDK is not license-compatible with the GPL.  Open
source applications including Ardour and LMMS therefore use the
"VeSTige" reverse-engineered header file.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add VSTPlugin class

The VSTPlugin class represents a plugin instance.  It can launch the
editor GUI and send audio through the plugin.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add VSTProcessor class to apply VST effects

The VSTProcessor handles audio processing for a chain of VST plugins.
The user can use multiple plugins in a virtual signal chain, like an
amplifier and reverb.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add AddVSTPluginDialog for selecting VST plugins

VST plugins are dynamic libraries that may be installed anywhere.
Therefore we need a way to search for them and allow the user to select
a plugin to load.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add VSTConfigDialog for setting up an effects chain

Multiple VST plugins can be active at once.  The audio flows through
them in a simple signal chain.  This makes it possible to use an
amplifier plugin together with a reverb plugin, for example.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add "Configure VST..." menu item

The File | Configure VST... dialog allows the user to edit the VST
plugin signal chain.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Choose best available host API on first start

Users are often confused between the different audio host APIs available
on their platforms (e.g. WinMME, DirectSound, WDMKS, WASAPI, ASIO).
They may choose an API with poor latency and get a poor playing
experience.

Pick the default host API on behalf of the user.  This way most users
automatically see the best host API for their platform.  The list of
host APIs is prioritized as follows:

Windows: WinMME < DirectSound < WASAPI < WDMKS < ASIO
Linux: OSS < ALSA < JACK
Mac: SoundManager < CoreAudio

Note that although WASAPI is a newer API than WDMKS, in my testing WDMKS
has worked more reliably.

Also note that JACK only appears on Linux if the JACK daemon is running.
Therefore users typically see ALSA by default (which is a fair choice)
but JACK will take priority if the daemon is running (which is usually
what the user expects).

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>