* Added new C++ API class "ScriptVMFactory".
* Instrument Scripts: extended parser issues to provide not only first
line and first column, but also last line and last column of issue
(thus marking the precise span of the issue within the source code).
* Bumped version (2.0.0.svn7).

* All engines: Active voices are now internally grouped to "Note" objects,
instead of being directly assigned to a keyboard key. This allows more
fine graded processing of voices, which is i.e. required for certain
instrument script features.
* Built-in script function "play_note()": Added support for passing
special value -1 for "duration-us" argument, which will cause the
triggered note to be released once the original note was released.
* Bumped version (2.0.0.svn3).

* Instrument editor interface: Changed instrument editor plugin interface,
providing additional informations like the EngineChannel for which the
instrument editor was spawned for. This allows the instrument editors to
interact more actively with the sampler.
* Bumped version (1.0.0.svn60).

* LSCP shell (WIP): Added initial support for built-in LSCP reference
documentation, which will automatically show the relevant LSCP reference
section on screen as soon as one specific LSCP command was detected while
typing on the command line.
* Bumped version (1.0.0.svn37).

* sfz parser bugfix: generation of velocity curves etc should not be
done after each "#include", only after the main file is parsed
* sfz parser bugfix: line numbers in error messages were wrong after
"#include"
* disabled build of LSCP shell on windows

* LSCP Server: Fixed bug in LSCP grammar definition which caused a
statement like "GET SERVER INFOasdf\n" to be accepted as valid
statement (was so far practically irrelevant, however it caused
problems with the following new LSCP shell's auto completion
feature).
* LSCP shell: improvement of auto completion feature, which now
not only resolves the next LSCP command token, but the longest,
unique sequence of LSCP commands expected next. Accordingly it
can now auto complete an entire line.
* Bumped version (1.0.0.svn33).

* WIP: LSCP Shell: implemented support for auto-correction of
obvious and trivial LSCP syntax mistakes, support for
auto-completion by tab key and visual completion suggestion
while typing.
* Bumped version (1.0.0.svn29).

* WIP: Introducing the LSCP shell: for now, providing color
highlighting while typing (indicating correct part bold white,
incorrect part red, and turning green when the command is
complete. The shell application is implemented as thin client,
that is the parser work is performed on sampler side and the
shell application is just providing output formatting.
* Bumped version (1.0.0.svn28).

* Added support for multiple MIDI input ports per sampler channel (added
various new C++ API methods for this new feature/design, old C++ API
methods are now marked as deprecated but should still provide full
behavior backward compatibility).
* LSCP Network interface: Added the following new LSCP commands for the new
feature mentioned above: "ADD CHANNEL MIDI_INPUT",
"REMOVE CHANNEL MIDI_INPUT" and "LIST CHANNEL MIDI_INPUTS". As with the
C++ API changes, the old LSCP commands for MIDI input management are now
marked as deprecated, but are still there and should provide full behavior
backward compatibility.
* New LSCP specification document (LSCP v1.6).
* AbstractEngine::GSCheckSum(): don't allocate memory on the stack (was
unsafe and caused compilation error with old clang 2.x).
* Bumped version (1.0.0.svn25).

* lsatomic.h fixes: seq_cst load and store were suboptimal for x86 and
broken for ppc64. (Seq_cst loads and stores are actually not used in
LS, so the bug wasn't noticable.)
* lsatomic.h: added ARMv7 support

* VST: implemented retrieval and switching of programs using the
sampler's internal MIDI instrument mapping system
* VST: reply to "canDo" plugin features we don't know as "don't know"
* bumped version to 1.0.0.svn19

* LV2: use urid and atom extensions instead of deprecated uri-map and
event
* LV2: lv2 package 1.0 is now required to build the LV2 plugin
* LV2: changed number of output channels to 16 stereo, just like the
VST and AU plugins

* fixed configure script error with old autoconf versions
* LV2: use the new lv2 package if present
* lsatomic.h: use gcc provided atomic functions if building with gcc
4.7 and C++11
* added comments in lsatomic.h

* Introduced new C++ API method EngineChannel::InstrumentFileName(int index)
allowing to retrieve the whole list of files used for the loaded
instrument on an engine channel (a.k.a. part). Some GigaStudio instruments
for example are splitted over several files like "Foo.gig", "Foo.gx01",
"Foo.gx02", ...
* Bumped version to 1.0.0.svn18

* sfz engine bugfix: looping was disabled if loop_start was set to 0
* sfz engine: allow regions with end=-1 to turn off other regions
using the group and off_by opcodes (#168)
* sfz engine: made end=0 play the whole sample
* sfz engine: fixed support for lochan and hichan opcodes (#155)
* bumped version to 1.0.0.svn17

* Bugfix: When creating MIDI instrument map entries with "PERSISTENT"
type, the instruments were uselessly precached with zero samples,
however it still took the full preloading time and on 1st program
change the respective instrument was completely reloaded again.
* Bumped version to 1.0.0.svn15

* Introduced Signal Units and Signal Unit Racks, which hopefully will meet
the demands of the new engines for flexible signal processing.
* sf2: Initial implementation of vibrato LFO, fixes in modulation EG and
and volume EG (work in progress)

* AU: changed number of output channels from one stereo to 16 stereo
* VST: made it possible to build the VST plugin for Mac
* AU: link AU plugin dynamically if --disable-shared isn't specified
* minor Makefile fix for building lscpparser when build and source
directories are separate

* Mac OS X fixes: support the new dir for Core Audio SDK, fixed name
collision of enum in EffectControl, fixed building outside source
directory, fixed wrong name of destructor in
AudioOutputDeviceCoreAudio.cpp
* made sure all source files for hostplugins are included when doing
"make dist"
* removed empty directories left from the cvs to svn migration

* revised previously added new LSCP commands regarding effect handling:
renamed "master effects" to "send effects", since this is the actual
correct common term for those effects
* also corrected the names regarding "send effects" in the respective
methods of the "FxSsnd" class and "AudioOutputDevice" class of the
sampler's C++ API, the old methods are still available but marked as
deprecated and scheduled for removal
* added LSCP command "SET FX_SEND SEND_EFFECT <sampler_channel>
<fx_send_id> <effect_chain> <chain_pos>"
* added LSCP command "REMOVE FX_SEND SEND_EFFECT <sampler_channel>
<fx_send_id>"
* added a list of common known LADSPA paths (for Windows and POSIX) which
will be automatically checked for being used as LADSPA plugin directory
(if the user did not set the LADSPA_PATH environment variable explicitly)
* bumped version to 1.0.0.cvs8

* implemented Roland GS NRPN 1ArrH which allows to set volume per note
* implemented Roland GS NRPN 1CrrH which allows to set pan per note
* implemented Roland GS NRPN 1DrrH which allows to set reverb send per
note (in this implementation of the sampler its simply hard routed to
the 1st effect send of the sampler channel, no matter what the actual
effect type is)
* implemented Roland GS NRPN 1ErrH which allows to set chorus send per
note (in this implementation of the sampler its simply hard routed to
the 2nd effect send of the sampler channel, no matter what the actual
effect type is)
* bumped version to 1.0.0cvs4

* Introduced support for optional environment variable
"LINUXSAMPLER_PLUGIN_DIR" which allows to override the directory
where the sampler shall look for instrument editor plugins
(patch by Luis Garrido, slightly modified).
* bumped version to 1.0.0.cvs3

* VST bugfix: If the host called resume() before and after changing
sample rate or block size, the number of channels was incorrectly
set to two. This caused silence in Cubase 5.
* removed compiler warnings

* gig engine: implemented the "round robin keyboard" dimension
* gig engine: fixed round robin and random dimensions for cases when
number of dimension zones is not a power of two
* gig engine: made round robin use a counter for each region instead
of each key
* fixed building with libgig installed in a non-standard directory

* VST: look for the Fantasia binary in liblinuxsampler.dll's directory and
in its parent directory (required for the next Windows installer which
allows to install the 64 bit and 32 bit version of LinuxSampler VST
alongside)

* fixed hanging notes which occured when note-off event had the exact
same time stamp as the voice's note-on event and occured both in the
same audio fragment cycle (fixes bug #112)
* bumped version to 0.5.1.11cvs

* bugfix: on sample reference changes (instrument editor), only un-cache
the respective sample if it's really not used by any sampler engine
anymore
* re-cache samples in case they were changed by an instrument editor, e.g.
when a sample was added while playing (#82)
* bumped version to 0.5.1.10cvs

* Adapted drivers/Plugin class to be used as a base class for the
AudioUnit plugin and fixed orphaned pointers when deleting PluginGlobal
* Fixed possible iterator invalidations when resetting the sampler
* Fixed memory leaks when issuing the following LSCP commands:
GET AUDIO_OUTPUT_DRIVER INFO
GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO
GET MIDI_INPUT_DRIVER INFO
GET MIDI_INPUT_DRIVER_PARAMETER INFO
* Fixed possible compilation error when sqlite is not present

* automatic stacktrace mechanism is now turned off by default and can
be switched on by command line option "--stacktrace" (the automatic
stacktrace mechanism seems to be broken on most systems at the moment)
* bumped version to 0.5.1.9cvs

* added new LSCP command: SEND CHANNEL MIDI_DATA which can be used by
frontends to send MIDI messages to specific sampler channel
* added two additional fields to GET FILE INSTRUMENT INFO command -
KEY_BINDINGS and KEYSWITCH_BINDINGS
* InstrumentResourceManager::GetInstrumentInfo now scans the specified
instrument file only if it is not loaded in the instrument manager

* global volume sysex message can now be selected at compile time to be
only applied to the sampler channels that are connected to the respective
MIDI input port the SysEx message arrived on (by default global volume
SysEx messages apply globally to the whole sampler)
* bumped version to 0.5.1.7cvs

* added support for chromatic / drumkit mode Roland GS Sysex message
which is usally used to switch a part between chromatic sounds and
drumkit sounds (as opposed to their common default setting of MIDI
part 10 being a drumkit part and all other ones chromatic parts), in
LS however one can switch between the first 16 MIDI instrument maps
of all ones defined for the sampler
* bumped version to 0.5.1.6cvs

* bugfix: notes triggered at position 0 in the audio buffer were
sometimes wrongly killed in the same buffer, causing no sound to be
played
* fixes for audio drivers with varying buffer sizes
* Makefile fix: JACK_CFLAGS wasn't used
* JACK driver: use jack_client_open instead of the deprecated
jack_client_new

* dispatch bank select as ordinary CC as well, the user might seriously
want to (mis)use it for some purpose ("fixed" in all current MIDI
input drivers: ALSA, CoreMIDI, JACK, MidiShare, MME)
* minor fix: only mark FX sends as being modified if really the
respective FX send MIDI controller was used

* added new LSCP event "DEVICE_MIDI" which can be used by frontends to
react on MIDI data arriving on certain MIDI input devices (so far only
Note-On and Note-Off events are sent via this LSCP event)
* bumped version to 0.5.1.4cvs

- added new LSCP event "CHANNEL_MIDI" which can be used by frontends to
react on MIDI data arriving on certain sampler channels (so far only
Note-On and Note-Off events are sent via this LSCP event)
- bumped LSCP compliance version to 1.4
- bumped LS version to 0.5.1.3cvs

* 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.