* fixed memory leaks that occurred when liblinuxsampler was unloaded
* fixed a memory leak that could happen when a channel was deleted
while notes were playing
* fixed memory management bug in ASIO driver
* optimized the SynchronizedConfig class so it doesn't wait
unnecessarily long after an update

* fixes in Ringbuffer.h:
- fill_write_space_with_null() did not zero out all the space
- operator--() did not apply size_mask after decrementing the read_ptr
(might fix bug #48)
- DEFAULT_WRAP_ELEMENTS set to 0 in order to avoid problems with
the _NonVolatileReader functions.

* code cleanup:
- global.h now only covers global definitions that are needed for the C++
API header files, all implementation internal global definitions are now
in global_private.h
- atomic.h is not exposed to the C++ API anymore (replaced the references
in SynchronizedConfig.h for this with local definitions)
- no need to include config.h anymore for using LS's API header files
- DB instruments classes are not exposed to the C++ API
- POSIX callback functions of Thread.h are hidden
- the (optional) gig Engine benchmark compiles again
- updated Doxyfile.in
- fixed warnings in API doc generation
* preparations for release 0.5.0

* the following LSCP commands now also support escape sequences for at
least one of their text-based arguments (i.e. name, description):
"ADD MIDI_INSTRUMENT_MAP", "SET MIDI_INSTRUMENT_MAP NAME",
"SET FX_SEND NAME", "CREATE FX_SEND"
* the LSCP spec doc now lists all LSCP commands which support escape
sequences as one of their arguments

* added default min and max values to restrict the number of allowed
audio output channels and MIDI input ports
* the connection to the PCM interface is now closed when destroying
an audio output device

* bugfix: The previous bindings were not been disconnected when
altering the ALSA_SEQ_BINDINGS parameter.
* Introduced a NONE keyword for unsubscribing from all bindings
(e.g. SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS=NONE).

* fixed a crash which occurs when changing the number of ports of a MIDI
device connected to a sampler channel to number less then or equal
to the index of the port to which the sampler channel is connected

* LSCP server returns verbose syntax errors (line and column where
syntax error occured, the unexpected character and the actually
expected, possible character(s), the latter only if less than 5
possibilities)

* minor fix in our automatic stack trace mechanism on crashes, the
main process did not wait for the stack trace process to finish
and thus killed the whole application before the stack trace was
completely shown on the console

* fixed several issues in fundamental "Thread" class: set scheduling
policy and priority on thread level, set a minimum stack size for
thread (TODO: a reasonable value yet to be tested), bugfix: non-RT
threads simply inherited properties of starting thread instead of
setting their own policy and priority
* updated and fixed test cases (haven't been touched in a while, but
are now all running successfully through all cases)

* added highly experimental support for on-the-fly instrument editing
within the sampler's process (by using instrument editor plugins),
you'll notice the new "Registered instrument editors:" message on
startup, the plugin path can be overridden at compile time with
./configure --enable-plugin-dir=/some/dir
* added a new LSCP command "EDIT INSTRUMENT <sampler-channel>" to spawn
a matching instrument editor for the instrument on the given sampler
channel (LSCP command syntax might be subject to change soon)
* config.h is not going to be installed along with liblinuxsampler's
API header files anymore (not necessary anymore)
* take care of $(DESTDIR) when creating the instruments DB on 'make
install' rule (needed for packaging and cross compilation)
* bumped version to 0.4.0.5cvs

* playback is no longer disabled during instrument loading
* all notes playing on a channel that changes its instrument keep
playing with the old instrument until they get a note off command
* new thread safety fix for lscp "load engine" and "set channel audio
output device"

* fixed global pan (CC10) which hasn't been working for a while
* fine tuning of the curves for volume (CC7) and pan (CC10 and gig
parameter)
* added support for the "attenuation controller threshold" gig
parameter

* implemented portamento mode and solo mode (a.k.a 'mono mode'):
all modes can be altered via standard GM messages, that is CC5 for
altering portamento time, CC65 for enabling / disabling portamento
mode, CC126 for enabling solo mode and CC127 for disabling solo mode
* fixed EG3 (pitch envelope) synthesis which was neutral all the time
* configure.in: do not automatically pick optimized gcc flags if the user
already provided some on his own (as CXXFLAGS)

* fixed event handling bug which was introduced by the recent synthesis
optimizations (events were only processed for the first active voice)
* added global volume attenuation of -9 dB (0.35f) to prevent clipping
which can be overridden with --enable-global-attenuation

* improved filter cutoff calculation by adding support for the
following gig parameters: Cutoff freq (used when no cutoff
controller is defined), Control invert, Minimum cutoff, Velocity
curve and Velocity range. The keyboard tracking now also scales
cutoff frequency, not just resonance.

added benchmark to automatically detect the best triangle LFO
implementation (currently either an integer math solution or a
di-harmonic approximation), automatic detection can be overriden
with --enable-signed-triang-algo=x and --enable-unsigned-triang-algo=x
configure script argument though (mandatory for cross-compilation)
---
actual implementation of the new LFO implementations in LS will follow soon

* support for muting sampler channels and solo mode of the same, two new
LSCP commands ("SET CHANNEL MUTE" and "SET CHANNEL SOLO") and two new
fields ("MUTE" and "SOLO") for command "GET CHANNEL INFO" were
introduced for this (patch by Grigor Iliev, a bit adjusted)

* if period time of chosen audio device is too small (< MIN_RELEASE_TIME)
then simply show a warning about possible click sounds and reduce the
volume ramp down appropriately instead of cancelling the audio device
connection

* fixed a key group bug which caused undefined behavior in conjunction with
stolen voices (this case was usually followed by a "killed voice
survived" or "voice stealing didn't work out" error message)

* support for the gig parameters for "release velocity response"
curves, which means the decay and release times now depends on
velocity. The softer velocity, the longer release.
* fine tuning of the envelope curves. Decay1 and release now have two
parts, first linear and then exponential at the end.