* 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 command return escape sequences in at least one
of their LSCP response fields: "GET ENGINE INFO", "GET CHANNEL INFO",
"GET MIDI_INSTRUMENT INFO", "GET MIDI_INSTRUMENT_MAP INFO",
"GET FX_SEND INFO", "GET SERVER INFO"
* listed all LSCP commands in the LSCP specs which may use escape
sequences in at least on of their response fields
* hide instrument editor related debug messages in the gig::Engine when
using the default debug level (which is 1)
* bumped version to 0.4.0.8cvs

* fixed egoistic --instruments-db-location command line switch ;-)
which caused all subsequent command line switches to be ignored
* the default location of the instruments DB file can now be overridden
with ./configure --enable-default-instruments-db-location=/foo/bar.db
* instruments DB feature can be disabled at compile time with
./configure --disable-instruments-db (i.e. for cross compilation)
* in case instruments DB feature is disable at compile time, don't
actually compile the instruments DB source files and don't install the
instruments DB API header files either

* 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

* Fixed a memory leak due to EngineFactory::Destroy() not doing it
as an actual destructor and just removing the engine instance from
factory stock and all instances allocated via EngineFactory::Create()
never got delete'd and thus their destructors never called. This bug
was evident while having many mapped instruments and querying the
instrument status via GET MIDI_INSTRUMENT INFO command, eating up
system memory very quickly and never let it go.

* 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

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 implementations of the new LFO solutions in LS will follow soon

* All compile time options are now centrally alterable as arguments to the
./configure script. All options are C Macros beginning with CONFIG_
prefix and will be placed into auto generated config.h file.

* [bug #9] Fixed for a LSCP command syntax convention
consistency, regarding the enumeration of available
sampler engines, Audio and MIDI drivers; this has
affected the semantics of the following commands:
GET AVAILABLE_ENGINES
GET AVAILABLE_AUDIO_DRIVERS
GET AVAILABLE_MIDI_DRIVERS
which are now returning an integer count of engines
and drivers, respectively, while the following
new commands are now being introduced:
LIST AVAILABLE_ENGINES
LIST AVAILABLE_AUDIO_DRIVERS
LIST AVAILABLE_MIDI_DRIVERS
taking on the previous functionality, returning
a comma separated list of names.
* LinuxSampler version bumped to 0.3.1.

* removed statically included libgig sources from the LinuxSampler code
base - you now have to compile and install libgig separately
* added -Wreturn-type gcc switch to avoid bugs with no returns on non void
functions in future

* design change: using now one sampler engine instance and one disk thread
instance for all sampler channels that are connected to the same audio
output device (and are using the same engine type of course)
* added EngineFactory / EngineChannelFactory to remove the annoying build
dependencies e.g. of the lscpserver to the actual sampler engine
implementations
* bumped version to 0.3.0 (current CVS state is still quite broken,
previous, stable CVS version was tagged as "v0_2_0" and is also available
as source tarball)

* Load Instrument patch applied; this patch makes the
LOAD INSTRUMENT command to return immediately,
almost/always with an OK response, while spawning
the proper instrument file loading in the background.
* New INSTRUMENT_STATUS field on GET CHANNEL INFO result
set; the instrument status value holds the load progress
percentage if positive, otherwise a negative value is
evidence of a load exception error.
* VERSION is now set to 0.2.

* src/common/Thread.cpp: method StartThread() now blocks until thread
actually runs, mlockall() will only be applied for realtime threads
* libtoolized liblinuxsampler
* initiated automatic unit tests against the LinuxSampler codebase
(see src/testcases): already added a couple of tests for the Thread and
Mutex classes, you have to explicitly compile the unit tests by running
'make testcases' (you need to have cppunit installed though) and then you
can run the console version of the test runner by calling
'src/testcases/linuxsamplertest'
* src/Sampler.h: added API documentation

* implemented parser for the LinuxSampler control protocol (LSCP) by using
flex / bison (where src/network/lscp.l is the input file for lex / flex
and src/network/lscp.y is the input file for yacc / bison), parser and
scanner can be regenerated by 'make parser'
* implemented LSCP network server (only single threaded so far), LSCP
server will be launched if LinuxSampler was started with "--server" flag,
implemented the following LSCP commands so far: "LOAD INSTRUMENT", "GET
CHANNEL VOICE_COUNT", "GET CHANNEL STREAM_COUNT", "GET CHANNEL
BUFFER_FILL", "SET CHANNEL VOLUME" and "RESET CHANNEL"
* disk thread now started within the engine

* implemented bidirectional voice state transition, means voice state can
switch arbitrary times between 'Sustained'<-->'Released' within it's life
time, thus the release process of a voice can be cancelled
* src/eg_vca.cpp: extended envelope generator by additional states
('Attack_Hold', 'Decay_1' and 'Decay_2')
* applied patch from Vladimir Senkov which adds new command line parameters
('--jackout', '--alsaout' and '--samplerate')
* configure.in: fixed compiler warning

* Added JACK support: Audio rendering process is now callback based and
independant of used audio output system. Interfaces to other audio output
systems can be added by creating a class derived from abstract base class
'AudioIO' and embedding the new class into linuxsampler.cpp.
* src/audiothread.cpp: applied patch from Vladimir Senkov which fixes
hanging notes in conjunction with the sustain pedal

* src/gig.cpp: fixed bug in decompression algorithm which caused it not to
detect the end of a stream and let the disk streams reload forever also
resulting in strange sounds at the end of disk voices (concerned only
playback of compressed gig files)
* src/audiothread.cpp: deallocation of voices when they reached the end of
playback (thus e.g. when sustain pedal is pressed and a disk stream
reached it's end)
* various endian corrections needed for non intel systems
* introduced debug level, you can set the debug level and thus the
verbosity of LinuxSampler in src/global.h