Log suggested and actual input/output audio latency

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Clean up MainWindow::Startup()

Display the audio configuration dialog if necessary and then always
display the connection dialog.  This saves users from manually doing
File | Connect...

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Augment sample rate autoselection with manual controls

Previously the PortAudio AudioStreamer attempted to autoselect good
sample rate and latency settings.  This worked fine on some systems but
ultimately left some users with non-functioning audio.

Move the autoselection code into PortAudioConfigDialog and add manual
controls to set the sample rate and latency.  Also check the audio
settings so that the "Apply" button is only enabled when the system
actually supports these settings.

Note that we still do autoselection by default when the user selects a
device, but they now have a change to manually select the sample rate
and latency.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add Mac OS X .dmg installer script

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add jammr icon for Mac

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Set reverse domain name in custom Info.plist

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Bring Windows installer dialog to front

The installer sometimes gets hidden behind the browser window.  Bring
the dialog to the front so the user sees the installer.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Do not require UAC elevation in Windows installer

There is no need for administrator privileges when running the client.
It's possible to install without administrator privileges too.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Delete log file in Windows uninstaller

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Delete settings registry keys in Windows uninstaller

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add desktop shortcut and launch to Windows installer

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add Settings dialog skeleton

Add an empty Settings dialog.  The audio and VST plugin configuration
dialogs will be converted into Settings dialog pages in later patches.

This change is necessary to make room for new features like MIDI.  We
don't want to add too many different configuration dialogs.  It's nicer
to have a single Settings dialog with different pages.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Convert VSTConfigDialog into VSTSettingsPage

Move VST configuration into a Settings dialog page.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Convert PortAudioConfigDialog to PortAudioSettingsPage

Move PortAudio configuration into the Settings dialog.  A few changes
are necessary because the old dialog lifecycle does not exist when
converted to a Settings dialog page:

The Apply/Cancel buttons are removed.  Therefore all changes have
immediate effect.  This is similar to the Google Chrome settings dialog.

The old dialog disabled the Apply button if the sound devices did not
support the current settings.  The new Settings dialog page has a QLabel
that tells the user whether or not these settings will work.  Invalid
settings can be saved but the an error dialog will be displayed before
bringing the user back to the audio settings.

Saving/loading QSettings has been adjusted so that settings are loaded
on startup and saved each time the Settings dialog is closed.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Fix unused argument warnings in PortAudioSettingsPage

These warnings existed before the PortAudioConfigDialog was turned into
PortAudioSettingsPage.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Check for VSTPluginMain symbol

Modern VST plugins use the VSTPluginMain entry point instead of main.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Save scanned VST plugins

Save VST plugin filenames and restore them from QSettings.  This
prevents rescanning on every launch.

The VST plugin filename is now displayed instead of the human-readable
name.  This reduces startup time since it avoids loading every VST to
query its name.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add Mac VST search support

VSTs are packaged like this on Mac:

  <vst-name>.vst/Contents/MacOS/<vst-name>

Modify the VST search algorithm to detect .vst directories on Mac.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Use platform-specific default VST search paths

On Mac and Windows there are default locations for VST plugins.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add ellipsis to "&Settings..." menu item

Dropped this by mistake when converting to the Settings dialog.

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