linuxsampler Subversion History
2024-03-26 schoenebeck
* Preparations for new release (2.3.1).
2024-03-10 schoenebeck
* CoreVMFunctions.cpp: Fixed compiler error with certain C++ stdlib
versions (due to const-ness differences with STL's std::sort()
implementations).
*
Bumped version (2.3.0.svn1).
2024-01-26 schoenebeck
* Preparations for new release (2.3.0).
2022-01-05 schoenebeck
* Sampler::Reset() no longer unloads instrument editor plugins, this is a
workaround for the issue that instrument editor plugins were no longer
available after sending a LSCP "RESET" command (probably due to a race).
*
Bumped version (2.2.0.svn16).
2022-01-04 schoenebeck
* SFZ engine: Fixed wrong velocity for release triggered samples: if and
only if note-off velocity is exactly zero (which means MIDI keyboard
does not have release velocity sensors) then use previous note-on
velocity as note-off velocity for release triggered samples instead
(regression of SVN r4013).
*
Gig engine: Fixed wrong velocity for release triggered samples: if and
only if note-off velocity is exactly zero (which means MIDI keyboard
does not have release velocity sensors) then use previous note-on
velocity as note-off velocity for release triggered samples instead
(regression of SVN r2879).
*
Bumped version (2.2.0.svn15).
2022-01-03 schoenebeck
* SFZ engine: Automatically reload .sfz files on file changes
(e.g. by some external text editor).
*
Bumped version (2.2.0.svn14).
2022-01-03 schoenebeck
* sfz.h: Add Instrument::GetFile() method.
*
Bumped version (2.2.0.svn13).
2022-01-03 schoenebeck
* sfz.h: Add File::checkFileModified() method allowing to detect file
changes (e.g. by other apps).
*
Bumped version (2.2.0.svn12).
2022-01-03 schoenebeck
* sfz.h: Add File::filename() method.
*
Bumped version (2.2.0.svn11).
2021-12-31 schoenebeck
* SFZ engine: Fixed wrong velocity of release triggered samples (most
hardware MIDI keybaords send note-off with velocyity zero, hence the
previous note-on elocity should be used for release triggered samples
instead).
*
Bumped version (2.2.0.svn10).
2021-12-23 schoenebeck
* Additional more verbose error output in case an appropriate
instrument editor could not be found (if there is not any
editor at all then say so, if there is one but not capable
to handle the instrument, then make this case clear to the
user; in both cases print the expected location for instrument
editor plugins).
*
Bumped version (2.2.0.svn9).
2021-12-22 schoenebeck
* Show a more detailed error message on terminal if an appropriate editor
could not be found for a .gig instrument.
*
Bumped version (2.2.0.svn8).
2021-11-22 schoenebeck
* Fix compiler error with release tarball if no Bison installed
(SVN version still requires Flex and Bison being installed).
*
Bumped version (2.2.0.svn7).
2021-08-04 schoenebeck
* AbstractEngineChannel: fix CCs not being forwarded to all
VirtualMIDIDevices.
*
Bumped version (2.2.0.svn6).
2021-08-04 schoenebeck
* VirtualMidiDevice: release all notes on MIDI CC #120 and CC #123.
2021-08-04 schoenebeck
* VirtualMidiDevice: add method Reset() which is e.g. intended to be used
in "panic" / MIDI "all sound off" / MIDI "all note off" situations.
2021-06-25 schoenebeck
* Fix: Do not share compiled instrument scripts among multiple engine
channels (sampler parts) as this can lead to crashes and would allow the
same global script variables to be accessible from multiple engine
channels which would not be the expected behaviour by instrument script
authors.
*
Bumped version (2.2.0.svn5).
2021-06-20 schoenebeck
* gig engine: Use libgig's gig::File::GetInstrument() method with method
gig::File::CountInstruments() instead of now deprecated
gig::File::GetFirstInstrument() / gig::File::GetNextInstrument() pair.
*
Bumped version (2.2.0.svn4).
2021-06-19 schoenebeck
* gig engine: Use libgig's new method gig::Instrument::GetRegionAt() with
method gig::Instrument:CountRegions() instead of now deprecated
gig::Instrument::GetFirstRegion() / gig::Instrument::GetNextRegion()
pair.
*
Bumped version (2.2.0.svn3).
2021-06-19 schoenebeck
* gig engine: Use libgig's new method gig::File::GetSample() with method
gig::File::CountSamples() instead of now deprecated
gig::File::GetFirstSample() / gig::File::GetNextSample() pair.
*
Bumped version (2.2.0.svn2).
2021-06-10 schoenebeck
* gig engine: use libgig's new IO-per-thread feature to avoid file I/O
concurrency issues with .gig file.
*
Bumped version (2.2.0.svn1).
2021-05-09 schoenebeck
* Preparations for new release (2.2.0).
2021-02-01 schoenebeck
* Fixed crash on certain MIDI RPN and NRPN messages that occurred if no
real-time instrument script was loaded.
*
Bumped version (2.1.1.svn71).
2021-01-07 schoenebeck
* NKSP VM: Fixed dead note events not been removed from user's event groups
(i.e. causing incorrect behaviour of built-in NKSP functions by_marks()
and set_event_mark() after max. size of event group list was exhausted).
*
Bumped version (2.1.1.svn70).
2021-01-06 schoenebeck
* ScriptVM: Fixed crash when handling array results of built-in
functions (e.g. "num_elements(by_marks($MARK_1)").
*
Bumped version (2.1.1.svn69).
2021-01-05 schoenebeck
* ScriptVM: Fixed incorrect polyphonic data transfer from wrong "note"
handler to "release" handler; which also fixes no "release" handler
being executed sometimes, and due to the latter it also fixes potential
crashes as some polyphonic script events were never released and the
engine hence was running out of free script events.
*
Bumped version (2.1.1.svn68).
2020-12-11 schoenebeck
* Allow EffectChain::InsertEffect() as alternative to
EffectChain::AppendEffect() (i.e. with index equal to current chain size).
*
Bumped version (2.1.1.svn67).
2020-11-28 schoenebeck
* NKSP parser: fixed memory leak; string tokens were allocated as C
strings and never freed.
*
Bumped version (2.1.1.svn66).
2020-08-31 schoenebeck
* SFZ: Fixed internal opcode 'xfin_hivel' falsely being set by user
opcode 'xfin_lovel' (patch by Christian Czezatke).
*
Bumped version (2.1.1.svn65).
2020-08-29 schoenebeck
* NKSP VM: Fixed the "release" handler being executed too often under
certain situations if polyphonic data was passed from "note" handler to
"release" handler.
*
Bumped version (2.1.1.svn64).
2020-08-28 schoenebeck
* NKSP parser: Fixed crash if unary '-' operator was used on a non-number
data type.
*
NKSP parser: Raise parser error if either unary '-' or '+' operator was
used with a non-number data type.
*
Tests: Added test cases for the fixed issues described above.
*
Bumped version (2.1.1.svn63).
2020-08-07 schoenebeck
* Test Cases: Fixed deadlock of Condition test on Linux.
2020-08-06 schoenebeck
NKSP: Fixed built-in exit() function to behave as return statement.
*
VM API: Introduced new signal STMT_RETURN_SIGNALLED.
*
NKSP exit() function: signal STMT_RETURN_SIGNALLED instead of
STMT_ABORT_SIGNALLED.
*
NKSP AST: Introduced common base class 'Subroutine' for 'EventHandler'
and for new 'UserFunction' class.
*
NKSP parser: Use 'UserFunction' class instead of 'Statements' class
for user declared NKSP functions.
*
ScriptVM: Handle new STMT_RETURN_SIGNALLED signal by unwinding the
stack to previous, calling subroutine.
*
NKSP tests: Added test cases for exit() acting as return statement.
*
Bumped version (2.1.1.svn62).
2020-07-31 schoenebeck
* Fixed rare crash when switching between instruments that had instrument
scripts loaded.
*
Bumped version (2.1.1.svn61).
2020-06-15 schoenebeck
* NKSP language: emit warning if an array variable was declared with bigger
array size than amount of initial values been assigned, and initialize the
missing array elements with zero in this case.
*
Bumped version (2.1.1.svn60).
2020-06-14 schoenebeck
NKSP: Relaxed array variable declaration.
*
NKSP: Just throw a warning, not an error if an array variable of
size zero was declared.
*
NKSP: Allow omitting explicit array size on array variable declaration
if combined with immediate value assignment
(e.g. declare %foo[] := ( 1, 2, 3 ) ).
*
Bumped version (2.1.1.svn59).
2020-06-08 schoenebeck
* Fixed compilation error with Bison >= 3.6.0.
*
Bumped version (2.1.1.svn58).
2020-06-07 schoenebeck
* NKSP: Fixed crash when undefined variable was referenced.
*
Bumped version (2.1.1.svn57).
2020-05-15 schoenebeck
Ref<> smart pointer class is now thread-safe.
*
Require C11 compliant compiler.
*
Ref<> class: Implemented lock-free & wait-free thread-safety.
*
Ref<> class: Use portable format specifier %p for pointers.
*
Bumped version (2.1.1.svn56).
2020-05-15 schoenebeck
* Ref<> class: prevent compiler error if T == T_Base
(due to method signature duplicate).
*
Bumped version (2.1.1.svn55).
2020-04-06 schoenebeck
Fixed deadlocks (e.g. when restarting engines).
*
Individual thread implementations (e.g. disk thread, etc.):
Disable thread cancellation on critical sections, e.g. when holding
mutex locks, to prevent deadlocks if thread is stopped and/or
restarted.
*
Added TestCancel() calls to thread implementations if missing.
*
No need to wrap Thread::TestCancel() calls into
CONFIG_PTHREAD_TESTCANCEL macro conditions (since TestCancel() is
already a stub on systems which don't have pthread_testcancel()
available).
*
If compiled for debugging: give each thread a human readable name
to simplify debugging of multi-threading issues.
*
DiskThreadBase: TestCancel() and pthread_testcancel() calls are
per-se redundant, so only call TestCancel().
*
Added missing override keywords to silent compiler warnings.
*
Bumped version (2.1.1.svn54).
2020-04-06 schoenebeck
Mutex class: Implemented bug detection and deadlock debugging features.
*
Bug detection: By enabling macro DEBUG_MUTEX at compile time and
calling new method setDebugEnabled(true) at runtime, automatic bug
detection features are activated which e.g. raise an assertion fault
if a thread attempts to Unlock() a thread it does not own a lock on,
or when locking more than once while not using mutex type RECURSIVE
and much more.
*
Deadlock debugging: Also if these features were activated like
described above, the most recent mutex lock is recorded by capturing
the name of the thread and the precise call stack which caused the
mutex lock. This information can be used to identify the exact
situation that lead to a dead lock efficiently with a debugger.
*
Bumped version (2.1.1.svn53).
2020-04-05 schoenebeck
Thread class: Added new methods (POSIX implementation only yet):
*
Added methods pushCancelable() and popCancelable() for allowing to
prevent thread being terminated on critical sections.
*
Added methods name(), nameOfCaller() and setNameOfCaller() to allow
assigning threads human readable names for debugging purposes.
*
configure: Always check for availability of pthread_testcancel()
and use it if so (previously it was only used if explicitly enabled
by configure script option).
*
Raise a compiler warning if pthread_testcancel() is not available.
*
Bumped version (2.1.1.svn52).
2020-04-05 schoenebeck
* Implemented global backtraceAsString() function for debugging purposes
(POSIX systems only, no Windows implementation yet).
*
Bumped version (2.1.1.svn51).
2020-02-16 schoenebeck
* NKSP: Fixed re-entrant issue with function calls which caused wrong
result values if the same function was called multiple times in a term
(specifically if metric prefixes were used).
*
Tests: Added NKSP core language test cases to guard this fixed issue.
*
Bumped version (2.1.1.svn50).
2020-02-15 schoenebeck
* NKSP: Fixed intermediate function result values never having reflected
any standard measuring unit type.
*
Tests: Guard this fixed NKSP issue by test cases.
*
Bumped version (2.1.1.svn49).
2020-02-14 schoenebeck
* NKSP: Fixed incorrect EG times if standard measuring unit was
passed to built-in functions "change_attack()", "change_decay()"
or "change_release()".
*
Bumped version (2.1.1.svn48).
2020-02-04 schoenebeck
* Added configure checks whether C++ compiler supports so called
'designated initializers'.
*
Bumped version (2.1.1.svn47).
2020-02-01 schoenebeck
NKSP: Added support for 'patch' variables.
*
NKSP language: Added support for 'patch' variable qualifier
(as new dedicated keyword 'patch').
*
NKSP parser: capture locations of 'patch' variable declarations
in script's source code.
*
ScriptVM: Allow patching 'patch' script variables by replacing
their default assignment expression with a supplied replacement
variable initialization expression by optional 2nd argument when
calling loadScript().
*
ScriptVM: Allow retrieval of default initialization expressions
of all 'patch' variables by optional 3rd argument when calling
loadScript() (i.e. for instrument editors).
*
gig engine: Implemented support for loading real-time instrument
scripts with 'patch' variables bundled with gig instruments.
*
Bumped version (2.1.1.svn46).
2020-01-31 schoenebeck
NKSP parser: track code locations also by raw byte position and length.
*
NKSP VM API: Added member variables 'firstByte' and 'lengthBytes' to
struct 'CodeBlock'.
*
NKSP Editor API: Added methods firstByte() and lengthBytes() to
class 'VMSourceToken'.
*
NKSP VM language parser: track all positions also by raw byte offset
and length (along to the already existing tracking by line/column).
*
NKSP editor syntax highlighting scanner: track all positions also by
raw byte offset and length (along to the already existing tracking by
line/column).
*
Bumped version (2.1.1.svn45).
2020-01-29 schoenebeck
NKSP: Reduced code for parsing NKSP variable declarations:
*
Use 2 generalized grammar rules with optional components (i.e. optional
value assignment and optional variable qualifiers) instead of previous
linear combinations of grammar rules, which also fixes some edge case.
*
Bumped version (2.1.1.svn44).
2020-01-26 schoenebeck
Fixed potential crash with high pitch at end of RAM playback:
*
AbstractVoice: variable 'cachedsamples' is already in sample points,
so the previous division by amount of audio channels, allowed RAM
playback to exceed beyond the amount of samples being cached.
*
Bumped version (2.1.1.svn43).
2020-01-23 schoenebeck
* Fixed playing noise at the end of a disk stream under certain
conditions.
*
Bumped version (2.1.1.svn42).
2020-01-23 schoenebeck
* Fixed crash when editing key groups (a.k.a. exclusive groups)
with an instrument editor during playback.
*
Bumped version (2.1.1.svn41).
2020-01-20 schoenebeck
* gig engine: If minimum cutoff is defined, remap cutoff controller CC
values to really span the entire possible cutoff range (to avoid a
dead controller zone).
*
Bumped version (2.1.1.svn40).
2020-01-15 schoenebeck
* gig engine: Fixed potential crash with polynomial interpolator
and max. pitch.
*
Bumped version (2.1.1.svn39).
2020-01-12 schoenebeck
* NKSP: Removed upper value constraint for 2nd argument of built-in
functions "change_amp_lfo_freq()", "change_cutoff_lfo_freq()",
"change_pitch_lfo_freq()","change_reso()", "change_cutoff()",
"change_amp_lfo_depth()", "change_cutoff_lfo_depth()" and
"change_pitch_lfo_depth()", to allow e.g. passing value 2000000
to double the LFO frequency / resonance / cutoff frequency.
*
Bumped version (2.1.1.svn38).
2020-01-11 schoenebeck
NKSP: Fixed crash with built-in functions returning an array.
*
Calling built-in functions returning an array type was broken and
caused a crash when built-in function's NULL (supposed to be array)
result value was used by the script VM.
*
Bumped version (2.1.1.svn37).
2020-01-08 schoenebeck
Fixed compile errors with C++17:
*
std::ptr_fun was removed from STL in C++17,
use C++11 lambda expression instead.
*
std::mem_fun and std::bind2nd were removed from STL in C++17,
use C++11 lambda expression instead.
*
Bumped version (2.1.1.svn36).
2020-01-04 schoenebeck
* Added support for 'null function RPN/NRPN' (which is RPN/NRPN
parameter MSB=127 and LSB=127, and which is disabling subsequent
data entry/increment/decrement CC messages.
*
Bumped version (2.1.1.svn35).
2020-01-04 schoenebeck
* Added support for MIDI CC #96 (data increment).
*
Added support for MIDI CC #97 (data decrement).
*
Bumped version (2.1.1.svn34).
2020-01-04 schoenebeck
Implemented support for compressed RPN/NRPN message sequences:
*
Allow processing MIDI data entry messages without having to be
preceded strictly always by RPN/NRPN parameter selection messages
prior to each value change (i.e. data entry CC).
*
Bumped version (2.1.1.svn33).
2020-01-03 schoenebeck
* NKSP: Fixed certain built-in variables having returned
some (seemingly random) metric unit factor (instead of none).
*
Bumped version (2.1.1.svn32).
2020-01-03 schoenebeck
* NKSP: Implemented built-in script function "set_rpn()".
*
NKSP: Implemented built-in script function "set_nrpn()".
*
Bumped version (2.1.1.svn31).
2020-01-03 schoenebeck
NKSP: Added support for RPN and NRPN event handlers:
*
NKSP language: Added support for RPN event handler
("on rpn ... end on" in instrument scripts).
*
NKSP language: Added support for NRPN event handler
("on nrpn ... end on" in instrument scripts).
*
Added built-in read-only variables "$RPN_ADDRESS" and "$RPN_VALUE" which
may be read from the new RPN/NRPN script handlers to get the (N)RPN
parameter that had been changed and its new value.
*
Added built-in const variables "$NI_CB_TYPE_RPN" and "$NI_CB_TYPE_NRPN"
which are identifying the new (N)RPN handlers as such at script runtime.
*
Bumped version (2.1.1.svn30).
2020-01-02 schoenebeck
Added support for MIDI CC #38 (data entry LSB):
*
Combine data entry MSB and data entry LSB events' values to one 14-bit
value, which allows higher resolution (N)RPN value handling.
*
Handle now hard coded RPN events in separate method
ProcessHardcodedRpn().
*
Handle now hard coded NRPN events in separate method
ProcessHardcodedNrpn().
*
Bumped version (2.1.1.svn29).
2020-01-02 schoenebeck
EngineChannel: Overhaul of RPN / NRPN related methods:
*
Added new *Rpn*Parameter*() methods as replacement for previous
*Rpn*Controller*() methods and marked the old ones as deprecated.
*
Added new *Nrpn*Parameter*() methods as replacement for previous
*Nrpn*Controller*() methods and marked the old ones as deprecated.
*
The new GetMidiRpnParameter() and GetMidiNrpnParameter() methods
return their result as common (in MIDI world) 14 bit representation
of sender's MSB and LSB values, instead of the uncommon 16 bit
representation of the old GetMidiRpnController() and
GetMidiNrpnController() methods.
*
Bumped version (2.1.1.svn28).
2020-01-02 schoenebeck
* Event:Init(): memset() entire Event::Param union to zero instead of trying
to do that for its individual members; the latter became error prone due
to the union's growing complexity meanwhile.
*
Bumped version (2.1.1.svn27).
2019-12-27 schoenebeck
* NKSP: Added built-in script functions "msb()" and "lsb()".
*
Bumped version (2.1.1.svn26).
2019-12-13 schoenebeck
* gig engine: Fixed cutoff controller handling for new filter types.
*
Bumped version (2.1.1.svn25).
2019-12-08 schoenebeck
* gig format extension: Support for additional filter types:
lowpass 1/2/4/6-pole, highpass 1/2/4/6-pole, bandpass 2-pole,
bandreject 2-pole.
*
Bumped version (2.1.1.svn24).
2019-10-25 schoenebeck
* Using now cubic interpolation as resampling algorithm by default; and
linear interpolation is deprecated now.
*
Bumped version (2.1.1.svn23).
2019-10-03 schoenebeck
* gig format extension: Added support for different LFO wave forms
(currently either sine [default], triangle, saw or square).
*
gig format extension: Added support for LFO phase displacement
(0°..360°).
*
gig format extension: Added support for flipping LFO polarity on LFO 3
(in the original gig format this was only available for LFO 1 and LFO 2).
*
Bumped version (2.1.1.svn22).
2019-10-01 schoenebeck
* Gig engine: Changed default wave form for all 3 LFOs to sine
(instead of triangle; see discussion "GigaStudio LFO
compatibility" on mailing list from 2019-09-26 for details).
*
Bumped version (2.1.1.svn21).
2019-10-01 schoenebeck
* Gig engine: changed LFO start levels; LFO1 and LFO2 both to mid,
LFO3 to max. start level (see discussion "GigaStudio LFO
compatibility" on mailing list from 2019-09-26 for details).
*
Bumped version (2.1.1.svn20).
2019-10-01 schoenebeck
Refactored LFO class names and their header file names:
*
Renamed PulseLFO -> LFOPulse, LFOSawIntMath -> LFOSawIntMathNew,
SawLFO -> LFOSawIntMathOld, SineLFO -> LFOSineBuiltinFn,
LFOSine -> LFOSineNumericComplexNr, SquareLFO -> LFOSquarePulse.
*
Separated LFOSquarePulse (previously "SquareLFO") to its own
header file.
*
Renamed type LFOSigned -> LFOTriangleSigned.
*
Renamed type LFOUnsigned -> LFOTriangleUnsigned.
*
Bumped version (2.1.1.svn19).
2019-09-30 schoenebeck
Added new LFO implementations:
*
Added int math square LFO implementation.
*
Added int math saw LFO implementation.
*
Added numeric complex nr sine LFO implementation.
*
Added public API C++ class "LFO", which is a cluster class
encapsulating all the sampler's LFO implementations to be used by
3rd party applications (e.g. by Gigedit).
*
Marked class LFOTriangleDiHarmonic as deprecated
(will be removed in future).
*
Added LFOAll.h which includes all LFO implementation's header files.
*
Fixed benchmarks/triang.cpp falsely having favoured "int math abs"
algorithm (since result of 2nd run was not accumulated).
*
Added benchmark for saw wave (benchmarks/saw.cpp).
*
Added benchmark for sine wave (benchmarks/sine.cpp).
*
Added benchmark for square wave (benchmarks/square.cpp).
*
Increased amount of benchmarks runs by factor 6 to achieve benchmark
times which are large enough on modern systems.
*
Cleanup of LFO APIs.
*
Bumped version (2.1.1.svn18).
2019-09-30 schoenebeck
* LFOTriangleIntMath and LFOTriangleIntAbsMath: Fixed FlipPhase=true
behaviour for start_level_mid.
*
Bumped version (2.1.1.svn17).
2019-09-04 persson
* Fixed compile errors with Clang 4.0
2019-09-03 schoenebeck
* Fixed compiler errors with GCC 8.x.
*
Bumped version (2.1.1.svn16).
2019-09-02 persson
* SFZ format engine: fixed support for regions with loccN/hiccN
conditions on more than one MIDI controller.
2019-09-02 schoenebeck
* NKSP language: Allow unary '+' operator.
*
Test cases: Added NKSP tests for unary '+' operator.
*
Bumped version (2.1.1.svn15).
2019-09-02 schoenebeck
NKSP: Implemented common real number math functions.
*
Added built-in real number functions "round()", "ceil()", "floor()",
"sqrt()", "log()", "log2()", "log10()", "exp()", "pow()", "sin()",
"cos()", "tan()", "asin()", "acos()", "atan()".
*
Added built-in script real number constant "~NI_MATH_PI".
*
Added built-in script real number constant "~NI_MATH_E".
*
Added NKSP test cases for built-in functions "round()", "ceil()",
"floor()", "sqrt()", "log()", "log2()", "log10()", "exp()", "pow()",
"sin()", "cos()", "tan()", "asin()", "acos()", "atan()".
*
Bumped version (2.1.1.svn14).
2019-09-01 schoenebeck
NKSP: Built-in instrument functions fixes & hardening:
*
Fixed the following built-in functions having misinterpreted values given
with unit type (for their 2nd argument) as if they were relative values
(that is as if they were passed without a unit type): "change_attack()",
"change_decay()", "change_release()", "change_cutoff_attack()",
"change_cutoff_decay()", "change_cutoff_release()".
*
Fixed the following built-in functions having applied completely wrong
'final' values: "change_sustain()", "change_cutoff_sustain()" (since the
respective EGs being their modulation sink assume uint data type with
value range 0..1000 instead of 0.0..1.0.
*
Added individual parse-time checks of function arguments for the following
built-in functions: "play_note()", "note_off()", "set_event_mark()",
"delete_event_mark()", "by_marks()", "change_cutoff()", "change_attack()",
"change_decay()", "change_release()", "change_cutoff_attack()",
"change_cutoff_decay()", "change_cutoff_release()",
"change_amp_lfo_freq()", "change_cutoff_lfo_freq()",
"change_pitch_lfo_freq()", "change_vol_time()", "change_tune_time()" and
"change_pan_time()".
*
Don't abort function call if unit type was used and at the same time
'final' operator was omitted for the primary value argument of the
following built-in functions: "change_cutoff()", "change_attack()",
"change_decay()", "change_release()", "change_cutoff_attack()",
"change_cutoff_decay()", "change_cutoff_release()",
"change_amp_lfo_freq()", "change_cutoff_lfo_freq()",
"change_pitch_lfo_freq()", "change_vol_time()", "change_tune_time()",
"change_pan_time()", instead imply 'final'ness at runtime and raise an
appropriate parser warning at parse time.
*
Bumped version (2.1.1.svn13).
2019-08-31 schoenebeck
NKSP: Real number support for core instrument built-in functions.
*
NKSP: Built-in function "play_note()" accepts now real numbers and
seconds as unit type as well for its 3rd and 4th function arguments.
*
NKSP: The following built-in functions accept now real numbers as well for
their 2nd function argument: "change_vol()", "change_tune()",
"change_cutoff()", "change_attack()", "change_decay()",
"change_release()", "change_sustain()", "change_cutoff_attack()",
"change_cutoff_decay()", "change_cutoff_sustain()",
"change_cutoff_release()", "change_amp_lfo_freq()",
"change_cutoff_lfo_freq()", "change_pitch_lfo_freq()",
"change_vol_time()", "change_tune_time()", "change_pan_time()",
"fade_in()", "fade_out()", "change_play_pos()".
*
NKSP: Fixed built-in function "change_play_pos()" not having accepted
metric prefixes at all.
*
Bumped version (2.1.1.svn12).
2019-08-30 schoenebeck
* NKSP language: Fixed assignment to array variables which was
broken by floating point support introduction (svn r3573).
*
Test cases: Added NKSP int array and real array tests for value
assignment and initialization of arrays.
*
Bumped version (2.1.1.svn11).
2019-08-30 schoenebeck
NKSP: Cleanup regarding multiple data types for built-in function args.
*
NKSP VM API cleanup: Get rid of legacy method
VMFunction::argType(vmint iArg) which was already superseded by its new
replacement VMFunction::acceptsArgType(vmint iArg, ExprType_t type).
*
NKSP parser: if wrong argument type was passed to a built-in function and
that built-in function accepts more than one data type for the argument,
then show all supported data types as parser error message.
*
Bumped version (2.1.1.svn10).
2019-08-30 schoenebeck
* NKSP VM API: Added 4 overridden methods to class VMNumberExpr:
evalCastInt(MetricPrefix_t), evalCastInt(MetricPrefix_t,MetricPrefix_t),
evalCastReal(MetricPrefix_t), evalCastReal(MetricPrefix_t,MetricPrefix_t)
as convenient methods for automatically converting values to expected
metric value basis.
*
NKSP built-in function "wait()" accepts now both integers and real numbers
as argument.
*
Bumped version (2.1.1.svn9).
2019-08-30 schoenebeck
NKSP: Allow more wider support of standard measuring units & 'final'ness.
*
Raised compiler requirement to be C++14 compliant (due to severe
restrictions regarding C-style aggregate initializer lists in C++11
which are now massively used throughout the code base).
*
NKSP VM API: Allow units and 'final'ness to be returned as result from
built-in functions (added methods VMFunction::returnUnitType() and
VMFunction::returnsFinal() for that purpose which must be implemented by
built-in function implementations).
*
NKSP language: Allow metric unit prefixes of numeric scalar and array
variables to be changed freely at runtime (unlike unit types like Hz etc.
which are still sticky parse-time features of variables which cannot be
changed at runtime for the intentional sake of determinism).
*
NKSP language: 'final' values are prohibited for array variables for now
(attempt causes a parsers error).
*
NKSP language: expressions with unit types (e.g. Hz) are prohibited for
conditions of runtime control structures like if(), while(), select()
(attempt causes a parser error).
*
NKSP VM API: Allow built-in functions to perform their own, individual
parse time checks of arguments going to be passed to the function at
runtime (added method VMFunction::checkArgs() for that purpose).
*
NKSP language: raise parser warning if only one operand of binary
operators (like logical 'or' comparison) contain a 'final' value (because
it would always yield in a 'final' result in such cases).
*
NKSP language: Allow comparison (=, #, <, >, <=, >=) of values with
different metric unit prefixes, which will behave as expected (e.g.
result of expression '1000us < 2ms' is true).
*
NKSP language: Allow adding values with different metric unit prefixes
(e.g. result of expression '100Hz + 5kHz' is '5100Hz').
*
NKSP language: Allow subtracting values with different metric unit
prefixes (e.g. result of expression '1ms - 20us' is '980us').
*
NKSP language: Allow multiplying with any metric unit prefixes
(e.g. result of expression '2k * 3ms' is '6s'), however multiplications
with unit types on both sides (e.g. '2s * 2s') is still prohibited since
we don't have any considerable practical use for a term like '4s^2'
(hence any attempt multiplying two unit types still causes parser error).
*
NKSP language: Allow dividing by any metric unit prefixes and allow
division of same unit type on both sides (e.g. expression '8kHz / 1000Hz'
yields in unit free result '8'). So this is now a way to cast units away
e.g. for passing the result to other expressions, certain function calls
or variables which are not accepting any units (or that specific unit).
*
NKSP language: integer arrays and real number arrays can now be converted
to strings (e.g. for dumping their content with message() calls for
script debugging purposes).
*
NKSP language: expressions and variables with units are now correctly
casted to strings (e.g. with message() calls).
*
NKSP language: comparing real numbers for equalness (e.g. '~foo = 3.1') or
unequalness (e.g. '~foo # 3.1') is now less strict and takes the expected
floating point tolerances into account.
*
NKSP VM API: Added methods VMScalarNumberExpr::evalCastInt() and
VMScalarNumberExpr::evalCastReal().
*
NKSP VM API: Added base class 'VMNumberArrayExpr' for classes
'VMIntArrayExpr' and 'VMRealArrayExpr'.
*
NKSP VM API: replaced all unitPrefix() (parse time) methods by
unitFactor() (runtime) methods.
*
Built-in function "exit()" supports now returning units and 'final'ness
exclusively for test cases.
*
The following built-in functions support now units as well: "abs()",
"random()", "inc()", "dec()", "in_range()", "min()", "max()",
"real_to_int()", "int()", "int_to_real()" and "real()".
*
Built-in functions "array_equal()", "search()" and "sort()" support now
real number arrays (correctly) as well.
*
Added individual parse time checks of arguments to be passed to built-in
functions "random()", "inc()", "dec()", "in_range()", "min()", "max()",
"array_equal()" and "search()" specific for their individual purposes.
*
Test cases: Added massive amount of NKSP test cases for standard
measuring units and 'final' operator usage cases.
*
Test cases: Added NKSP test cases for (floating point tolerance aware)
real number equalness / unequalness comparison.
*
Bumped version (2.1.1.svn8).
2019-08-28 schoenebeck
NKSP: Introducing variable return type for built-in functions.
*
Changed method signature VMFunction::returnType() ->
VMFunction::returnType(VMFnArgs* args) to allow built-in
functions to proclaim a different result value type depending
on the arguments to be passed to the function.
*
Built-in script function abs() optionally accepts and returns
real number.
*
Built-in script functions min() and max() optionally accept
real number arguments and return real number as result in that
case.
*
Added real number test cases for the built-in abs(), min() and
max() functions.
*
Bumped version (2.1.1.svn7).
2019-08-28 schoenebeck
NKSP: Added some initial floating point test cases.
*
RTMath: Implemented floating point comparison methods
fEqual32(float,float) and fEqual64(double,double)
which take the expected floating point tolerances
into account.
*
NKSP: Allow built-in exit() function to potentially
accept real type argument as well.
*
NKSP: Added real number test cases for built-in
functions exit(), int_to_real(), real(), real_to_int()
and int(), as well as for the plus, minus and negate
language operators.
2019-08-28 schoenebeck
NKSP: Cleanup of class inheritance scheme.
*
scriptvm/tree.h: Mark all relevant classes with C++11 'final' keyword.
*
scriptvm/tree.h: StringLiteral class has no need for virtually.
2019-08-27 schoenebeck
NKSP: Introducing floating point support.
*
NKSP language: Added support for NKSP real number literals and
arithmetic operations on them (e.g. "(3.9 + 2.9) / 12.3 - 42.0").
*
NKSP language: Added support for NKSP real number (floating point)
script variables (declare ~foo := 3.4).
*
NKSP language: Added support for NKSP real number (floating point)
array script variables (declare ?foo[3] := ( 1.1, 2.7, 49.0 )).
*
NKSP built-in script function "message()" accepts now real number
argument as well.
*
Added built-in NKSP script function "real_to_int()" and its short
hand form "int()" for casting from real number to integer in NKSP
scripts.
*
Added built-in NKSP script function "int_to_real()" and its short
hand form "real()" for casting from integer to real number in NKSP
scripts.
*
Bumped version (2.1.1.svn6).
2019-08-24 schoenebeck
NKSP: Bug fixes regarding new measurement units feature:
*
Fix: Engine internal Fade of script synthesis parameters volume, pitch
and pan were not rendered at all.
*
Fix: Backward compatibility of built-in function arguments without a
metric unit prefix was broken (resulted in incorrect value
transformation).
*
Fix: built-in script function change_play_pos() resolved wrong arguments.
*
Bumped version (2.1.1.svn5).
2019-08-23 schoenebeck
* NKSP script editor API: Added support for detecting standard unit tokens
and their potential metric prefix token.
2019-08-23 schoenebeck
NKSP: Added standard units support for numbers and final "!" operator:
*
NKSP strictness: Variable names, function names and preprocessor condition
names must start with a regular character (a-z or A-Z); starting them with
a digit or underscore is no longer allowed.
*
NKSP parser fix: equal comparison operator "=" and not equal comparison
operator "#" must only accept integer operands.
*
NKSP language: Implemented support for standard units like Hertz, seconds,
Bel including support for metric unit prefixes; so one can now e.g.
conveniently use numbers in scripts like "5us" meaning "5 microseconds",
or e.g. "12kHz" meaning "12 kilo Hertz", or e.g. "-14mdB" meaning
"minus 14 Millidecibel", or e.g. "28c" meaning "28 cents" (for tuning).
*
NKSP language: Introduced "final" operator "!" which is specifically
intended for synthesis parameter values to denote that the synthesis
parameter value is intended to be the "final" value for that synthesis
parameter that should explicitly be used by the engine and thus causing
the sampler engine to ignore all other modulation sources for the same
synthesis parameter (like e.g. LFO, EG); by simply prefixing a value,
variable or formula with this new "!" operator the expression is marked as
being "final".
*
Bumped version (2.1.1.svn4).
2019-08-18 schoenebeck
* NKSP: Introducing 64 bit support for NKSP integer scripts
variables (declare $foo).
*
Require C++11 compiler support.
*
Autoconf: Added m4/ax_cxx_compile_stdcxx.m4 macro which is used
for checking in configure for C++11 support (as mandatory
requirement) and automatically adds compiler argument if required
(e.g. -std=C++11).
*
Bumped version (2.1.1.svn3).
2019-08-06 schoenebeck
* Test cases: Fixed thread tests segfaulting on Linux.
2019-08-01 schoenebeck
* Added test cases for NKSP core language aspects and core built-in
functions.
*
NKSP: Added method ScriptVM::setExitResultEnabled() which allows
to explicitly enable the built-in exit() function to optionally
accept one function argument; the value of the passed exit()
function argument will then become available by calling
VMExecContext::exitResult() after script execution.
*
Bumped version (2.1.1.svn2).
2019-07-31 schoenebeck
* Fixed compiler error in Pool.h.
*
Fixed compiler errors in test cases.
*
Updated README for how to compile & run test cases.
*
Updated test case
MutexTest::testDoubleLockStillBlocksConcurrentThread() to latest
expected behaviour of the Mutex class implementation (recursive
mutex type).
*
Bumped version (2.1.1.svn1).
2019-07-27 schoenebeck
* Preparations for new release (2.1.1).
2019-05-25 schoenebeck
* "optional" class: Fixed comparison operators.
*
Bumped version (2.1.0.svn9).
2019-03-11 schoenebeck
* FX Sends: Provide more useful error messages on routing problems
(see bug #169).
*
LSCP reference doc: Be more clear describing the two distinct
approaches of using external vs. internal effects (see bug #169).
*
Bumped version (2.1.0.svn8).
2019-03-10 schoenebeck
* sfz opcode 'sample': Added support for built-in sample '*silence'
(fixes bug #310, patch by Jacek Roszkowski).
*
sfz opcode 'sample': Show warning message for unknown or unsupported
built-in sample types.
*
Bumped version (2.1.0.svn7).
2019-03-07 schoenebeck
* SFZ: Fixed potential crash when a sample is shared by more than one
region (fixes bug #308, patch by Jacek Roszkowski).
*
SFZ: Added OVERRIDEs to avoid bug #307 in future.
*
Bumped version (2.1.0.svn6).
2019-02-27 schoenebeck
* SFZ: Fixed memory leak when releasing samples
(fixes bug #307, patch by Jacek Roszkowski)
*
Bumped version (2.1.0.svn5).
2019-01-27 persson
* Fixed some compiler warnings
*
Fixed compilation error when cross-compiling to Mac
2019-01-03 schoenebeck
* Fixed potential endless recursion introduced by SVN r3444
(patch by Ivan Maguidhir).
*
Bumped version (2.1.0.svn4).
2018-12-23 schoenebeck
* Gig format extension: If requested by instrument then don't play
release trigger sample on note-off events.
*
Bumped version (2.1.0.svn3).
2018-12-23 schoenebeck
* Only play release trigger samples on sustain pedal up if this behaviour
was explicitly requested by the instrument (otherwise only on note-off).
*
Bumped version (2.1.0.svn2).
2017-11-28 schoenebeck
* NKSP: Fixed behavior of built-in functions change_sustain(),
change_cutoff_attack(), change_cutoff_decay(), change_cutoff_sustain()
and change_cutoff_release().
*
Bumped version (2.1.0.svn1).
2017-11-25 schoenebeck
* Preparations for new release (2.1.0).
2017-10-27 schoenebeck
* NKSP: Added built-in script function "change_cutoff_attack()".
*
NKSP: Added built-in script function "change_cutoff_decay()".
*
NKSP: Added built-in script function "change_cutoff_sustain()".
*
NKSP: Added built-in script function "change_cutoff_release()".
*
NKSP: Added built-in script function "change_cutoff_lfo_depth()".
*
NKSP: Added built-in script function "change_cutoff_lfo_freq()".
*
Bumped version (2.0.0.svn77).
2017-10-13 schoenebeck
* Debian: Added config file /etc/ld.so.conf.d/linuxsampler.conf instead
of fiddling directly with /etc/ld.so.conf by postinst and postrm
scripts as before.
2017-10-12 schoenebeck
* linuxsampler binary fix: option --create-instruments-db ignored
subsequent optional argument due to glibc's implementation oddity
which expects a "=" sign, but no space between them.
*
Debian: Added build dependency to libsqlite3-dev for building
linuxsampler with instruments DB support.
*
Bumped version (2.0.0.svn76).
2017-10-07 schoenebeck
* Debian: Fixed packaging error about invalid "Source-Version"
substitution variable.
*
Debian: Raised Debian compatibility level to Debian 9 "Stretch".
2017-08-10 schoenebeck
* Fixed compilation error with clang libc++.
2017-07-30 schoenebeck
* NKSP: Added built-in script function "change_pan_time()".
*
NKSP: Added built-in script function "change_pan_curve()".
*
Bumped version (2.0.0.svn75).
2017-07-24 schoenebeck
* NKSP script editor syntax highlighting API: catch all fatal lexer
errors, to avoid the editor app to crash on ill-formed text input.
*
Bumped version (2.0.0.svn74).
2017-07-23 schoenebeck
* gig Engine: Added support for controlling whether the individual
EGADSR stages may be aborted (as LinuxSampler extension to the
original GigaStudio 4 format).
*
Bumped version (2.0.0.svn73).
2017-07-20 schoenebeck
* NKSP: Implemented built-in script function "change_sustain()".
*
Bumped version (2.0.0.svn72).
2017-07-15 schoenebeck
* NKSP: Added built-in preprocessor condition NKSP_NO_MESSAGE,
which can be set to disable all subsequent built-in "message()"
function calls on preprocessor level.
*
Bumped version (2.0.0.svn71).
2017-07-15 schoenebeck
* NKSP script editor API: Fixed app termination due to a lexer start
condition stack underrun.
*
NKSP preprocessor: Fixed wrong behavior on nested USE_CODE_IF() and
USE_CODE_IF_NOT() preprocessor statements.
*
Bumped version (2.0.0.svn70).
2017-07-11 schoenebeck
* Fixed Note object leak when triggering notes on keys which did
not have a valid sample mapped (fixes bug #252).
*
Fixed compilation errors when compiling with CONFIG_DEVMODE
enabled.
*
Bumped version (2.0.0.svn69).
2017-07-10 schoenebeck
* NKSP: Removed max. value limitation of built-in functions
"change_attack()", "change_decay()" and "change_release()" to
i.e. allow passing 2000000 for doubling the respective time.
*
Bumped version (2.0.0.svn68).
2017-07-09 schoenebeck
* Got rid of resembling an ancient GSt misbehavior which did not pitch at
all if an up-pitch of more than 40 semi tones was requested (I don't
think there is any stock gig sound that requires this misbehavior to
resemble its original sound).
*
Bumped version (2.0.0.svn67).
2017-06-28 schoenebeck
* Added built-in script function "callback_status()".
*
Added built-in constant $CALLBACK_STATUS_TERMINATED.
*
Added built-in constant $CALLBACK_STATUS_QUEUE.
*
Added built-in constant $CALLBACK_STATUS_RUNNING.
*
Bumped version (2.0.0.svn66).
2017-06-27 schoenebeck
* NKSP: Added built-in script function "fork()".
*
NKSP: Added built-in array variable %NKSP_CALLBACK_CHILD_ID[].
*
NKSP: Added built-in variable $NKSP_CALLBACK_PARENT_ID.
*
NKSP: Fixed potential crash when accessing dynamic built-in
array variables.
*
Bumped version (2.0.0.svn65).
2017-06-24 persson
* sfz parser: allow missing space between header and opcode
2017-06-23 schoenebeck
* Revised fundamental C++ classes "Thread", "Mutex" and
"Condition" which fixes potential undefined behavior
(note: this addresses mainly the POSIX implementation,
Win32 is untested yet and would also need an update).
*
Bumped version (2.0.0.svn64).
2017-06-22 schoenebeck
* NKSP: Print a time stamp along to each call of built-in function
"message()".
*
ScriptVM API: Added VMParserContext::preprocessorComments() which
allows to retrieve all code blocks filtered out by the
preprocessor.
*
Bumped version (2.0.0.svn63).
2017-06-21 schoenebeck
* RT Instrument Scripts: Fixed potential memory access bug
and potential undefined behavior of "init" event handlers.
*
Bumped version (2.0.0.svn62).
2017-06-05 schoenebeck
* NKSP: Implemented built-in script function "abort()" which allows
to abort another script handler by passing its callback ID.
*
Bumped version (2.0.0.svn61).
2017-05-31 schoenebeck
* NKSP language: Added support for "synchronized .. end synchronized"
code blocks.
*
Bumped version (2.0.0.svn60).
2017-05-31 schoenebeck
* NKSP language fix: Unknown characters were not handled correctly.
*
Bumped version (2.0.0.svn59).
2017-05-30 schoenebeck
* NKSP language: Added support for user declared const array variables.
*
NKSP language: Raise parser warning if array variable is accessed with
an index that exceeds the array's size.
*
Bumped version (2.0.0.svn58).
2017-05-30 schoenebeck
* NKSP: Implemented built-in script function "change_play_pos()".
*
Bumped version (2.0.0.svn57).
2017-05-30 schoenebeck
* NKSP: built-in "play_note()" function now accepts -2 for its fourth
argument (note duration) which means the life time of the note shall
be sticked to the requested note number of argument 1.
*
NKSP Fix: built-in "play_note()" function now returns 0 as result
value if -1 was passed for its fourth argument (note duration) and
the respective parent note is already gone.
*
NKSP: Built-in array variable %KEY_DOWN[] is now a read-only
variable.
*
Built-in variable $EVENT_NOTE is now a read-only variable.
*
Built-in variable $EVENT_VELOCITY is now a read-only variable.
*
Bumped version (2.0.0.svn56).
2017-05-29 schoenebeck
* NKSP: built-in "play_note()" function now supports a sample playback
start offset with argument 3, where special value -1 means to use the
regular sample offset as defined by the instrument file.
*
Bumped version (2.0.0.svn55).
2017-05-28 schoenebeck
* NKSP: Implemented built-in script function "change_vol_curve()".
*
NKSP: Implemented built-in script function "change_tune_curve()".
*
NKSP: Added built-in script constant "$NKSP_LINEAR".
*
NKSP: Added built-in script constant "$NKSP_EASE_IN_EASE_OUT".
*
Bumped version (2.0.0.svn54).
2017-05-28 schoenebeck
* Implemented built-in script function "same_region()" (currently only
available for gig format engine).
*
Bumped version (2.0.0.svn53).
2017-05-26 schoenebeck
* NKSP Fix: Never suspend "init" event handlers.
*
NKSP: Implemented built-in script function "array_equal()".
*
NKSP: Implemented built-in script function "search()".
*
NKSP: Implemented built-in script function "sort()".
*
Bumped version (2.0.0.svn52).
2017-05-25 schoenebeck
* NKSP Fix: built-in script function "change_note()" did not
(re)select the correct expected region.
*
NKSP Fix: built-in script function "change_velo()" did not
(re)select the correct subregion/dimension region
(whatever term you are using for the sampler format of
your choice).
*
Bumped version (2.0.0.svn51).
2017-05-25 schoenebeck
* NKSP: Adjusted behavior of "change_vol()" and "change_tune()" to a more
intuitive behavior if used in combination with "change_vol_time()" or
"change_tune_time()" respectively: now tuning/volume changes are only
assigned (without delay) immediately to a new note if the respective
timing function has not been called before, otherwise the volume/tuning
changes are automatically faded (before, only the event's time stamp was
relevant).
*
Bumped version (2.0.0.svn50).
2017-05-25 schoenebeck
* NKSP: Implemented built-in script function "change_velo()".
*
NKSP: Implemented built-in script function "change_note()".
*
Bumped version (2.0.0.svn49).
2017-05-25 schoenebeck
* NKSP: Built-in "ignore_event()" function: argument is now optional,
like with built-in function "ignore_controller()".
2017-05-25 schoenebeck
* NKSP: Fixed polyphonic variables not being reset to zero
after usage.
*
Bumped version (2.0.0.svn48).
2017-05-24 schoenebeck
* Fixed invalid (note-on) event ID being assigned to new Note
objects.
*
Fixed a bunch of scheduler time related bugs.
*
Bumped version (2.0.0.svn47).
2017-05-20 schoenebeck
* NKSP: Added built-in script function "get_event_par()" and implemented
some of its possible parameter selections.
*
NKSP: Added built-in script function "set_event_par()" and implemented
some of its possible parameter selections.
*
NKSP: Fixed (removed) artificial value limit for duration argument of
built-in script functions "change_vol_time()" and "change_tune_time()".
*
Fixed compile error with pre-C++11 compilers.
*
Bumped version (2.0.0.svn46).
2017-05-19 schoenebeck
* NKSP: Implemented built-in script function "change_vol_time()".
*
NKSP: Implemented built-in script function "change_tune_time()".
*
NKSP: Implemented built-in script function "fade_in()".
*
NKSP: Implemented built-in script function "fade_out()".
*
NKSP: Fixed acceptance of wrong data type of parameters passed to
built-in script functions "change_vol()", "change_tune()",
"change_pan()", "change_cutoff()", "change_reso()",
"change_attack()", "change_decay()", "change_release()",
"change_amp_lfo_depth()", "change_amp_lfo_freq()",
"change_pitch_lfo_depth()" and "change_pitch_lfo_freq()".
*
Bumped version (2.0.0.svn45).
2017-04-21 schoenebeck
* NKSP: Fixed crash when using built-in script array variable "%ALL_EVENTS".
*
NKSP: Added built-in function "change_amp_lfo_depth()".
*
NKSP: Added built-in function "change_amp_lfo_freq()".
*
NKSP: Added built-in function "change_pitch_lfo_depth()".
*
NKSP: Added built-in function "change_pitch_lfo_freq()".
*
Bumped version (2.0.0.svn44).
2017-02-05 schoenebeck
* Instruments DB: Fixed undefined DB transaction behavior.
*
Fixed general compiler warnings.
*
Bumped version (2.0.0.svn43).
2017-02-04 schoenebeck
* SFZ: Fixed unintended volume fade-in of voices under certain
conditions.
*
Bumped version (2.0.0.svn42).
2017-01-18 schoenebeck
* SFZ engine: Implemented opcode set_ccN
(initial patch by Giovanni Senatore).
*
SFZ engine: print a warning if a CC related
opcode uses an invalid MIDI controller number.
*
Bumped version (2.0.0.svn41).
2017-01-16 schoenebeck
* Instruments DB: Added support for scanning SFZ (.sfz) files.
*
Instruments DB: Added support for scanning Sound Font (.sf2) files.
*
Bumped version (2.0.0.svn40).
2017-01-16 schoenebeck
* Cleanup of instruments DB file creation and opening code.
*
The instrument DB path of linuxsampler's --create-instruments-db argument
is now optional, if it is missing, then a default location is used.
*
Bumped version (2.0.0.svn39).
2017-01-10 schoenebeck
* SFZ Engine: Just fixed a false warning about allegedly
unsupported sfz opcode "script", which is obviously not true.
*
Bumped version (2.0.0.svn38).
2017-01-09 schoenebeck
* Added support for sfz extension opcode 'script' which may be used to
load real-time instrument script file (NKSP script language).
*
Removed code duplication in SFZ file loading code.
*
Bumped version (2.0.0.svn37).
2017-01-05 schoenebeck
* NKSP: Implemented built-in script function "in_range()".
*
Bumped version (2.0.0.svn36).
2017-01-05 schoenebeck
* NKSP: Implemented built-in script array variable "%ALL_EVENTS".
*
Bumped version (2.0.0.svn35).
2017-01-04 schoenebeck
* Gig Engine: Fixed clicks and pumping noise with Lowpass Turbo filter
on very low cutoff settings.
*
Bumped version (2.0.0.svn34).
2016-12-16 schoenebeck
* RT Instrument Scripts: Fixed crash when using built-in script function
"by_marks()".
*
LSCP Server: Fixed client connection not being closed after network error.
*
Fixed some more few compiler warnings.
*
Bumped version (2.0.0.svn33).
2016-12-15 schoenebeck
* Fixed numerous compiler warnings.
*
Bumped version (2.0.0.svn32).
2016-12-08 schoenebeck
* Instruments DB: Fixed memory access bug of general DB
access code which lead to undefined behavior.
2016-10-31 schoenebeck
* Check compiler for supported pragma diagnostics to avoid
compiler errors.
2016-10-31 schoenebeck
* Fixed a bunch of minor issues (mostly compiler warnings).
*
Bumped version (2.0.0.svn31).
2016-10-23 persson
* windows, 32-bit: fixed potential crashes by making sure the stack in
sub threads is 16-byte aligned
2016-10-19 schoenebeck
* Added new C++ API method
VirtualMidiDevice::SendChannelPressureToSampler().
*
Bumped version (2.0.0.svn30).
2016-10-19 schoenebeck
* Follow-up fix regarding aftertouch handling.
*
Bumped version (2.0.0.svn29).
2016-10-18 schoenebeck
* gig/sf2/sfz: Fixed aftertouch channel pressure events being processed
properly and thus were ignored for certain uses.
*
Bumped version (2.0.0.svn28).
2016-10-15 schoenebeck
* NKSP: Fixed NKSP parser warning "Not a statement" when assigning an
initializer list to an array variable.
*
Bumped version (2.0.0.svn27).
2016-10-11 schoenebeck
* NKSP: Provide more user friendly error messages on syntax errors.
*
Bumped version (2.0.0.svn26).
2016-07-22 schoenebeck
* ScriptVM: Implemented automatic suspension of RT safety
threatening scripts.
*
Bumped version (2.0.0.svn25).
2016-07-22 schoenebeck
* NKSP Fix: "init" event handler was not always executed when a script
was loaded.
*
NKSP built-in wait() script function: abort script execution if
a negative or zero wait time was passed as argument (since this is
a common indication of a bug either of the script or even of the
engine, which could lead to RT instability or even worse).
*
Bumped version (2.0.0.svn24).
2016-07-21 schoenebeck
* NKSP: Implemented built-in script function "min()".
*
NKSP: Implemented built-in script function "max()".
*
Bumped version (2.0.0.svn23).
2016-07-18 schoenebeck
* NKSP: Implemented built-in script function "sh_left()".
*
NKSP: Implemented built-in script function "sh_right()".
*
Bumped version (2.0.0.svn22).
2016-07-17 schoenebeck
* All engines: Increased ramp speed of volume smoother and pan smoother
(while slow rate of crossfade smoother is preserved) to allow quick
volume and pan changes by instrument scripts for instance.
*
Bumped version (2.0.0.svn21).
2016-07-17 schoenebeck
* NKSP: Fixed all change_*() built-in script functions to apply their
synthesis parameter changes immediately in case the respective note
was triggered at the same time, instead of scheduling the parameter
change, especially because it would cause some parameter types's
changes either to be ramped (i.e. change_vol()) or other types even
to have not effect at all (i.e. change_attack()).
*
Bumped version (2.0.0.svn20).
2016-07-16 schoenebeck
* NKSP: Implemented built-in script function "change_attack()".
*
NKSP: Implemented built-in script function "change_decay()".
*
NKSP: Implemented built-in script function "change_release()".
*
Bumped version (2.0.0.svn19).
2016-07-16 persson
* fixed C++11 compilation error
2016-07-15 schoenebeck
* NKSP language: Added support for user defined script functions.
*
Bumped version (2.0.0.svn18).
2016-07-15 schoenebeck
* NKSP: Implemented built-in script function "stop_wait()".
*
NKSP: Implemented built-in script variable "$NI_CALLBACK_ID".
*
NKSP: Implemented built-in script variable "$NI_CALLBACK_TYPE".
*
NKSP: Implemented built-in script variable "$NKSP_IGNORE_WAIT".
*
NKSP: Added support for read-only built-in variables
(respectively handled by the script parser).
*
NKSP: Added built-in script constant "$NI_CB_TYPE_INIT".
*
NKSP: Added built-in script constant "$NI_CB_TYPE_NOTE".
*
NKSP: Added built-in script constant "$NI_CB_TYPE_RELEASE".
*
NKSP: Added built-in script constant "$NI_CB_TYPE_CONTROLLER".
*
Bumped version (2.0.0.svn17).
2016-07-14 schoenebeck
* NKSP language correction: allow empty statements in entire language
(i.e. "if end if").
*
Bumped version (2.0.0.svn16).
2016-07-14 schoenebeck
* NKSP: Implemented built-in script function "inc()".
*
NKSP: Implemented built-in script function "dec()".
*
NKSP language fix: division expressions were evaluated too often.
*
NKSP language fix: string concatenation operator was right
associative instead of left (to right).
*
Bumped version (2.0.0.svn15).
2016-07-13 schoenebeck
* NKSP: Implemented built-in script variable "$KSP_TIMER".
*
NKSP: Implemented built-in script variable "$NKSP_REAL_TIMER".
*
NKSP: Implemented built-in script variable "$NKSP_PERF_TIMER".
*
NKSP: Implemented built-in script variable "$ENGINE_UPTIME".
*
Bumped version (2.0.0.svn14).
2016-07-11 schoenebeck
* Fixed behavior of built-in instrument script functions play_note()
and note_off(), which must be distinguished engine internally
from "real" MIDI note on/off events in order to avoid
misbehaviors like hanging notes.
*
Bumped version (2.0.0.svn13).
2016-07-10 schoenebeck
* NKSP: Added & implemented built-in script function "change_cutoff()".
*
NKSP: Added & implemented built-in script function "change_reso()".
*
NKSP: Added & implemented built-in script function "event_status()".
*
NKSP: Added built-in script constants "$EVENT_STATUS_INACTIVE" and
"$EVENT_STATUS_NOTE_QUEUE" both for being used as flags for
built-in "event_status()" script function.
*
NKSP language: Added support for bitwise operators ".or.", ".and."
and ".not.".
*
NKSP language scanner: Fixed IDs matching to require at least one
character (i.e. when matching function names or variable names).
*
NKSP language scanner: disabled unusued rules.
*
Bumped version (2.0.0.svn12).
2016-07-09 schoenebeck
* Implemented built-in instrument script function "change_vol()".
*
Implemented built-in instrument script function "change_tune()".
*
Implemented built-in instrument script function "change_pan()".
*
Bumped version (2.0.0.svn11).
2016-06-30 schoenebeck
* Fix: Release trigger voices were not spawned on sustain pedal up
(CC #64) events.
*
Fix: Release trigger voices can now also distinguish correctly between
note-off and sustain pedal up events.
*
Bumped version (2.0.0.svn10).
2016-05-16 schoenebeck
* NKSP language grammar correction: allow empty event handler bodies
like "on note end on".
*
Bumped version (2.0.0.svn9).
2016-05-03 schoenebeck
* Reload instrument script automatically after being modified by an
instrument editor.
*
Bumped version (2.0.0.svn8).
2016-04-25 schoenebeck
* 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).
2016-04-24 schoenebeck
* Instrument Scripts: Fixed line numbers on parser error/warning messages.
*
Instrument Scripts: Added output of precise column on parser
error/warning messages.
*
Shut up some irrelevant errors of parser generating shell scripts.
*
Bumped version (2.0.0.svn6).
2016-04-22 schoenebeck
* Instrument script classes now exported with the liblinuxsampler C++ API.
*
Added new API method ScriptVM::syntaxHighlighting() which provides
a convenient syntax highlighting backend for external instrument
script editor applications.
*
Bumped version (2.0.0.svn5).
2016-04-20 schoenebeck
* Automake: set environment variable GCC_COLORS=auto to allow GCC to
auto detect whether it (sh/c)ould output its messages in color.
*
Fixed behavior of built-in script function "ignore_event()".
*
Bumped version (2.0.0.svn4).
2016-04-19 schoenebeck
* 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).
2016-04-10 schoenebeck
* All engines: Implemented scheduler for delayed MIDI events and for
suspended real-time instrument scripts.
*
Real-Time instrument scripts: Implemented support for built-in "wait()"
function's "duration-us" argument, thus scripts using this function are
now correctly resumed after the requested amount of microseconds.
*
Real-Time instrument scripts: Implemented support for built-in
"play_note()" function's "duration-us" argument, thus notes triggered
with this argument are now correctly released after the requested amount
of microseconds.
*
Real-Time instrument scripts: Fixed crash which happened when trying to
reference an undeclared script variable.
*
Real-Time instrument scripts: Script events were not cleared when
engine channel was reset, potentially causing undefined behavior.
*
All engines: Attempt to partly fix resetting engine channels vs.
resetting engine, an overall cleanup of the Reset*(),
ConnectAudioDevice(), DisconnectAudioDevice() API methods would still be
desirable though, because the current situation is still inconsistent
and error prone.
*
Bumped version (2.0.0.svn2).
2016-04-06 schoenebeck
* Removed unnecessary dependency to libuuid (originated by libgig's usage
of it).
*
Debian packaging: Updated build dependencies and description, and
assigned [email protected] as maintainer of this
package.
*
Bumped version (2.0.0.svn1).
2016-01-06 persson
* sfz engine: added support for <global>, <master> and #define (patch
by Alby M)
2015-08-30 persson
* use unique_ptr instead of auto_ptr when building with C++11
2015-08-23 persson
* fixed printf type errors (mostly in debug messages)
2015-07-15 schoenebeck
* Preparations for new release (2.0.0).
2015-02-25 schoenebeck
* CoreMIDI: fixed auto bind feature to CoreMIDI ports that go online
*
CoreMIDI: fixed minor memory leak
*
Bumped version (1.0.0.svn61)
2015-01-04 schoenebeck
* 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).
2014-12-29 schoenebeck
* Fixed compilation error that occurred with some compilers, triggered by
recent libgig changes.
*
Bumped version (1.0.0.svn59).
2014-09-11 persson
* sfz engine: added support for float and 32 bit sample files
2014-09-06 persson
* gig engine: fixed behaviour of filter LFO
2014-09-06 schoenebeck
* Fixed MIDI program change messages being ignored if quickly executed
after each other (fixes #231).
2014-07-06 schoenebeck
* Another fix regarding virtual MIDI device event import.
*
Bumped version (1.0.0.svn57).
2014-07-02 schoenebeck
* Fixed virtual MIDI device event import (which caused i.e. the
events from the virtual keyboard of gigedit to be ignored by the
sampler).
*
Bumped version (1.0.0.svn56).
2014-06-29 schoenebeck
* Fixed crash which happened if instrument without
instrument script was loaded (fixes #227).
*
Bumped version (1.0.0.svn55).
2014-06-18 schoenebeck
* RT instrument scripts: Pass/preserve polyphonic variable data
from respective "note" event handler to "release" event handler.
*
Fixed theoretical memory leak regarding instrument scripts.
*
Bumped version (1.0.0.svn54).
2014-06-13 schoenebeck
* Implemented built-in instrument script function "set_event_mark()".
*
Implemented built-in instrument script function "delete_event_mark()".
*
Implemented built-in instrument script function "by_marks()".
*
Added built-in instrument script int const variables $MARK_1 to $MARK_28.
*
Built-in instrument script functions "ignore_event()", "note_off()" and
"gig_set_dim_zone()" now also accept an array of event IDs as argument
(i.e. return value of new script function "by_marks()").
*
Bumped version (1.0.0.svn53).
2014-06-12 schoenebeck
* Implemented built-in instrument script function "note_off()".
*
Bumped version (1.0.0.svn52).
2014-06-11 schoenebeck
* Implemented built-in instrument script function "abs()".
*
Implemented built-in instrument script function "random()".
*
Implemented built-in instrument script function "num_elements()".
*
Disabled debug mode of RefPtr template class.
*
Bumped version (1.0.0.svn51).
2014-06-11 schoenebeck
* Fixed execution of "init" instrument script handler.
*
Fixed further crashes.
*
Bumped version (1.0.0.svn50).
2014-06-10 schoenebeck
* Fixed silence and another crash.
*
Bumped version (1.0.0.svn49).
2014-06-10 schoenebeck
* Implemented built-in script int array variable $KEY_DOWN.
*
Bumped version (1.0.0.svn48).
2014-06-10 schoenebeck
* Fixed crashes when exiting the sampler.
*
Bumped version (1.0.0.svn47).
2014-06-09 schoenebeck
* Fixed crash when loading an instrument script.
*
Fixed "init" script handler only to be executed once:
when the script was loaded.
*
Fixed aftertouch script event which always had value zero
and controller number was set to aftertouch value instead.
*
gig Engine: Fixed handling of "smartmidi" dimension, which
was recognized as "unknown" dimension.
*
Fixed script function gig_set_dim_zone(): was accessing
wrong event.
*
ls_instr_script command line tool: is now not limited to
core language scripts, but can now also parse sampler format
dependent instrument scripts, with the respective specific
built-in script variables and functions.
*
ScriptVM: Fixed runtime behavior of "and" and "or" binary
script expressions, which also evaluated the right hand side
of the expression even if the left hand side already failed
the overall expression semantic to become true.
*
Bumped version (1.0.0.svn46).
2014-06-08 persson
* removed usage of c++11 initializer that caused compilation errors on
older compilers
2014-06-07 schoenebeck
* Implemented built-in instrument script function "set_controller()".
*
Fixed built-in script functions "ignore_event()" and
"ignore_controller()".
*
Added extended instrument script VM for the Gigasampler/GigaStudio format
sampler engine, which extends the general instrument script VM with Giga
format specific variables and functions.
*
Giga format instrument scripts: added built-in script int constant
variables $GIG_DIM_CHANNEL, $GIG_DIM_LAYER, $GIG_DIM_VELOCITY,
$GIG_DIM_AFTERTOUCH, $GIG_DIM_RELEASE, $GIG_DIM_KEYBOARD,
$GIG_DIM_ROUNDROBIN, $GIG_DIM_RANDOM, $GIG_DIM_SMARTMIDI,
$GIG_DIM_ROUNDROBINKEY, $GIG_DIM_MODWHEEL, $GIG_DIM_BREATH,
$GIG_DIM_FOOT, $GIG_DIM_PORTAMENTOTIME, $GIG_DIM_EFFECT1,
$GIG_DIM_EFFECT2, $GIG_DIM_GENPURPOSE1, $GIG_DIM_GENPURPOSE2,
$GIG_DIM_GENPURPOSE3, $GIG_DIM_GENPURPOSE4, $GIG_DIM_SUSTAIN,
$GIG_DIM_PORTAMENTO, $GIG_DIM_SOSTENUTO, $GIG_DIM_SOFT,
$GIG_DIM_GENPURPOSE5, $GIG_DIM_GENPURPOSE6, $GIG_DIM_GENPURPOSE7,
$GIG_DIM_GENPURPOSE8, $GIG_DIM_EFFECT1DEPTH, $GIG_DIM_EFFECT2DEPTH,
$GIG_DIM_EFFECT3DEPTH, $GIG_DIM_EFFECT4DEPTH, $GIG_DIM_EFFECT5DEPTH.
*
Giga format instrument scripts: Implemented built-in script function
"gig_set_dim_zone(event_id, dimension, zone)", which allows to override
dimension zone(s) for new voices.
*
Bumped version (1.0.0.svn45).
2014-06-06 schoenebeck
* ScriptVM (WIP): Built-in script function "play_note()" now returns the
event ID of the triggered note.
*
ScriptVM (WIP): Implemented built-in script int variable $EVENT_ID.
*
ScriptVM (WIP): Implemented built-in script function "ignore_event()".
*
ScriptVM (WIP): Implemented built-in script function
"ignore_controller()" (accepts one and no argument).
*
Bumped version (1.0.0.svn44).
2014-06-05 schoenebeck
* ScriptVM (WIP): Implemented execution of script event
handlers "note" and "release".
*
ScriptVM (WIP): Implemented built-in script function
"play_note()" (only two of the max. four function
arguments are currently implemented yet though).
*
ScriptVM (WIP): Fixed incorrect handling of
suspended scripts.
*
Bumped version (1.0.0.svn43).
2014-06-05 schoenebeck
* ScriptVM (WIP): started to integrate real-time instrument script
support into the sampler engine implementations. The code is
shared among all sampler engines, however currently only the gig
file format supports storing instrument scripts (as LinuxSampler
extension to the original GigaStudio 4 file format).
*
gig engine: Added support for loading instrument scripts from .gig
files.
*
ScriptVM (WIP): Implemented built-in script variables %CC, $CC_NUM,
$EVENT_NOTE, $EVENT_VELOCITY, $VCC_MONO_AT, $VCC_PITCH_BEND.
*
ScriptVM (WIP): Implemented execution of script event handler "init".
*
ScriptVM (WIP): Implemented execution of script event handler
"controller".
*
Bumped version (1.0.0.svn42).
2014-06-01 schoenebeck
* ScriptVM: refactoring and fixes.
2014-05-31 schoenebeck
* Fixed compile error on Windows.
2014-05-30 schoenebeck
* (WIP) Implemented parser and VM for upcoming new real-time instrument
script support. It needs yet to be integrated into the sampler's
sampler engines. You can toy around for now with the command line tool
"ls_instr_script" and i.e. examples showing the core language features
under src/scriptvm/examples/.
*
Bumped version (1.0.0.svn41).
2014-05-24 persson
* fixed warning in configure script
2014-05-20 schoenebeck
* CoreMIDI: automatically connect to all input sources by default (driver
parameter "AUTO_BIND").
2014-05-20 schoenebeck
* Giga format: Fixed crash that happened with velocity split sounds
under certain conditions (see also previous commit on libgig).
*
Bumped version to 1.0.0.svn40.
2014-05-18 schoenebeck
* Aftertouch: extended API to explicitly handle channel pressure and
polyphonic key pressure events (so far polyphonic pressure was not
supported at all, and channel pressure was rerouted as CC128 but not
used so far).
*
Gig Engine: Fixed support for 'aftertouch' attenuation controller.
*
Bumped version (1.0.0.svn39).
2014-04-15 schoenebeck
* LSCP server: optimized server side processing of LSCP shell tasks (caused
a sluggish behavior, i.e. when using arrow up/down keys in LSCP shell).
*
LSCP shell: fixed crash on server disconnection.
*
LSCP shell: fixed trash printed on terminal for LSCP documentation
sometimes.
*
Automake: tried to address a compilation error with automake 1.9
(see bug #216), seems that it did not fix it though.
*
Bumped version (1.0.0.svn38).
2014-03-09 schoenebeck
* 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).
2014-03-08 persson
* 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
2014-03-05 schoenebeck
* LSCP server: fixed crash caused by endless recursion in
LSCP shell grammar evaluation algorithm.
*
LSCP shell: quit shell app when TCP connection aborted.
*
Bumped version (1.0.0.svn36).
2014-03-05 schoenebeck
* LSCP shell: Added support for moving cursor left/right with arrow keys.
*
Bumped version (1.0.0.svn35).
2014-03-04 schoenebeck
* SFZ format: Added support for "#include" instruction (modified patch
which was originally posted by Sergey on LS mailing list).
*
Bumped version (1.0.0.svn34).
2014-03-03 schoenebeck
* LSCP shell: in case of multiple possibilities or non-terminal symbols,
show them right to the current command line immediately while typing
(no double tab required for this feature, as it would be the case in
other shells)
*
LSCP shell: fixed sluggish behavior when doing tab auto complete
*
LSCP shell: fixed conflicting behavior between keyboard input and
LSCP server evaluation result, that caused an inconsistent screen
output (keybord input is now never printed directly on screen, only
the result returned from LSCP server)
2014-02-23 schoenebeck
* 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).
2014-02-19 schoenebeck
* VirtualMidiDevice: implemented support for program change, bank select
and pitch bend.
*
Bumped version (1.0.0.svn32).
2014-02-08 persson
* enabled automake 'subdir-objects' option and moved external source
references (vst, au, asio) from makefiles to cpp files, in order to
get rid of warnings from automake 1.14
2014-02-08 schoenebeck
* LSCP shell (WIP): added support for browsing the command
history with up / down keys.
*
LSCP server: fixed compilation error with Bison 3.x.
*
Bumped version (1.0.0.svn31).
2014-02-07 schoenebeck
* LSCP shell (WIP): show a prompt & welcome message
*
LSCP shell (WIP): fixed startup crash that happened
on some systems
*
Bumped version (1.0.0.svn30).
2014-02-06 schoenebeck
* 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).
2014-02-05 schoenebeck
* 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).
2014-01-26 schoenebeck
* JACK audio driver: return JACK server's current sample rate
as default value for audio device parameter "SAMPLERATE"
(fixes #166).
*
Bumped version (1.0.0.svn27).
2014-01-23 schoenebeck
* LSCP server: provide comprehensive error messages on LSCP
syntax errors (suggesting expected next non-terminal symbols)
*
Bumped version (v1.0.0.svn26).
2014-01-18 schoenebeck
* ASIO driver: be more verbose when no ASIO card could be found
(fixes #203)
*
ignore missing LADSPA paths without ignoring valid LADSPA paths
(fixes #208)
*
updated linuxsampler man page
2014-01-12 schoenebeck
* Bugfix: only process the latest MIDI program change event.
2014-01-11 schoenebeck
* Minor C++11 compliance fixes (caused compilation errors
on some recent compilers).
2014-01-10 schoenebeck
* 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).
2014-01-01 schoenebeck
* Enabled automatic svn "Revision" macro expansion on certain files.
*
Bumped version to 1.0.0.svn24.
2013-10-19 persson
* fixed build error on newer MinGW
*
support building with older jack versions
*
support building with spaces in vst sdk path
2013-09-15 schoenebeck
* Mac OS X: added temporary hack allowing to spawn gigedit as callback
on the process's main thread.
*
Bumped version to 1.0.0.svn23.
2013-09-04 schoenebeck
* CoreAudio: fixed minor error handling bug.
*
Bumped version to 1.0.0.svn22.
2013-08-25 persson
* fix for building with bison 3.0 (#202)
2013-08-18 persson
* fixed building with C++11
*
build fix: ChangeFlagRelaxed.h was missing in makefile
*
build fix: libsndfile compiler flags were missing in some makefiles
2013-05-13 schoenebeck
* Added DoubleBuffer class, built on top of SynchronizedConfig, aiming to
reduce the amount of code for protecting shared data.
2013-05-13 persson
* 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
2013-05-09 persson
* MME driver bugfix: driver wasn't closed properly
2013-05-03 schoenebeck
* Immediately apply scale tuning changes to active voices.
*
Exposed scale tuning to C++ API (along to the already existing standard
SysEx way).
*
Bumped version to 1.0.0.svn21
2013-04-23 schoenebeck
* JACK driver: Use jack_on_info_shutdown() instead of the
deprecated jack_on_shutdown() callback mechanism.
2013-03-30 schoenebeck
* CoreMIDI re-fix: previous fix for handling multiple events in one packet
was incorrect
2013-03-07 schoenebeck
* Started to spread new C++ keyword "override" over the code base
(keyword introduced with C++11 standard).
2013-03-04 schoenebeck
* CoreMIDI fix: a MIDIPacket can contain more than one event per packet.
2013-03-02 schoenebeck
* Reverted yesterday's MME driver change for now (requires some
additional code in RTMath for being able to work correctly).
2013-03-02 persson
* code refactoring: added a lock guard class for exception safe mutex
handling and used it everywhere appropriate
2013-03-01 schoenebeck
* MIDI drivers: Implemented missing handling of MIDI "running status".
*
MME driver: pass time stamps to the sampler.
2013-02-24 persson
* fixed makefile for AU plugin, which was broken in previous commit
2013-02-24 persson
* removed usage of deprecated Automake variable INCLUDES
*
ASIO driver: removed compiler warnings
2013-02-04 schoenebeck
* Bugfix: update effects on sample rate & period size changes.
*
JACK: allow to register jackd shutdown listeners.
2013-02-02 schoenebeck
* Several fixes in JACK audio driver:
- React on sample rate changes.
- React on buffer size changes.
- jack_port_get_buffer() was cached and called
outside RT context.
2013-02-02 persson
* gig engine: fixed EG1 modulation when attack or release is zero
2013-01-20 persson
* sfz parser bugfix: lines starting with whitespace were ignored
*
sfz engine: added amplitude opcode
2013-01-13 persson
* sfz engine: added FLAC support (#191)
2013-01-08 schoenebeck
* Exclusive Groups: don't ever stop voices of the same note,
doesn't sound naturally with a drumkit.
2013-01-05 persson
* fixed compilation with Clang 3.2
2012-12-14 schoenebeck
* Bugfix in VirtualMidiDevice: process note on with velocity 0 as note off.
2012-12-14 schoenebeck
* Fixed variable underflow in VirtualMidiDevice, which caused graphical
virtual keyboards in frontends / instrument editors being stuck.
*
VirtualKeyboard: allow to dynamically adjust max. MIDI events.
*
RingBuffer: added resize() method
2012-12-02 persson
* all engines: add pan CC value to instrument pan parameter before
applying panning, instead of using two separate pan functions in
series (#182)
*
sfz parser: allow -200 to 200 for pan_oncc opcode (#182)
*
gig engine: handle special case when pan parameter in gig file has
max or min value
*
CoreMIDI: fixed memory deallocation error
2012-11-21 schoenebeck
* Added support for MIDI note on velocity filter
*
Bumped version to 1.0.0.svn20
2012-11-04 persson
* fixed linkage error when building with LDFLAGS="-Wl,--no-undefined"
(#190)
2012-10-04 schoenebeck
* Various "const" and "restrict" optimizations.
2012-10-04 schoenebeck
* Added new C++ API method Sampler::GetGlobalMaxVoices().
*
Added new C++ API method Sampler::GetGlobalMaxStreams().
*
Added new C++ API method Sampler::SetGlobalMaxVoices().
*
Added new C++ API method Sampler::SetGlobalMaxStreams().
*
CoreMIDI: remove ports that disappeared on the OS from
the internal list of port bindings
*
Fixed erroneous piping of error message in
src/engines/common/VoiceBase.h (labelled "Disk stream not
available in time").
2012-09-22 schoenebeck
* 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
2012-09-19 schoenebeck
* CoreMIDI driver: implemented driver specific port parameter
"CORE_MIDI_BINDINGS", which allows to retrieve the list of CoreMIDI
clients / ports and to connect to them a la JACK, via the usual
sampler APIs
*
CoreMIDI driver: added driver specific port parameter "AUTO_BIND", if
enabled the driver will automatically connect to other CoreMIDI
clients' ports (e.g. external MIDI devices being attached to the Mac)
2012-09-08 persson
* fixed configure mistake for mac
2012-09-08 persson
* fixed configure mistake in previous commit
2012-09-08 persson
* modernized configure script
2012-08-26 persson
* sfz engine: fixed crash when using lochan/hichan opcodes (#187)
2012-08-16 persson
* LV2: fixed save/restore of SFZ state (patch by David Robillard)
*
LV2: made LV2 plugin buildable on Windows and Mac
2012-07-08 persson
* 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
2012-07-08 persson
* DSSI bugfix: it wasn't possible to change engine type. The MIDI port
and audio channel routing for DSSI plugins are now visible.
2012-06-24 persson
* fixed crash when a channel received a program change while playing a
note in a key group
2012-06-23 persson
* Mac OS X: fixed process hang when unloading 32-bit plugin (bug
introduced in previous fix)
2012-06-17 persson
* Mac OS X: fixed crash when unloading plugin on 10.7 and later
2012-06-10 persson
* VST: try to open Fantasia automatically on Linux and Mac too (on
Linux, the Fantasia jar should be placed in <prefix>/share/java)
*
VST: fixed crashes on Linux Ardour and EnergyXT
2012-04-29 persson
* 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
2012-03-30 capela
* Update to latest LV2 state extension (by David Robillard).
2012-03-17 persson
* fixed compilation with gcc 4.7
2012-03-12 schoenebeck
* 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
2012-03-10 persson
* sfz/sf2 engine: fixed crash when using small audio fragment size
2012-03-08 persson
* bugfix: instrument loading crashed for sfz and sf2 in Ardour (#176)
*
more thread safety fixes for the instrument loading thread
2012-03-04 persson
* plugin bugfix: instrument loading hang when the plugin was loaded a
second time (this time it's for Linux and Mac, previous similar fix
was for Windows)
*
thread safety fixes for the instrument loading thread
*
MME driver: removed compiler warning
*
LV2: fixed invalid realtime statement in plugin metadata
2012-02-26 iliev
* bugfix: voice stealing didn't work for SFZ and SF2 engines
2012-02-19 persson
* 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
2012-02-18 persson
* VST bugfix: instrument loading hang and crashed the host when the
plugin was loaded a second time (#174)
2012-02-17 persson
* sfz engine bugfix: only the first amp_veltrack definition in a file
was used
2012-02-12 persson
* bugfix: LADSPA_PATH was not evaluated correctly when containing
multiple paths (#165)
2012-02-11 persson
* more LV2 "state" extension support fixes (patch by David Robillard)
*
sfz parser: allow double spaces in sample filenames
*
sfz parser: allow absolute paths for sample filenames
*
MME driver: fixed memory handling bug found with cppcheck
*
sfz/sf2 engines: use linear decay and release for filter and pitch
envelope generators
2012-01-30 iliev
* fixed bug #162
2012-01-24 iliev
* added command line option --exec-after-init
2012-01-18 schoenebeck
* LV2 "state" extension support fixes (patch by David Robillard)
*
bumped version to 1.0.0.svn16
2011-12-12 iliev
* implemented opcodes eq1_vel2freq, eq2_vel2freq,
eq3_vel2freq, eq1_vel2gain, eq2_vel2gain, eq3_vel2gain
2011-12-11 iliev
* implemented opcodes egN_eq1gain, egN_eq2gain, egN_eq3gain,
egN_eq1gain_onccX, egN_eq2gain_onccX, egN_eq3gain_onccX, egN_eq1freq,
egN_eq2freq, egN_eq3freq, egN_eq1freq_onccX, egN_eq2freq_onccX,
egN_eq3freq_onccX, egN_eq1bw, egN_eq2bw, egN_eq3bw, egN_eq1bw_onccX,
egN_eq2bw_onccX, egN_eq3bw_onccX, lfoN_eq1gain, lfoN_eq2gain,
lfoN_eq3gain, lfoN_eq1gain_onccX, lfoN_eq2gain_onccX, lfoN_eq3gain_onccX,
lfoN_eq1gain_smoothccX, lfoN_eq2gain_smoothccX, lfoN_eq3gain_smoothccX,
lfoN_eq1gain_stepccX, lfoN_eq2gain_stepccX, lfoN_eq3gain_stepccX,
lfoN_eq1freq, lfoN_eq2freq, lfoN_eq3freq, lfoN_eq1freq_onccX,
lfoN_eq2freq_onccX, lfoN_eq3freq_onccX, lfoN_eq1freq_smoothccX,
lfoN_eq2freq_smoothccX, lfoN_eq3freq_smoothccX, lfoN_eq1freq_stepccX,
lfoN_eq2freq_stepccX, lfoN_eq3freq_stepccX, lfoN_eq1bw, lfoN_eq2bw,
lfoN_eq3bw, lfoN_eq1bw_onccX, lfoN_eq2bw_onccX, lfoN_eq3bw_onccX,
lfoN_eq1bw_smoothccX, lfoN_eq2bw_smoothccX, lfoN_eq3bw_smoothccX,
lfoN_eq1bw_stepccX, lfoN_eq2bw_stepccX, lfoN_eq3bw_stepccX
2011-12-09 iliev
* use different EQ effect instance for every voice
2011-12-09 iliev
* implemented opcodes delay, delay_onccN, delay_random,
delay_samples, delay_samples_onccN
2011-12-08 iliev
* fixed crash when trying to create an effect instance with controls
which min and/or max values depend on the sample rate
*
experimental support for per voice equalization (work in progress)
*
sfz engine: implemented opcodes eq1_freq, eq2_freq, eq3_freq,
eq1_freqccN, eq2_freqccN, eq3_freqccN, eq1_bw, eq2_bw, eq3_bw,
eq1_bwccN, eq2_bwccN, eq3_bwccN, eq1_gain, eq2_gain, eq3_gain,
eq1_gainccN, eq2_gainccN, eq3_gainccN
2011-11-24 capela
* LV2 State extension;
replaces LV2 Persist and LV2 Files extensions (patch by David Robilard).
2011-10-01 persson
* fixed handling of rapid bank select and program change messages sent
to the same sampler channel (patch from the Open Octave project,
slightly adjusted)
2011-09-19 schoenebeck
* 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
2011-08-22 iliev
* sfz engine: implemented opcodes volume_stepccN, pan_stepccN,
cutoff_stepccN, resonance_stepccN, lfoN_freq_stepccX,
lfoN_volume_stepccX, lfoN_pitch_stepccX, lfoN_pan_stepccX,
lfoN_cutoff_stepccX, lfoN_resonance_stepccX
2011-08-22 iliev
* sfz engine: implemented opcodes pitch_onccN,
pitch_curveccN, pitch_smoothccN, pitch_stepccN
2011-08-20 iliev
* sfz engine: implemented opcodes fillfo_depthchanaft,
fillfo_freqchanaft, amplfo_depthchanaft, amplfo_freqchanaft,
pitchlfo_depthchanaft, pitchlfo_freqchanaft
2011-08-20 iliev
* sfz engine: implemented opcodes resonance_onccN, resonance_smoothccN,
resonance_curveccN, cutoff_smoothccN, cutoff_curveccN
2011-08-20 iliev
* sfz engine: *lfo_freqccN wasn't working when the respective *lfo_freq
was not set or was set to zero
*
sfz engine: lfoN_freq_onccX wasn't working when lfoN_freq
was not set or was set to zero
2011-08-20 iliev
* sfz engine: implemented automatic aliasing *ccN <-> *_onccN
2011-08-19 iliev
* sfz engine: implemented opcodes fileg_delay_onccN,
fileg_start_onccN, fileg_attack_onccN, fileg_hold_onccN,
fileg_decay_onccN, fileg_sustain_onccN, fileg_release_onccN,
fileg_depth_onccN, pitcheg_delay_onccN, pitcheg_start_onccN,
pitcheg_attack_onccN, pitcheg_hold_onccN, pitcheg_decay_onccN,
pitcheg_sustain_onccN, pitcheg_release_onccN, pitcheg_depth_onccN
2011-08-19 iliev
* sfz engine: implemented opcodes amplfo_delay_onccN,
amplfo_fade_onccN, fillfo_delay_onccN, fillfo_fade_onccN,
pitchlfo_delay_onccN, pitchlfo_fade_onccN
2011-08-19 iliev
* possibly fixes a compile error on Windows and Mac OS X
introduced in the previous commit
2011-08-18 iliev
* sfz engine: use common pool of CC objects to minimize RAM usage
2011-08-12 iliev
* bugfix: sfz engine was using enormous amount of memory
*
bumped version to 1.0.0.cvs14
2011-08-12 iliev
* sfz engine: implemented opcodes pan_onccN, pan_smoothccN,
pan_curveccN, egN_pan, egN_pan_curve, egN_pan_onccX,
egN_pan_curveccX, pitch_veltrack
*
sfz engine: when failed to parse a sfz file
print the line number on which the error occurs
2011-08-11 iliev
* sfz engine: implemented opcodes xfin_lokey, xfin_hikey,
xfout_lokey, xfout_hikey, xf_keycurve, xfin_lovel, xfin_hivel,
xfout_lovel, xfout_hivel, xf_velcurve, xfin_loccN, xfin_hiccN,
xfout_loccN, xfout_hiccN, xf_cccurve
2011-08-10 iliev
* sfz engine: implemented opcodes egN_amplitude_onccX,
egN_volume, egN_volume_onccX, egN_cutoff, egN_cutoff_onccX,
egN_pitch, egN_pitch_onccX, egN_resonance, egN_resonance_onccX
2011-08-09 iliev
* sfz engine: implemented opcode end
2011-08-08 iliev
* sfz engine: implemented opcodes fillfo_depthccN, amplfo_depthccN,
lfoN_volume, lfoN_volume_onccX, lfoN_volume_smoothccX,
lfoN_freq_smoothccX, lfoN_pitch_smoothccX, lfoN_pan_onccX,
lfoN_pan_smoothccX, lfoN_cutoff_onccX, lfoN_cutoff_smoothccX,
lfoN_resonance_onccX, lfoN_resonance_smoothccX, lfoN_delay_onccX
2011-08-08 iliev
* sfz engine: implemented opcode volume_smoothccN
2011-08-07 iliev
* sfz engine: some group opcodes were not reset on next group
2011-08-05 iliev
* sfz engine: implemented curves
*
sfz engine: implemented opcodes volume_onccN, volume_curveccN
2011-08-04 iliev
* sfz engine: implemented opcodes ampeg_delayccN, ampeg_startccN,
ampeg_attackccN, ampeg_holdccN, ampeg_decayccN, ampeg_sustainccN,
ampeg_releaseccN, egN_timeX_onccY, egN_levelX_onccY
*
sfz engine: lfoN_* and egN_* opcodes defined
in group sections are now taken into account
2011-08-03 iliev
* sfz engine: implemented opcodes fillfo_freqccN,
pitchlfo_freqccN, amplfo_freqccN, lfoN_freq_onccX
2011-08-03 iliev
* sfz engine: implemented opcodes pitchlfo_fade,
fillfo_fade, amplfo_fade, lfoN_fade, lfoN_fade_onccX
2011-08-02 iliev
* sfz engine: implemented opcodes lfoN_phase, lfoN_phase_onccX,
lfoN_pitch, lfoN_pitch_onccX
2011-08-01 iliev
* implemented opcode pitchlfo_depthccN
2011-07-29 iliev
* implemented sine LFO, pulse LFO and saw LFO
*
sfz engine: implemented opcode lfoN_wave
2011-07-28 iliev
* sfz engine: implemented opcodes fileg_delay, fileg_start, fileg_attack,
fileg_hold, fileg_decay, fileg_sustain, fileg_release, fileg_vel2delay,
fileg_vel2attack, fileg_vel2hold, fileg_vel2decay, fileg_vel2sustain,
fileg_vel2release
*
bumped version to 1.0.0.cvs13
2011-07-28 iliev
* sfz engine: implemented opcodes pitchlfo_delay, pitchlfo_freq,
pitchlfo_depth, fillfo_delay, fillfo_freq, fillfo_depth,
amplfo_delay, amplfo_freq, amplfo_depth
2011-07-28 iliev
* sfz engine: implemented opcodes ampeg_delay, ampeg_vel2delay
pitcheg_delay, pitcheg_start, pitcheg_attack, pitcheg_hold,
pitcheg_decay, pitcheg_sustain, pitcheg_release, pitcheg_vel2delay,
pitcheg_vel2attack, pitcheg_vel2hold, pitcheg_vel2decay,
pitcheg_vel2sustain, pitcheg_vel2release, pitcheg_depth
2011-07-28 iliev
* sfz engine: implemented opcodes lfoN_delay,
lfoN_freq, lfoN_pan, lfoN_cutoff, lfoN_resonance
2011-07-28 iliev
* sfz engine: use the newly introduced signal units model
2011-07-26 iliev
* removed helper classes SignalUnitBase,
EndpointSignalUnitBase, SignalUnitRackBase
*
clean up sf2::Voice
*
bumped version to 1.0.0.cvs12
2011-07-25 iliev
* sfz: added support for sample offset (offset)
2011-07-18 persson
* Mac OS X: Makefile fix for the install-strip target
2011-07-15 iliev
* simplified the signal unit model
*
sf2: initial implementation of modulation LFO and cutoff filter
2011-07-11 iliev
* 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)
2011-07-09 persson
* sf2 engine: fine-tuned amplitude EG (by switching from gig to sfz EG)
*
sfz engine: added support for EG hold (ampeg_hold)
*
Mac OS X: made it possible to specify plugin installation dir to
configure
2011-07-07 iliev
* Fixed possible crashes due to corrupted MIDI/audio device list
after MIDI/audio device creation failure
2011-07-03 iliev
* bugfix: LSCP command "REMOVE FX_SEND EFFECT" was broken
*
fixed a bug in FxSend::SetDestinationEffect
*
bugfix: parent was not set when effect instance is appended
*
bugfix: was able to remove effect chain while FX send is connected to it
*
bugfix: was able to remove effect instance from effect chain while
FX send is connected to that instance
2011-07-02 persson
* 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
2011-06-24 iliev
* Added LSCP commands "SUBSCRIBE EFFECT_INSTANCE_COUNT",
"SUBSCRIBE EFFECT_INSTANCE_INFO", "SUBSCRIBE SEND_EFFECT_CHAIN_COUNT",
"SUBSCRIBE SEND_EFFECT_CHAIN_INFO"
2011-06-19 persson
* Windows: disabled the previous thread fix on non-Mac systems, as it
caused hanging threads on Windows
2011-06-19 persson
* fixed compilation with gcc 4.6.1
*
another "make dist" fix, for LV2 plugin
*
made --enable-pthread-testcancel default on Mac OS X
*
Mac OS X: fixed hanging threads
2011-06-11 persson
* 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
2011-05-01 persson
* sfz engine: added support for velocity effect on amplifier envelope
time (ampeg_vel2attack, ampeg_vel2decay, ampeg_vel2sustain and
ampeg_vel2release)
2011-04-25 persson
* sfz engine: implemeted filters. Filter types: lowpass, bandpass,
bandreject and highpass. 1, 2, 4 and 6 pole filters. Opcodes:
fil_type, cutoff, resonance, fil_veltrack, fil_keytrack,
fil_keycenter, cutoff_cc, cutoff_chanaft.
*
sfz engine: bugfix: zero ampeg_sustain didn't work
*
gig engine: bugfix: pitch LFO controller "internal+aftertouch" was broken
*
gig engine: bugfix: filter keyboard tracking was broken
*
gig engine: filter performance fix (an unnecessary copy was made of
the filter parameters in each sub fragment)
*
ASIO driver: fixes for newer gcc versions (fix from PortAudio)
2011-04-12 capela
* plugin changes:
- LV2 Persist + Files support (patch by David Robillard)
2011-02-21 persson
* sfz engine: use loop markers from sample file if loop_start and
loop_end are not set in sfz file
2011-02-20 persson
* bugfix: calling SET VOICES (which Fantasia does on start and
refresh) could cause instruments to be unloaded
*
plugins: save engine type (gig, sfz or sf2) in plugin state
*
VST: when opening Fantasia, look for both 32 and 64 bit Java on
64 bit Windows
2011-02-08 persson
* bugfix: playing a note while changing the instrument could cause a
crash, or give "Handing back unknown region" error messages
2010-10-05 schoenebeck
* raised limit of program change queue from 100 to 512
(as suggested by Alex Stone)
*
removed limit of maximum amount of MIDI ports per MIDI device, since
there is no reason for this limit
*
minor syntax simplification regarding 2 new LSCP commands: changed
"SET FX_SEND SEND_EFFECT"" to "SET FX_SEND EFFECT" and changed
"REMOVE FX_SEND SEND_EFFECT"" to "REMOVE FX_SEND EFFECT", also changed
the respective category field of command "GET FX_SEND INFO" from
"SEND_EFFECT" to "EFFECT"
*
updated LSCP specification document
*
bumped version to 1.0.0.cvs10
2010-10-04 schoenebeck
* minor fixes regarding new LSCP effect commands
*
updated LSCP specification document regarding new effect commands
*
bumped version to 1.0.0.cvs9
2010-10-04 schoenebeck
* 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
2010-09-30 schoenebeck
* added and implemented a set of 19 new LSCP commands for controlling
internal effects:
- added LSCP command "GET AVAILABLE_EFFECTS"
- added LSCP command "LIST AVAILABLE_EFFECTS"
- added LSCP command "GET EFFECT INFO <effect-index>"
- added LSCP command "CREATE EFFECT_INSTANCE <effect-index>"
- added LSCP command
"CREATE EFFECT_INSTANCE <effect-system> <module> <effect-name>"
- added LSCP command "DESTROY EFFECT_INSTANCE <effect-instance>"
- added LSCP command "GET EFFECT_INSTANCES"
- added LSCP command "LIST EFFECT_INSTANCES"
- added LSCP command "GET EFFECT_INSTANCE INFO <effect-instance>"
- added LSCP command "GET EFFECT_INSTANCE_INPUT_CONTROL INFO
<effect-instance> <input-control>"
- added LSCP command "SET EFFECT_INSTANCE_INPUT_CONTROL <effect-instance>
<input-control> <value>"
- added LSCP command "GET MASTER_EFFECT_CHAINS <audio-device>"
- added LSCP command "LIST MASTER_EFFECT_CHAINS <audio-device>"
- added LSCP command "ADD MASTER_EFFECT_CHAIN <audio-device>"
- added LSCP command
"REMOVE MASTER_EFFECT_CHAIN <audio-device> <effect-chain>"
- added LSCP command
"GET MASTER_EFFECT_CHAIN INFO <audio-device> <effect-chain>"
- added LSCP command "APPEND MASTER_EFFECT_CHAIN EFFECT <audio-device>
<effect-chain> <effect-instance>"
- added LSCP command "INSERT MASTER_EFFECT_CHAIN EFFECT <audio-device>
<effect-chain> <effect-instance> <effect-chain-pos>"
- added LSCP command "REMOVE MASTER_EFFECT_CHAIN EFFECT <audio-device>
<effect-chain> <effect-instance>"
*
bumped version to 1.0.0.cvs7
2010-09-22 persson
* fixed compile errors on windows
2010-09-22 persson
* fixed crash when deleting a sampler channel or changing engine type
while an instrument load was in progress
2010-09-21 persson
* fixed memory leak in the new internal effects code
2010-09-18 schoenebeck
* implemented support for internal LADSPA effects (work in progress)
2010-09-15 schoenebeck
* fixed crash which occured when changing an already deployed sampler
channel to a different engine type (e.g. from gig to sf2)
*
bumped version to 1.0.0cvs5
2010-09-14 schoenebeck
* 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
2010-08-27 persson
* sfz engine: fixed playback of 16 bit wav files on big endian CPUs
*
sfz engine: added support for Ogg Vorbis sample files
2010-08-12 persson
* sfz engine: added support for controller triggered regions
(on_locc/on_hicc)
*
sfz engine: added support for loop_mode=one_shot
2010-08-10 persson
* sfz engine: improved support for exclusive groups (group, off_by and
off_mode)
*
minor valgrind fixes
2010-07-04 persson
* sfz engine: optimized sample lookup
*
sfz engine: fixed bug introduced in previous commit: sample lookup
returned wrong sample
2010-05-30 persson
* sfz/sf2 engines: RT-safeness: avoid malloc in audio thread
*
sfz/sf2 engines: fixed a bug that could cause voice stealing to fail
2010-05-15 persson
* sfz engine: reduced memory usage for sfz data
2010-04-25 persson
* sfz engine: added support for transpose
*
sfz engine: fixed crash when using sw_down/up
*
sfz engine: improved logic for sw_lokey/hikey/up/down/last
*
sfz parser: added more v1 aliases
*
fixed building with newer MinGW-w64
2010-04-11 persson
* sfz engine: added support for amp_veltrack and amp_velcurve_N.
Fine-tuned the default velocity curve.
2010-03-20 persson
* sfz engine: added support for random, seq_position, seq_length and
volume
*
sfz parser: added v1 LFO opcodes (no support in engine yet)
2010-02-28 persson
* sfz engine: added support for off_mode=normal
2010-02-23 persson
* sfz engine: added support for trigger=release and rt_decay
2010-02-14 persson
* sfz/sf2 engines: fixed memory leak and memory handling errors
*
sfz engine: added support for sw_trigger=first, sw_trigger=legato
and sw_previous
*
sfz parser: allow non-numerical key values ("C#4" for example)
*
sfz engine: "key" opcode now sets pitch_keycenter too
*
sfz engine: fixed error when unloading instrument with same sample
used by multiple regions
*
sfz parser: added some opcode aliases, like loopmode for loop_mode,
to be more compatible
2010-01-30 persson
* sfz engine: added support for v2 multiple stage envelope generators
*
sfz engine: added a fine-tuned v1 envelope generator instead of
using the one from the gig engine
2010-01-27 schoenebeck
* 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
2010-01-11 schoenebeck
* command line option '--profile' is currently disabled, since the
respective profiling code is currently broken
2010-01-10 persson
* 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
2010-01-09 persson
* 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
2009-11-20 persson
* bugfix: release samples could cause loud noises
2009-11-03 iliev
* sfz engine: support for exclusive groups
*
sf2 engine: support for exclusive groups
*
sf2 engine: manage presets only
*
sf2 engine: preset regions are now taken into account
2009-11-01 schoenebeck
* added support for sending MIDI CC messages via LSCP command
"SEND CHANNEL MIDI_DATA CC <sampler-chan> <ctrl> <val>"
2009-11-01 schoenebeck
* added support for sending MIDI CC messages via LSCP command
"SEND CHANNEL MIDI_DATA CC <sampler-chan> <ctrl> <val>"
*
bumped LSCP version to 1.5
2009-10-30 iliev
* sfz engine: loop support
*
sf2 engine: 24bit support
*
sf2 engine: loop support
*
sf2 engine: instrument unloading
2009-10-27 iliev
* SFZ format engine: implemented 24 bit support
2009-10-27 iliev
* SFZ format engine: Implemented sfz version 1
Filter EG, Amplifier EG and Pitch EG
*
use SF2 file loader from libgig
2009-10-25 iliev
* Refactoring: moved the independent code from gig::Voice to base classes
*
SoundFont format engine: implemented EG1 & EG2
2009-10-24 persson
* fixed compilation error in DSSI plugin
*
removed gig engine dependency in DSSI plugin
2009-10-23 iliev
* Refactoring: moved the independent code from
the Gigasampler format engine to base classes
*
SFZ format engine: experimental code (not usable yet)
*
SoundFont format engine: experimental code (not usable yet)
*
Fixed crash which may occur when MIDI key + transpose is out of range
2009-08-30 iliev
* bugfix: AU plugin hangs on some hosts if bound to loopback
2009-08-30 schoenebeck
* ALSA MIDI driver supports now "NAME" device parameter, for overriding
the ALSA sequencer client name
2009-08-28 iliev
* bugfix: AU plugin failed to destroy its audio/MIDI devices
2009-07-31 schoenebeck
* preparations for release 1.0.0
2009-07-29 persson
* ASIO fixes: avoid initializing the device twice, avoid throwing
exception when getting parameters from a disconnected device
*
Windows: add the installation directory to the DLL search path when
loading an editor plugin (solves problems with VST and gigedit on
systems with other GTK versions installed)
*
fixed minor memory leak in ALSA MIDI driver
2009-07-19 persson
* code cleanup of the ASIO driver
*
minor Makefile fix for parallel make
2009-07-14 persson
* fixed instrument database recursive import, which was broken on
Windows
2009-07-14 senoner
* bugfix: LinuxSamplerVst::resume() did not call AudioEffectX::resume().
This caused LinuxSampler VST not appearing in the out: dropdown menu
under Cubase. Thanks to Arne Scheffler for the tip!
2009-07-12 schoenebeck
* bugfix: don't allow to change the audio output device, MIDI input device
or MIDI input port when using a host plugin implementation
(e.g VST, AU, DSSI, LV2) as this would go terribly wrong
2009-07-12 schoenebeck
* bugfix: don't allow to create or destroy audio devices and MIDI devices
of host plugin implementations (e.g VST, AU, DSSI, LV2) on their own,
as they only exist in the context of the plugin instance and would
otherwise crash the application
2009-07-09 persson
* fixed low-level ConditionServer usage bug that caused lockups on
Windows
2009-07-04 persson
* when cross-compiling, don't try to create instruments.db
*
fix for new mingw-w64 version, which has usleep
2009-07-04 schoenebeck
* fixed vector optimization code in AudioChannel.cpp:
- application crashed when audio buffer(s) were not 16 byte aligned
(e.g. the case with some VST host applications)
- vector extension code was always to tried be compiled, even though the
compiler didn't support vector extensions
2009-07-03 schoenebeck
* 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)
2009-06-28 persson
* made program change handling in MIDI thread real-time safe by moving
the logic to a non-RT thread
2009-06-27 persson
* fixed crash happening when a pitch bend event arrived at the same
time a new instrument was loading
*
fixed building with sqlite installed in a non-standard directory
2009-06-26 persson
* added channel routing, fxsends and midi maps to the settings stored
in the plugin state
2009-06-21 senoner
* hotplugins/vst/PluginVst.cpp: Removed the final & when
launching Fantasia java GUI which was interpreted as an
LSCP file to be loaded and hindered its correct launching
from within the VST plugin (patch of Grigor)
2009-06-12 persson
* VST: changed number of output channels from one stereo to 16 stereo
2009-06-07 senoner
* AudioChannel.cpp: added GCC vector extensions code for the functions
*
copyTo() and MixTo() , gives 300% speedup
*
should reduce CPU usage with large FX sends setups
2009-06-06 senoner
* Instruments DB on Windows gets automatically created if not present
2009-06-06 senoner
* InstrumentsDB on Windows now works in both standalone and VST mode
*
DB is stored in %USERPROFILE%\.linuxsampler\instruments.db
*
removed stat() implementation as mingw already provides it
2009-06-05 senoner
* Added Instruments DB on Windows.
*
Relative path support for DB file (stdalone and VST) not implemented yet
2009-06-03 persson
* bugfix: note off was ignored when EG was in decay stage (bug
introduced 2009-05-16)
2009-06-01 persson
* VST: avoid opening Fantasia more than once for each VST instance
*
VST: export main function as "main" on Linux too (fix for energyXT)
*
VST: prepare code for multiple output channels
*
work-around for missing fnmatch function on Windows to make
instrument database compilable
2009-05-16 iliev
* The number of audio channels and MIDI input ports in plugin audio/MIDI
devices is now fixed and can not be changed once the device is created
2009-05-16 persson
* bugfix: sometimes, when playing a note twice fast, the second note
was silent
2009-05-10 persson
* configure script fix: removed unconditional use of SSE
2009-05-10 persson
* Windows: look for editor plugins and Fantasia using base directory
of liblinuxsampler dll
*
lscp bugfix: SET CHANNEL MIDI_INPUT_TYPE didn't work with the MME
driver
2009-05-04 persson
* bugfix: two private structs had the same name, which could cause
problems if the linker chose the wrong constructor
2009-05-03 persson
* fixes for using large audio device buffers
*
VST: added support for sample rate and buffer size changes
*
VST: close editor (Fantasia) when the VST is removed
*
minor fix in configure for mmsystem.h detection on MinGW
*
removed warnings from gcc 4.4 and valgrind
2009-05-02 schoenebeck
* fixed crash which occured when max. voices / streams limits were altered
while voices were still active
2009-04-26 persson
* fixed a memory management error which could cause a crash when a
plugin was unloaded
*
minor fixes in ASIO and MME drivers for win64
2009-04-18 persson
* applied old fixes from Benno to the ASIO driver that were included
in the previous binary release but accidentally never committed to
CVS (fixes #117)
2009-04-18 persson
* bugfix: pitch bend wasn't working with JackMidi, VST, LV2, Mme,
CoreMidi or AU
*
theoretical fix: made SynchronizedConfig follow C++0x memory model
more strictly
2009-04-13 iliev
* CoreAudio: the default value for BUFFERSIZE is now 256
*
CoreAudio: use the internal 32-bit floating point rendering
2009-04-01 iliev
* LSCP server: hard close of all sockets on exit
*
Load instruments in background when restoring plugin state
2009-03-30 iliev
* Unlock the access to the instruments database while scanning a gig file
2009-03-29 schoenebeck
* atomic.h was accidently included in the liblinuxsampler C++ API header
files (fixes bug #122)
2009-03-27 schoenebeck
* added optional 3rd party user data parameter for following
liblinuxsampler C++ API methods: InstrumentEditor::Main(),
InstrumentEditor::Launch(), InstrumentManager::LaunchInstrumentEditor()
*
minor cosmetics regarding configure script summary
*
debian packaging: include DSSI and LV2 plugin binaries of the sampler
into the liblinuxsampler package
*
RPM packaging: include DSSI and LV2 plugin binaries of the sampler
into the liblinuxsampler package
*
bumped version to 0.5.1.12cvs
2009-03-22 persson
* bugfix: low-level lsatomic.h load function was broken on 64-bit
PowerPC, which probably could cause crashes on that platform
*
minor cleanups and optimization in lsatomic.h
2009-03-18 schoenebeck
* C++ API method InstrumentManager::LaunchInstrumentEditor() now returns
a pointer to the launched InstrumentEditor object
2009-03-11 persson
* allow gig files to use unlimited downward pitch shifting
*
added a limit check for upward pitch shifting
2009-03-11 schoenebeck
* added support for GS Reset SysEx message
2009-03-08 persson
* optimized the DSSI plugin: all plugin instances now share the same
disk streaming buffers
*
added support for the "fine tune" and "pitch bend range"
instrument-level gig parameters
*
fixed minor artifacts in pitch bend handling
2009-03-07 schoenebeck
* 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
2009-03-02 iliev
* fixed endless loop in Engine::SuspendAll() (bug #120)
*
AU plugin, work in progress: minor fixes in the build files
2009-03-02 schoenebeck
* fixed broken linuxsampler.spec RPM packaging file
(Luis Garrido, fixes #114)
2009-03-01 schoenebeck
* 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
2009-03-01 persson
* fixed crash when a linuxsampler plugin is unloading
2009-02-28 iliev
* close all connections when LSCPServer is deleted
2009-02-27 iliev
* fixed crash when changing the audio output device of a sampler
channel with loaded instrument and start playing notes
2009-02-26 iliev
* AU plugin, work in progress:
*
added build files
*
fixes in MIDI event handling
2009-02-24 iliev
* AU plugin, work in progress: added the source files
2009-02-23 persson
* fixed crash when removing channel with active voices (#116)
2009-02-21 iliev
* fixed orphaned pointers when setting maximum voices limit (bug #118)
2009-02-21 persson
* fixed building with libgig installed in a non-standard directory
2009-02-16 iliev
* 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
2009-02-05 iliev
* CoreAudio: Improved hardware detection
*
CoreAudio: Added new driver parameter DEVICE
*
CoreAudio: Restart the audio queue when the device
is changed, for example when headphones are plugged
2009-01-31 schoenebeck
* 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
2009-01-30 iliev
* added (experimental) CoreAudio driver
2009-01-26 iliev
* fixed termination caused by uncaught exception when adding MIDI
instrument with PERSISTENT load mode
2009-01-24 iliev
* fixed a crash which occurs when removing a sampler channel with
instrument loading in progress (bug #113)
2009-01-16 persson
* fixed CPU feature detection on x86_64 (maybe fixes #108)
2008-12-14 iliev
* fixed bug #109 (patch by Chris Cherrett, slightly modified)
2008-12-14 persson
* fixes for building with newer MinGW versions
*
fix for building with bison 2.4 (#111)
*
fix for crash when running gigedit as a plugin
2008-12-10 schoenebeck
* minor LSCP specification fix regarding LSCP command
"GET CHANNEL INFO" (fixes #18)
2008-12-07 schoenebeck
* maximum voices and disk streams can now be altered at runtime (added new
LSCP commands "GET VOICES", "SET VOICES", "GET STREAMS", "SET STREAMS"
and accordingly new LSCP events "GLOBAL_INFO:VOICES" and
"GLOBAL_INFO:STREAMS")
*
bumped version to 0.5.1.8cvs
2008-12-04 persson
* let the GET FILE INSTRUMENT INFO command only return keyswitch range
if keyswitching is actually used (#106)
2008-12-02 schoenebeck
* fixed rpmbuild: config.h is no longer exported
(fixes #87, patch by Devin Anderson)
2008-11-30 persson
* fixed crash on x86_64, introduced in 2008-11-02 commit (#108)
*
fixed configure so it detects x86_64 (#107)
2008-11-16 persson
* fixes for building on OS X
2008-11-02 persson
* added memory ordering constraints to improve stability on multi-core
and multi-cpu systems
2008-11-01 iliev
* notification events for stream/voice count statistics are now sent
only when there are actual changes
*
use atomic_t for stream/voice count statistics
2008-09-30 iliev
* updated the lscp spec
*
code cleanup in InstrumentsDb
2008-09-29 iliev
* Implemented option for adding instruments in separate directories
in the instruments database
(patch by Chris Cherrett & Andrew Williams, a bit adjusted)
2008-09-15 persson
* added experimental support for running LinuxSampler as a DSSI, LV2
and VST plugin
2008-09-11 iliev
* don't retrieve key bindings and keyswitch bindings if
the instrument is not loaded in the instrument manager
*
notification events are now sent when sending MIDI
messages using SEND CHANNEL MIDI_DATA lscp command
*
fixed a bug in the keyswitch bindings retrieval
2008-09-10 iliev
* 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
2008-09-06 persson
* refactoring: extracted lscp notification from main() to a separate
function
*
added helper function MidiInputPort::DispatchRaw for midi device
implementations with raw byte data
*
fixed a win32 build error (atomic.h is working on windows too)
*
code cleanup: moved lscp classes into LinuxSampler namespace
2008-09-06 persson
* rewrote the ConditionServer class to make it possible to create
multiple sample channels when the audio thread isn't running
2008-09-03 iliev
* Optimized the retrieval of the MIDI instrument mappings
2008-08-29 schoenebeck
* 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
2008-08-29 iliev
* fixed a crash which occurs when removing a sampler channel waiting
to start instrument loading after another channel
2008-08-12 iliev
* bugfix: the bank number provided by MIDI_INSTRUMENT_INFO notifications
was incorrect
2008-07-28 schoenebeck
* bugfix: process chromatic / drumkit mode sysex message only for
the respective engine channels that are connected to the MIDI
input port on which the message was received
2008-07-10 schoenebeck
* 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
2008-06-22 persson
* 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
2008-05-28 schoenebeck
* added configure check for uuid library
2008-05-28 schoenebeck
* configure fix for libtool 2.2
(patch by Alexis Ballier)
2008-04-29 iliev
* added support for handling lost files in the instruments database
*
added new LSCP commands: FIND LOST DB_INSTRUMENT_FILES and
SET DB_INSTRUMENT FILE_PATH
2008-04-26 persson
* more gcc 4.3 fixes
2008-04-22 schoenebeck
* added support for GM global device volume SysEx message
2008-04-20 schoenebeck
* allow pan control of engine channels on C++ API level
*
export denormals-are-zero mode feature to C++ API
2008-04-10 schoenebeck
* minor preparations for internal effects support
*
bumped version to 0.5.1.5cvs
2008-03-16 iliev
* moved all OS dependent file operation to File class
2008-03-11 schoenebeck
* 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
2008-03-06 persson
* fixed compilation with gcc 4.3
2008-02-17 persson
* added partial support for the "Controller Triggered" MIDI rule,
enough for piano gigs with pedal noise samples
2008-02-16 schoenebeck
* 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
2008-02-14 schoenebeck
* 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
2008-02-13 schoenebeck
* fixed compilation error on systems which support JACK, but not JACK MIDI
2008-02-04 schoenebeck
* provide velocity information to instrument
editors now as well
2008-02-03 schoenebeck
* the promised "cleanup": rewrote virtual MIDI device's notification a bit
(using now a safe double buffer approach using "SynchronizedConfig"
instead of the Trylock() approach previously to synchronize the list of
virtual MIDI devices)
*
bumped version to 0.5.1.2cvs
2008-02-03 schoenebeck
* added support for triggering notes by instrument editors
(still some cleanup / refactoring ahead, but it should work)
*
bumped version to 0.5.1.1cvs
2008-01-30 schoenebeck
* added support for notifying instrument editors on note-on / note-off
events (e.g. to highlight the pressed keys on the virtual keyboard
of gigedit)
*
fixed return value of recently added Thread::TestCancel() method
*
be verbose on DLL load errors (on Linux)
2008-01-27 persson
* added JACK MIDI driver
2008-01-27 nagata
* Reverting to v1.7
2008-01-25 nagata
* added a new config option --enable-pthread-testcancel, which uses
pthread_testcancel() instead of asynchronous canceling (needed for OSX)
2008-01-20 persson
* made it possible to load an instrument even if the audio thread
isn't running
2008-01-19 persson
* 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
2008-01-13 nagata
* OSX: Definition of ATOMIC_INIT is added
*
OSX: "~" in DB/plugin names are expanded to "$HOME"
*
OSX: MIDI device name are now "linuxsampler_in_%d" where %d=0,1,etc.
2008-01-12 schoenebeck
* autoconf bugfix: the PKG_CONFIG variable wasn't initialized properly,
causing e.g. the libgig test to fail when
"./configure --disable-jack-driver" was used
(patch by Alexis Ballier)
2007-12-31 schoenebeck
* bugfix: the SAMPLERATE parameter of some drivers (e.g. JACK)
reflected the wrong value
2007-12-31 schoenebeck
* bugfix: JACK audio driver did not offer a device parameter
"SAMPLERATE" as opposed to the LSCP specs which requires
all audio drivers to provide it
2007-12-31 iliev
* avoid time consuming samples scanning when
adding instruments to the instruments database
2007-12-29 schoenebeck
* fixed endless loop which occured when loading an instrument editor
plugin DLL on Windows systems failed (note: completely untested yet :) )
2007-12-29 schoenebeck
* bugfix: on some POSIX systems instrument editor plugins refused to
load as we used a non-portable Linux specific struct field
(fixes bug #70, patch by Ronald Baljeu)
2007-12-28 schoenebeck
* removed the nonsense audio channel constraint (which was hard coded to
max. 100 audio channels) for most audio drivers
2007-12-06 schoenebeck
* minor code refactoring of win32 Condition code
*
preparations for release 0.5.1
2007-12-06 senoner
* added -no-undefined in liblinuxsampler:la_LDFLAGS in src/Makefile
in order to avoid the lib getting built as static as opposed to dynamic
(happens in case of unresolved symbols).
2007-12-05 schoenebeck
* seems mingw has problems with accessing static variables from another
static (noinst) libtool library, at least it prevented it from producing
the liblinuxsampler.dll and just created a static archive
*
fixed Perl script which automatically updates our LSCP spec source file
(lscp.xml), it didn't remove multi line C++ code
2007-12-04 iliev
* Added support for monitoring the total number of active disk streams
(new LSCP commands: GET TOTAL_STREAM_COUNT,
SUBSCRIBE TOTAL_STREAM_COUNT, UNSUBSCRIBE TOTAL_STREAM_COUNT)
2007-12-03 senoner
* win32 port: common/Path.cpp :
- fixed missing drive letter in toLscp()
network/lscpserver.cpp:
- added win32 support in VerifyFile()
2007-12-03 schoenebeck
* added index bounds check to quite new LSCP command
"GET FILE INSTRUMENT INFO"
2007-12-03 iliev
* bugfix: The commands GET FILE INSTRUMENTS, LIST FILE INSTRUMENTS,
GET FILE INSTRUMENT INFO now return an error on fail
*
The field FORMAT_NAME returned by GET FILE INSTRUMENT INFO
is now FORMAT_FAMILY
2007-12-02 persson
* made signal handling a bit more robust
2007-11-27 senoner
* global.h: - added macros to emulate usleep() and sleep()
by using Sleep() under WIN32
2007-11-27 senoner
* compilation fix for ASIO (missing ASIOSDK_BASE_DIR prefixes)
in drivers/audio/Makefile.am
2007-11-25 schoenebeck
* LSCP: added new LSCP commands: "GET FILE INSTRUMENTS <file>",
"LIST FILE INSTRUMENTS <file>" and
"GET FILE INSTRUMENT INFO <file> <index>" for retrieving informations
about an arbitrary instrument file on the system where the sampler is
running on (LSCP specs yet to be updated!)
*
bumped version to 0.5.0.1cvs
*
bumped LSCP compliance to LSCP version 1.3
2007-11-21 senoner
* win32 port, work in progress: added autoconf checks for Windows
- win32 additions in linuxsampler.cpp
2007-11-21 senoner
* win32 port, work in progress:
- added ASIO low latency audio output driver
*
MME MIDI input driver:
- fixed number of PORTS to 1 as the win32 MME MIDI API
allows to connect to only one MIDI port at time,
2007-11-19 schoenebeck
* LSCP: allow naughty liblscp to send non-string device parameters
within apostrophes as well
2007-11-15 senoner
* win32 port, work in progress:
*
added MME MIDI Input driver
*
Resampler.h, gig/Synthesizer.h:
*
changed return type of getSample() from int to int32_t
2007-11-15 senoner
* Stream.h: added a missing divide by BytesPerSample in GetWriteSpace()
*
since this function is currently only used in the stream's
*
qsort() compare function, it did trigger any bugs
*
Resampler.h, Synthesizer.h:
*
cubic interpolation now works in 24bit mode too
*
faster method to read 24bit words on little endian machines (x86):
*
replaced 3 byte reads + shifts with a 1 unaligned 32bit read and shift
2007-11-14 senoner
* win32 port work in progress:
*
- implemented win32 support in the following classes:
*
Thread, Condition, Mutex, Path, LscpServer
*
- lscp.y use DONTCARE instead of VOID
*
(a win32 symbol defined)
*
- completed win32 editor plugin loader
2007-11-14 senoner
* 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.
2007-11-13 senoner
* work in progress: win32 editor plugin loader
2007-11-05 schoenebeck
* LSCP server: added support for Windows style path / filenames, however
with forward slash path separators instead of backslash
(i.e. "C:/foo/bar.gig")
2007-10-21 persson
* bugfix: the thread used by an editor plugin didn't die when the
editor closed
2007-10-19 schoenebeck
* added autoconf checks for pthread library
*
added autoconf check for pthread bug found on certain NPTL-enabled
glibc versions (see Gentoo bug report #194076)
2007-10-14 schoenebeck
* 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
2007-10-12 schoenebeck
* slightly renamed recently added "EDIT INSTRUMENT <sampler-chan>" LSCP
command to "EDIT CHANNEL INSTRUMENT <sampler-chan>"
2007-10-12 iliev
* _escapeLscpResponse now escapes backslashes
*
implemented new method Path::fromDbPath
2007-10-11 schoenebeck
* 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
2007-10-07 schoenebeck
* 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
2007-10-07 iliev
* The <name> argument of MAP MIDI_INSTRUMENT command
now supports escape sequences
2007-10-04 schoenebeck
* bugfix in LSCP parser: all comma separated lists of strings were treated
as being one string containing commas, this affected device parameter
LSCP commands (fixes #57)
*
minor code refactoring regarding DB paths in src/network/lscp.y
2007-10-03 schoenebeck
* code refactoring, moved the following files from
src/engines/ -> src/plugins/ :
InstrumentEditor.h ,
InstrumentEditor.cpp ,
InstrumentEditorFactory.h ,
InstrumentEditorFactory.cpp
2007-10-01 schoenebeck
* 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
2007-09-30 schoenebeck
* fixed buggy boolean --enable-foo / --disable-foo configure script
parameters
2007-09-17 iliev
* added new LSCP command: FORMAT INSTRUMENTS_DB
2007-09-16 iliev
* instruments db: slashes-in-names are now escaped with \x2f
2007-09-15 persson
* made sure that LSCP syntax is not affected by gigedit locale
settings
2007-09-14 schoenebeck
* behavior fix: on MIDI CC# 65 (portamento on / off), 126 (mono mode),
127 (solo mode) only kill voices if the respective mode really changed
2007-09-13 iliev
* added support for escape sequences to the instruments database
2007-09-09 schoenebeck
* bugfix: files with percent character ('%') in their path or filename
could not be loaded
2007-09-09 iliev
* fixed a crash which occurs when starting an instrument editor on
a channel with assigned engine but with no instrument loaded
2007-09-09 schoenebeck
* bugfix: files with slash in their path or filename could not be loaded
2007-09-04 schoenebeck
* automake fix: don't throw an error on "make uninstall" just because the
plugin directory is not empty (fixes bug #54)
2007-09-04 schoenebeck
* added highly experimental code for synchronizing instrument editors
hosted in the sampler's process to safely edit instruments while playing
without a crash (hopefully) by either suspending single regions wherever
possible or - if unavoidable - whole engine(s)
*
disk thread: queue sizes are now proportional to CONFIG_MAX_STREAMS
instead of fix values
*
removed legacy Makefiles in meanwhile deleted src/lib directory and its
subdirectories
*
bumped version to 0.4.0.7cvs
2007-08-31 schoenebeck
* minor assembly fix in x86 features detection (don't use the PIC
register, to avoid relocations in the text segment at runtime)
2007-08-29 iliev
* A notification event is now sent when the
instrument loading on a sampler channel failed
2007-08-27 iliev
* 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
2007-08-17 iliev
* ensure that a notification event is sent when already
loaded instrument is assigned to another sampler channel
2007-08-16 iliev
* bugfix: the active stream/voice count statistic was incorrect
2007-08-15 iliev
* 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).
2007-08-13 iliev
* 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
2007-08-10 iliev
* fixed a crash which occurs when reassigning the same engine
on a sampler channel with connected MIDI device
2007-08-07 iliev
* A notification event is now sent when altering
audio output channel on a sampler channel
2007-06-26 schoenebeck
* reenabled assembly features support, at the moment only for
enabling a fast denormal FPU mode (x86 platforms supporting SSE2)
*
bumped version to 0.4.0.6cvs
2007-06-24 iliev
* A notification event is now sent when changing
the instrument map on a sampler channel
2007-06-23 schoenebeck
* 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)
2007-06-22 persson
* fixed some minor memory leaks
2007-06-19 schoenebeck
* filename arguments in LSCP commands now allow to use escape
sequences, that is directly literal as one of: \', \", \\, \n, \r,
\f, \t, \v, or as octal ASCII code value like \132, or as hex ASCII
code value like \xf2) (fixes bug #24)
*
parser now supports extended ASCII character set
(up to ASCII code 255, i.e. includes now umlauts and accents)
*
LSCP parser C++ files are now automatically regenerated when
yacc input source file (lscp.y) was modified
2007-06-18 schoenebeck
* fixed compile time error for old Bison versions
(i.e. v1.28 found on MacOS 10.4, patch by Toshi Nagata)
2007-06-11 schoenebeck
* 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
2007-06-10 persson
* small fix for previous Thread change: don't try to change static
priority for non-RT threads
2007-06-06 schoenebeck
* 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)
2007-06-05 schoenebeck
* minor Debian packaging fix: abort package build process when
Makefile.cvs failed (only relevant to CVS versions of LS)
2007-06-01 schoenebeck
* a pregenerated LSCP parser is no longer kept in CVS, from now on you
need to have bison (or another yacc-compatible parser generator)
installed to be able to compile LS from CVS
2007-05-29 schoenebeck
* 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
2007-05-26 iliev
* added --instruments-db-location command line switch
*
fixed bug regarding the scanning progress notifications
*
directories containing no instrument files are now not re-created
in the instruments databese when recursive scan is performed
2007-05-24 iliev
* Implemented instrument scanning in background
and commands for monitoring the scan progress
2007-05-16 schoenebeck
* XCode project file(s) now capable of creating universal binaries for OSX
(patch by Toshi Nagata)
2007-05-16 iliev
* updated instruments db support
*
added transactions for improving the db performance
*
added commands for copying and finding instruments and directories
2007-05-12 schoenebeck
* fixed compiler error when --enable-override-filter-type was
supplied to the configure script (fixes #46)
2007-05-06 schoenebeck
* added completely new XCode project files for Mac OSX which is now
capable to execute our autoconf environment, thus no need anymore
to maintain the compile time configuration file (osx/version.h) for
OSX manually (patch by Toshi Nagata)
2007-05-03 schoenebeck
* fixed OSX and cross compilation related error
(patch by Toshi Nagata)
2007-04-16 iliev
* added check for the presence of sqlite3 program
2007-04-16 iliev
* Implemented instruments database
2007-04-07 schoenebeck
* minor fix of EGDecay
*
fixed compilation errors regarding OSX
(patch by Toshi Nagata)
2007-04-03 persson
* fixed some more EG bugs that could cause noises or crashes
2007-03-29 iliev
* Added new field - DEFAULT to the
GET MIDI_INSTRUMENT_MAP INFO command response
2007-03-29 iliev
* Added new LSCP command - SET FX_SEND NAME
*
The default map is now the first available map
2007-03-25 iliev
* Implemented new, improved notification system
2007-03-22 iliev
* Added new notification events for tracking
effect send changes and global volume changes
2007-02-28 schoenebeck
* the ALSA audio output driver parameters now reflect the correct
parameter value ranges for the respective selected sound card
(patch by Till Wimmer, a bit fixed and extended)
*
bumped version to 0.4.0.4cvs
2007-02-19 schoenebeck
* by default now all "MAP MIDI_INSTRUMENT" LSCP commands (also the
"PERSISTENT" ones) block until the respective mapping is completely
established in the sampler, added a new argument though to allow
explicit mapping in the background ("MAP MIDI_INSTRUMENT NON_MODAL")
*
LSCP documentation updated
2007-02-10 persson
* EG fine tuning: when attack is zero the EG starts at a level above
max sustain level, which means that there is a decay phase even if
sustain is 100%
2007-02-07 schoenebeck
* for now just set all notes off when receiving a MIDI coarse tuning
message to prevent hanging notes when transposing while playing
2007-02-07 schoenebeck
* handle MIDI coarse tuning messages (MIDI RPN #0 MSB, #2 LSB),
currently lazy implementation, transpose value is simply added on the
note on/off values instead only at the mandatory places, thus when
altering transpose while playing, voices can unintendedly survive
2007-02-07 schoenebeck
* bugfix: sampler crashed when trying to persistently map a not existent or
corrupt .gig file ("MAP MIDI_INSTRUMENT ... PERSISTENT")
*
behavior fix: reset FX send levels i.e. when receiving a MIDI "reset all
controllers" message
*
bumped version to 0.4.0.3cvs
2007-02-03 persson
* EG fix: a release value of zero could cause noises or crash
*
fix of previous thread safety fix, which in some cases locked the
engine
2007-02-03 persson
* 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"
2007-01-23 schoenebeck
* bugfix regarding FX Sends: when more than one sampler channel used FX
sends, only the audio signal of the last sampler channel made it into the
final output signal
*
fixed small autoconf compilation issue on certain systems (complained
about missing AM_PATH_ARTS macro)
2007-01-14 schoenebeck
* extended response of LSCP command "GET FX_SEND INFO" to return the FX
Send's MIDI controller and current send level and added two new LSCP
commands "SET FX_SEND MIDI_CONTROLLER" and "SET FX_SEND LEVEL"
respectively
2007-01-09 schoenebeck
* create IDs for FX Send entities in a logical sequence on a per sampler
channel basis
2007-01-07 capela
* 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.
2007-01-04 schoenebeck
* further bugfixes regarding MIDI instrument LSCP commands
("LIST MIDI_INSTRUMENTS ALL" reflected same bug as the
previously fixed "LIST MIDI_INSTRUMENTS" command and
"GET MIDI_INSTRUMENT_MAP INFO" result was not
terminated by a "." line)
2007-01-03 schoenebeck
* delete all MIDI instrument maps when a sampler-reset is issued
(i.e. on a "RESET" LSCP command)
2007-01-02 schoenebeck
* bugfix: LSCP command "LIST MIDI_INSTRUMENTS" returned wrong bank number
2006-12-29 schoenebeck
* global volume can now be altered at runtime
(added two new LSCP commands for this, LSCP specs updated)
2006-12-28 schoenebeck
* fixed noise which occured while using effect sends
2006-12-27 schoenebeck
* implemented effect sends (also added new LSCP commands for this feature,
updated LSCP spec document along with this commit batch as well)
2006-12-19 schoenebeck
* bugfix: sampler was limited to load max. 200 instruments in the
background (replaced RingBuffer FIFO by a std::list FIFO)
2006-12-17 iliev
* Added new notification events for tracking audio/MIDI device changes,
MIDI instrument map changes and MIDI instrument changes
2006-12-17 iliev
* fixed bug on adding MIDI instrument maps
2006-12-15 schoenebeck
* revised and extended MIDI instrument mapping feature to allow managing
arbitrary amount of maps and assigning each sampler channel individually
to one map (this commit batch includes LSCP spec document update and
respective implementation on LS side)
2006-12-06 schoenebeck
* fixed crash occuring in conjunction with the new 'MAP MIDI_INSTRUMENT'
LSCP command (cause: RingBuffer was not able to do deep copies)
2006-11-30 iliev
* fixed crash occurring on certain LSCP scripts (Bug 39)
2006-11-29 schoenebeck
* store volume for each MIDI instrument mapper entry individually instead
of managing the volume as shared setting with the respective instrument
entry of its InstrumentManager
2006-11-28 persson
* if a filter is used and EG2 finishes before EG1, let the voice die
when EG2 has finished (this fixes a problem with clicks and voice
starvation for some gigs)
2006-11-27 schoenebeck
* implemented MIDI instrument mapping according to latest LSCP draft
2006-11-26 schoenebeck
* updated LSCP specification: added new command set for
managing MIDI instrument mappings, bumped LSCP spec
version to v1.2
(not implemented on server side yet)
2006-11-24 schoenebeck
* preparations for release 0.4.0
2006-11-05 persson
* fixed mutex initialization bug
2006-10-21 schoenebeck
* fixed crash when instrument loading failed previously on the same
sampler channel (fixes bug #36)
2006-10-02 persson
* small fix of LFO1 behaviour (dampening from max volume instead of
amplifying from 0)
*
added checks for bad MIDI data
2006-08-05 schoenebeck
* little configure.in fix for PPC
(patch by Ebrahim Mayat)
2006-07-28 iliev
* The engine names are again encapsulated
into apostrophes as is said in the specification
2006-07-28 iliev
* Commands returned by LinuxSampler in echo mode
are now terminated with <CR><LF> instead of <LF>
2006-07-23 schoenebeck
* MIDI driver API extension for MIDI drivers which already supply exact
time stamps for events (i.e. for offline rendering based MIDI drivers)
2006-07-22 persson
* real support for 24 bit samples - samples are not truncated to 16
bits anymore
*
support for aftertouch (channel pressure, not polyphonic aftertouch)
2006-07-05 schoenebeck
* src/Sampler.h, src/Sampler.cpp: allow 3rd party applications to
retrieve available drivers and sampler engines
*
src/linuxsampler.cpp: show available engines on startup (on the console)
2006-06-28 schoenebeck
* various fixes to allow liblinuxsampler to be used
(as a native C++ library)
2006-06-25 persson
* new filter implementation, which is more accurate and supports all
filter types including bandreject and lowpass turbo
2006-05-31 capela
* packaging changes:
- changed deprecated copyright attribute to license; added ldconfig
to post-(un)install steps; added devel package for liblinuxsampler;
to linuxsampler.spec (RPM)
2006-05-25 persson
* gcc 4.1 compilation fix
2006-05-14 persson
* sample loop parameters are now taken from the DimensionRegion
instead of the wave chunk
*
fixed keyswitching for v3 gigs with a number of keyswitch splits not
equal to a power of two
2006-04-14 schoenebeck
* added compile time options to allow disabling the various audio and MIDI
drivers (./configure --disable-foo-driver)
2006-04-11 schoenebeck
* added synthesis benchmark for gig::Engine
2006-03-25 schoenebeck
* added compile time option to disable processing of All-Notes-Off
MIDI messages
2006-03-19 persson
* more thread safety fixes: another fix for lscp "load engine" and
midi thread. Sysex midi protected against lscp. Instrument loader
thread protected against lscp thread.
2006-03-04 persson
* fixed concurrency problems between the main thread doing
lscp notifications and the lscp thread
*
bug fix: the LFOs were not properly initialized
2006-02-26 persson
* fixed some concurrency problems between the lscp thread and the
audio/midi threads for these commands: load engine, set channel
audio output device, set channel midi input device/port/channel and
remove channel. Thanks to Vincent Bongiorno for bug reports and
testing.
*
removed an autotools warning
*
fixed an iterator bug
*
minor code clean-ups
2006-02-10 schoenebeck
* added aRts audio output driver (by no means RT safe)
2006-02-09 persson
* fix of silly bug introduced in recent memory fix: all devices were
destroyed instead of just the one asked for in the Sampler::Destroy
functions
2006-02-08 persson
* fixed some invalid iterator errors
2006-02-06 persson
* fixed some memory management errors
2006-02-05 persson
* added smoothing of volume changes caused by control change messages
*
fine tuning of the crossfade volume curve
2006-01-28 persson
* 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
2006-01-15 persson
* added linear interpolation of volume modulation inside a
subfragment; this prevents clicks during voice stealing. Can be
switched off with the --disable-interpolate-volume configure option.
2006-01-14 schoenebeck
* 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)
2006-01-08 schoenebeck
* bugfix in LSCP parser which was confused by space(s) within device
parameters
(e.g. "SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 SOMEPARAM='foo bar'")
*
changed version to 0.3.3cvs
2005-11-22 schoenebeck
* src/common/optional.h: fixed '=' operator which did not return anything
2005-11-05 persson
* Bug-fixes: pitch changes larger than one octave didn't work. Looped
samples small enough to fit in RAM didn't work.
2005-11-02 persson
* minor EG fine tuning: attack time now has a minimum value to prevent
clicks
2005-10-30 persson
* fixed voice stealing - stolen voices weren't killed
2005-10-26 iliev
* fixed the notification messages delay due to lack of
network activity (fixes bug #26)
2005-10-16 persson
* Filter tuning: calculation of cutoff frequency and bandwidth
improved. Removed use of "BasicBPFilter". Changed bandpass filter
from constant peak to constant skirt. Use gig parameter Resonance if
no resonance controller is set. Removed keyboard tracking influence
on resonance.
2005-10-02 persson
* EG fixes: the length of "attack hold" stage was wrong. Release stage
can now start before attack stage ends. Cancel release didn't work
when sustain was zero.
2005-09-26 schoenebeck
* 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
2005-09-23 iliev
* Added new LSCP commands: GET TOTAL_VOICE_COUNT,
GET TOTAL_VOICE_COUNT_MAX, SUBSCRIBE/UNSUBSCRIBE TOTAL_VOICE_COUNT
2005-09-21 iliev
* Added support for sostenuto pedal
2005-09-21 schoenebeck
* src/drivers/MidiInputPort.cpp: fixed legacy SysEx code which caused
dispatching of MIDI SysEx messages several times instead of once
*
src/engines/gig/Engine.cpp: fixed bug in SysEx handling
(patch by Juan Linietsky)
2005-09-11 schoenebeck
* synthesis core optimizations
2005-09-03 schoenebeck
* fixed endless loop which occured on MIDI control change
and pitch bend events
2005-09-02 persson
* bug fixes for the new EG implementation
2005-08-16 schoenebeck
* extensive synthesis optimization: reimplementation of EGs and LFO(s),
removed synthesis parameter prerendering and the synthesis parameter
matrix in general, splitting each audio fragment into subfragments now
where each subfragment uses constant synthesis parameters
(everything's still very buggy ATM)
2005-07-30 iliev
* Added CHANNEL_INFO notification when engine is assigned to
sampler channel with no midi and audio device set (Fixes bug #22)
2005-07-26 persson
* 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.
2005-07-25 schoenebeck
* fixed little inconsistency: LSCP commands 'LIST AVAILABLE_ENGINES' and
'GET CHANNEL INFO' returned different names for the gig::Engine,
returning now only 'GIG'
2005-07-24 iliev
* Added configure option --enable-process-muted-channels
which can be used to enable the processing of muted channels
2005-07-21 iliev
* Fixed app exit on Broken pipe error (Fixes bug #20)
2005-07-20 schoenebeck
* 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)
2005-07-19 schoenebeck
* install necessary development header files for allowing 3rd party
applications to link against liblinuxsampler
*
liblinuxsampler's API documentation can be generated with 'make docs'
(Doxygen required)
2005-07-16 persson
* fine tuning of the EG modulation parameters
2005-07-15 schoenebeck
* preparation for bugfix release 0.3.3
2005-07-14 schoenebeck
* 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
2005-07-12 schoenebeck
* minor efficiency fix (LFO preprocessing was performed even though the
respective LFO was disabled by the instrument patch)
2005-07-05 persson
* gcc 4.0 compilation fixes
2005-06-23 schoenebeck
* final preparations for bugfix release 0.3.2
2005-06-22 schoenebeck
* update MIDI channel info on program change
2005-06-21 schoenebeck
* don't reset volume, pan, pitch and MIDI controller values on instrument
or audio output device change
*
send 'CHANNEL_INFO' LSCP event on MIDI program change messages
2005-06-21 schoenebeck
* fixed minor issue with null/silence samples
(those stole voices even though they don't need a voice at all which
resulted in "voice stealing didn't work out" messages)
2005-06-20 schoenebeck
* 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)
2005-06-19 senkov
* added cmdline options for lscp address and port
2005-06-18 schoenebeck
* another voice stealing fix
(endless loop occured when voices were stolen from other engine channels)
2005-06-17 schoenebeck
* LSCP server: fixed LSCP event "CHANNEL_INFO" notification
(e.g. did not notify on volume changes)
2005-06-16 schoenebeck
* don't reset scale tuning on instrument or audio output device change
2005-06-15 schoenebeck
* fixed 'make dist' build rule to include all necessary files
2005-06-15 schoenebeck
* revised voice stealing (fixes crash caused by voice stealing)
2005-06-12 capela
* RPM .spec script added to repository.
2005-06-11 persson
* volume of release triggered samples now depends on note-on velocity,
note length and gig parameter "release trigger decay" instead of
note-off velocity.
2005-06-08 schoenebeck
* fixed some crashs in LSCP server
(patch by Grigor Iliev, fixes #19)
2005-06-08 schoenebeck
* hand-crafted assembly optimization code can be disabled with
'./configure --disable-asm' (definitely not recommended)
2005-06-06 persson
* 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.
2005-06-04 schoenebeck
* updated autotools build files for conditional compilation of CoreMIDI
(OS X) and MidiShare (Linux, OS X, Windows) drivers
2005-06-02 flax
* multiport and control file fixes
2005-05-31 flax
* altered and fixed debian packaging
2005-05-24 schoenebeck
* src/network/lscpserver.cpp: fixed segfault
(patch by Grigor Iliev, fixes #17)
*
added man page
*
final preparations for the first official release (which will be 0.3.1)
2005-05-22 schoenebeck
* (re)implemented voice stealing algorithm "oldestvoiceonkey" and made it
the default voice stealing algorithm
*
added new LSCP command "GET SERVER INFO" which currently returns
description and version about this sampler
*
added some API documentation comments
*
minor cleanup
2005-05-21 schoenebeck
* Little LSCP API change: renamed events "CHANNELS" -> "CHANNEL_COUNT" and
"INFO" -> "CHANNEL_INFO" to be more meaningful (patch by Grigor Iliev).
2005-05-20 schoenebeck
* tiny fix in LSCP parser; returned prefix "Err" instead of "ERR" on syntax
errors (patch by Grigor Iliev)
2005-05-19 schoenebeck
* 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.
2005-05-17 schoenebeck
* Implemented MIDI program change as general, engine independant solution.
The program number will determine the sampler channel to which the MIDI
device will be connected to and the given MIDI channel defines on which
MIDI channel that sampler channel should listen to. Also the program
change will disconnect probably established connection from the previous
program change event.
2005-05-09 schoenebeck
* ALSA driver: fix of previous ALSA fix ;-)
2005-05-09 capela
* [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.
2005-05-08 schoenebeck
* implemented progress indicator for loading instruments
(can be polled with "GET CHANNEL INFO", field "INSTRUMENT_STATUS")
2005-05-05 schoenebeck
* ALSA audio driver: don't block when trying to create audio device
2005-05-04 schoenebeck
* autotools build fixes for PPC architecture
2005-05-03 schoenebeck
* 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
2005-04-29 schoenebeck
* updated unit tests
2005-04-15 schoenebeck
* little correction in LSCP specification document (patch by Grigor Iliev)
2005-04-10 schoenebeck
* fixed bug in MMX/SSE(1) implementation of the sample loop code (caused
RAM-only voices to crash when entering the sample's loop section under
certain conditions)
2005-04-10 persson
* removed some build warnings
*
fixed a bug with hanging notes when using sustain pedal
*
release samples are not triggered anymore when sustain pedal is down
2005-04-06 schoenebeck
* fixed couple of mistakes in the LSCP specification document
2005-04-03 schoenebeck
* fixed MIDI GS scale tuning (via SysEx Message)
2005-03-24 schoenebeck
* remove quotation marks from driver parameters
2005-03-24 schoenebeck
* ALSA audio driver: don't block for retrieving sound card parameter infos
2005-03-21 schoenebeck
* JACK audio driver: fixed handling of channel parameter 'JACK_BINDINGS'
*
fixed parser bug of multiplicity parameters
2005-03-19 persson
* fixed a compilation error in Pool.h (gcc 3.4.3)
2005-03-18 schoenebeck
* ALSA MIDI driver: added MIDI port parameter 'ALSA_SEQ_ID' which reflects
the ALSA sequencer ID of a port (read only)
2005-03-17 schoenebeck
* fixed segmentation fault on "GET CHANNEL INFO" commands which occured
when an engine type was selected but no audio device connected yet to
the sampler channel (fixes bug #4)
2005-03-17 schoenebeck
* fixed event leak (events sent to inactive keys were not freed)
*
implemented MIDI channel mode messages "All Sound Off", "Reset All
Controller", "All Notes Off" (fixes bug #5)
2005-03-15 schoenebeck
* fixed another crash under heavy load which was accidently introduced with
the previous commit - events have to be processed completely on all
engine channels before audio is rendered (fixes bug #7)
2005-03-14 schoenebeck
* spawning layered voices now within a loop instead of recursively (fixes
segmentation fault under heavy voice count load and reduces stress on the
stack)
*
voice stealing operates on all engine channels now
*
limit voice stealing to MAX_AUDIO_VOICES thefts per audio fragment cycle
*
fixed keygroup handling (layered voices could kill each other)
2005-03-09 persson
* 24-bit decompression now supports the 20 and 18 bit formats
*
support for "random" and "round robin" dimensions
*
removed a warning printout for empty samples during instrument
loading
2005-03-05 persson
* fixed a bug that sometimes caused clicks at the beginning of samples
*
added denormal number elimination for CPUs with SSE2 support
2005-03-04 schoenebeck
* implemented MIDI Control Change 7 (Volume)
*
implemented MIDI Control Change 10 (Panpot)
2005-03-03 schoenebeck
* fixed some segfaults (which occured on EngineChannel destruction)
*
InstrumentResourceManager: recache small samples if their current
number of silence sample points are not sufficient enough for the used
audio output device
*
src/linuxsampler.cpp: voice / streams statistics on the console is back
again (can be turned on with command line switch --statistics)
2005-03-01 persson
* fixed a bug in the low-level thread synchronizing code, that made
loading of very small gig files sometimes fail
2005-02-26 schoenebeck
* gig::Engine: fixed silence (engine channels' events were not imported
into the engine, fixed undesired creation of new gig::Engine instances
(and disk threads)
*
AudioOutputDevice: reverted behavior to render per Engine instance (and
not per EngineChannel instance)
2005-02-26 schoenebeck
* 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)
2005-02-23 persson
* added support for sample parameter 'attenuation'
2005-02-22 schoenebeck
* JACK driver: fixed channel parameter 'JACK_BINDINGS' which did not work
for a multi JACK device setup
2005-02-22 schoenebeck
* fixed build failure if libsqlite3 is not installed
2005-02-21 senkov
* Added first cut of instrument database query support.
2005-02-20 persson
* fixed a bug that made some release triggered samples too short
(envelope went directly from attack to release)
2005-02-20 persson
* fixed a bug that caused noise at end of samples
2005-02-19 schoenebeck
* fixed possibility that memory got not locked
*
immediately set instrument status when calling LOAD INSTUMENT NON_MODAL
2005-02-18 schoenebeck
* fixed segfault and freeze of LSCPInstrumentLoader thread
2005-02-17 schoenebeck
* lscpserver: we now only use one instrument loader thread; commands for
loading instruments in the background wait in a queue to be processed one
by one to avoid possible race conditions and to improve I/O efficiency
*
fixed possible race condition while streaming with multiple disk threads
by using an own decompression buffer for each disk thread
*
libgig: fixed some memory leaks caused by non virtual base constructors
2005-02-13 persson
* small fix for building with old JACK versions (0.94 and earlier)
2005-02-13 senkov
* updated spec for INSTRUMENT_NAME
2005-02-12 senkov
* Added INSTRUMENT_NAME to GET CHANNEL INFO command result set
2005-02-12 schoenebeck
* added Debian packaging files
2005-02-12 schoenebeck
* JACK audio driver: added device creation parameter 'NAME' which can be
used to assign an arbitrary name to the JACK client, it's now possible to
create multiple JACK audio output devices simultaniously for LS
*
src/network/lscpserver.cpp: fixed little bug in
'SET CHANNEL AUDIO_OUTPUT_CHANNEL' (altering of audio routing)
implementation, cleanup of error messages
2005-02-11 persson
* libgig: Fixed mono decompression.
2005-02-11 schoenebeck
* some fixes regarding the filter (fixes the "silence" bug which occured
occasionally, caused by random biquad parameters which lead to unstable
filter equation and thus to infinit filter output results)
2005-02-10 persson
* libgig: Support for compressed mono samples. Experimental support
for compressed 24 bit samples. Fixes for decompression on big-endian
CPUs. Fix for bug that truncated end of compressed samples.
2005-02-09 schoenebeck
* bunch of fixes for OSX (patch by Stephane Letz)
2005-02-07 senkov
* Updated implementation for real time notify messages:
VOICE_COUNT, STREAM_COUNT, BUFFER_FILL
2005-02-06 senkov
* Added implementation for NOTIFY:CHANNELS event
2005-02-06 senkov
* Removed mentioning of UDP from event unsubscription section.
2005-02-04 schoenebeck
* libgig: another memory leak and memory (de)allocation fix
(patch by "Gene" a.k.a Anders Alm)
2005-01-29 schoenebeck
* support for keyswitching
*
ignore if no sample was defined for region(s) or dimension region(s)
(patch by Andreas Persson)
2005-01-25 schoenebeck
* fixed some memory leaks (patch by Gene Anders)
2005-01-23 schoenebeck
* another crossfade fix (honoring AttenuationController for case 0,0,0,0,
fixed cases in_start = in_end = CrossfadeControllerValue, fixed curve for
cases out_start < CrossfadeControllerValue < out_end, honoring
InvertAttenuationController parameter)
*
support for up to 8 dimensions as introduced by Gig V3
(patch by Andreas Persson)
2005-01-21 schoenebeck
* libgig: fixed vcf_type_lowpassturbo value, fixed crossfade points order
*
gig::Voice: fixed special crossfade case 0,0,0,0 which actually means no
crossfade defined
2005-01-09 senkov
* Fix for a core. SET CHANNEL AUDIO_OUTPUT_CHANNEL needs
to check if audio output device exists.
2005-01-03 senkov
* Fixed a bug in assembly that cause crashes in some cases
2005-01-03 senkov
* Fixed pitch calculation. FineTune needs to be taken as is
without multiplying it by 10.
2005-01-01 senkov
* Fix a basic diskthread multichannel issue.
2005-01-01 senkov
* Initialize the synthesis mode bitmask properly
2004-12-30 senkov
* Fixed bug with mixed channel creation
2004-12-29 schoenebeck
* fixed endless loop at the end of sample playback
(patch by Andreas Persson)
2004-12-28 senkov
* Fixes for engine reloading. Fixed streaming bugs in some
cases only, most probably not all yet.
2004-12-25 schoenebeck
* architecture independence fixes, should now compile again for non x86
systems
*
tiny fix of command line switch --version
2004-12-21 senkov
* Added some profiling capabilities, bugs.
2004-12-18 senkov
* Applied patch from Andreas Persson and made a few other small
changes to fix a bug in the filter code.
2004-12-14 schoenebeck
* fixed bug which caused samples not to be played back to their actual end
(patch by Andreas Persson, added a small extra fix)
2004-12-13 senkov
* fixed CalculateBiquadParameters() to set parameters for
both right and left, not just left.
2004-12-13 schoenebeck
* introduced 'synthesis mode' to reduce the amount of code and conditionals
for the current synthesis case in the main synthesis loop
*
support for MMX and SSE(1) in the core synthesis algorithms (CPU feature
detection at runtime, only x86 so far)
2004-12-13 schoenebeck
* introduced 'synthesis mode' to reduce the amount of code and conditionals
for the current synthesis case in the main synthesis loop
*
support for MMX and SSE(1) in the core synthesis algorithms (CPU feature
detection at runtime, only x86 so far)
2004-12-04 schoenebeck
* libgig: experimental support for Gigasampler v3 format; 64 bit file
offsets are truncated to 32 bit, 24 bit samples are truncated to 16 bit
and additional articulation informations are ignored at the moment
(patch by Andreas Persson)
2004-11-21 schoenebeck
* libgig: applied patch by Andreas Persson which improves accuracy of all
three velocity response curves
2004-10-25 schoenebeck
* gig::Engine: changed way how events make it from the input event queue
into the engine's process chain (fixes forced segfault in EGADSR)
*
Event.h: using signed type for fragment position for easier
differentiation if event might happened before or after current fragment
2004-10-22 schoenebeck
* applied patch from James Klicman which fixes some issues in configure.in
2004-10-20 senkov
* Quoted warnings to avoid unmatched single quote.
2004-10-19 schoenebeck
* LinuxSampler was badly broken with last commit, fixed that
*
using now James Klicman's proposol to fix the reported linker problem
*
Mutex.cpp: try to force UNIX98 compatibility (if not already supported)
*
Makefile.cvs: generate (and clean) all necessary autotools files
2004-10-19 schoenebeck
* configure.in: added check for UNIX98 compatibility, check if there's at
least one supported MIDI input and audio output system available, added
conditionals for ALSA and JACK
*
src/drivers/audio/Makefile.am: ALSA and JACK drivers are only compiled
respectively if they're supported by the system
*
MidiInputDeviceFactory.cpp, AudioOutputDeviceFactory.cpp: little
workaround for reported linker problem
*
removed autotools generated files from CVS
2004-10-16 schoenebeck
* fixed segfault which occured whenever a voice stole a voice and was in
turn killed in the same audio fragment, to fix that the MIDI key
informations are now updated only after all voices were processed
2004-10-14 schoenebeck
* bunch of bugfixes (e.g. segfault on voice stealing)
2004-10-09 schoenebeck
* compatibility fixes for old gcc 2.95.4
2004-10-09 schoenebeck
* MidiInputPort: fixed dispatching of MIDI events to engines which are
listening to all MIDI channels
*
switched MIDI channel indexing to low level indexing (means 0..15 now)
2004-10-08 schoenebeck
* libgig: fixed panorama value in DimensionRegion (invalid conversion
from signed 7 bit to signed 8 bit)
*
src/linuxsampler.cpp: stacktrace is now automatically shown on fatal
errors (that is segmentation faults, etc.), gdb should be installed for
this to work
*
gig::Voice: tiny accuracy fix of pan calculation
*
replaced old pool classes by completely new ones which now offer
Iterator abstraction
2004-10-07 capela
* gcc-c++ 3.4.1 compability fixes.
2004-09-29 senkov
* Fixed a hang in stage_fadeout
2004-09-23 schoenebeck
* fixed another bug in EGADSR which caused clicks when voices were killed
near the audio fragment end
2004-09-20 schoenebeck
* changed curve type from exponential to linear in stage 'end' of
EGADSR (fixes click sounds at the end of voices)
2004-09-20 schoenebeck
* added first two experimental voice stealing algorithms ('oldestkey' -
which just steals the oldest voice on the oldest key and 'keymask' - which
tries to pick the oldest voice on the same key where the new voice should
be spawned, if it fails it behaves like 'oldestkey'), the desired algorithm
can be selected at compile time (see Engine.h) will be configurable via
LSCP soon though
2004-09-19 senkov
* Small fix to pan coeff. calculation.
*
(LS was silent with gigs where pan was 0).
2004-09-18 schoenebeck
* support patch panorama info
2004-09-17 schoenebeck
* added support for scale tuning via MIDI GS system exclusive message
2004-09-15 schoenebeck
* added support for release trigger dimension (that is voices which are
spawned when a key was released)
*
libgig: bugfix in dimension region switching
2004-09-12 schoenebeck
* implemented key groups (a.k.a exclusive groups) which is important for
drum patches and monphonic instruments
*
src/engines/gig/Engine.cpp: bugfix in ProcessNoteOn() - did not always
stick the note on event to the respective key's own event list although
e.g. the EGADRS expects it to find there
2004-09-12 senkov
* Fixed a crash in EGADSR::Process()
2004-09-09 schoenebeck
* added support for crossfades
*
support sample playback start offset
2004-09-07 schoenebeck
* added support for layers
*
fixed initial pitch calculation which did not honor the sample's own
sample rate
2004-09-05 schoenebeck
* libgig: fixed / improved accuracy of all three velocity to volume
transformation functions (a.k.a. 'nonlinear','linear','special')
2004-09-02 schoenebeck
* src/engines/gig/Voice.cpp: dimension region selection takes current
MIDI controller values into account
2004-08-28 schoenebeck
* src/network/lscp.y: fixed symbol 'midi_input_channel_index' to allow
keyword 'ALL' for the respective LSCP commands
2004-08-26 schoenebeck
* ALSA audio driver: bugfix in device parameter 'CARD' which caused an
error message if used in conjunction with 'CREATE AUDIO_OUTPUT_DEVICE'
LSCP command
*
JACK audio driver: fixed minor JACK port name issue and the device was
not activated by default on creation which caused it to render solely
silence
*
src/network/lscpserver.cpp: retry to bind socket for 3 minutes if bind
failed
2004-08-25 schoenebeck
* ALSA MIDI driver: create one MIDI port by default, implemented parameter
info for parameter 'ALSA_SEQ_BINDINGS'
*
ALSA audio driver: implemented parameter info for driver parameters
'FRAGMENTS' and 'FRAGMENTSIZE'
*
JACK audio driver: fixed creation of channels on device creation, channel
parameter 'NAME' now actually updates the respective JACK port name,
implemented channel parameter 'JACK_BINDINGS' (as well as its parameter
info)
*
src/network/lscpserver.cpp: fixed commands
"GET MIDI_INPUT_DRIVER_PARAMETER INFO" and
"GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO", fixed backward compatibility
for "SET AUDIO_OUTPUT_TYPE" and "SET MIDI_INPUT_TYPE" commands
*
src/networ/lscp.y: added comma character (',') to symbol 'char'
*
src/drivers/DeviceParameter.cpp: fixed methods RangeMin(), RangeMax() in
class DeviceCreationParameterInt which returned wrong values
2004-08-22 schoenebeck
* set default volume to 1.0 in Gigasampler engine (was 0.0)
*
implemented "SET CHANNEL AUDIO_OUTPUT_CHANNEL" LSCP command
*
fixed "GET ENGINE INFO" LSCP command
*
fixed "GET CHANNEL INFO" LSCP command
*
src/network/lscp.y: fixed 'stringval' rule (returned string with formal
apostrophes), fixed 'dotnum' rule (ignored position after decimal point)
2004-08-21 schoenebeck
* bug fixes in LSCP server (returned '1'/'0' instead of 'true'/'false' for
binary fields, spuriously created new elements in maps while trying to
find map members)
2004-08-20 schoenebeck
* src/drivers/midi/MidiInputDeviceAlsa.cpp: implemented port parameter
"NAME" which now updates the registered ALSA seq port name as well, fixed
port parameter "ALSA_SEQ_BINDINGS" to allow more than one binding
*
src/network/lscp.y: fixed symbol STRINGVAL (that is strings encapsulated
into apostrophes) which didn't allow space characters
*
changed all driver names and driver paramaters to upper case
*
fixed typo in LSCP documentation
(section 5.3.12, was: "SET MIDI_INPUT_PORT PARAMETER",
should be: "SET MIDI_INPUT_PORT_PARAMETER")
2004-08-17 schoenebeck
* completely removed the lex scanner and replaced it by pure yacc rules
for all terminal symbols (that is command keywords and variables) to
avoid misunderstandings while parsing (e.g. recognition of command
keywords in string arguments)
*
src/drivers/audio/AudioChannel.cpp: changed channel parameter 'Name' to
'NAME' as defined in the LSCP documentation
2004-08-14 schoenebeck
* src/drivers/DeviceParameter.cpp: fixed return values for
classes 'DeviceRuntimeParameterString' and 'DeviceCreationParameterString'
which returned their values without being encapsulated into apostrophes,
fixed return values for 'DeviceRuntimeParameterBool' and
'DeviceCreationParameterBool' to be returned in lower case (as defined in
the LSCP documentation)
*
src/network/lscp.y: key value pairs now also allow strings (without
spaces) to be not encapsulated into apostrophes (e.g. foo=bar instead of
foo='bar')
*
src/linuxsampler.cpp: show on the console which TCP port the LSCP server
is using
2004-07-28 schoenebeck
* introduced and implemented new LSCP command "RESET" which resets the
whole sampler instance
*
src/drivers/audio/AudioOutputDeviceAlsa.cpp: parameter 'card' now
returns all available sound cards as possibility, added dependency to
parameter 'card' to parameters 'fragments' and 'fragmentsize'
*
src/drivers/DeviceParameter.cpp: fixed return value(s) for classes
'DeviceCreationParameterString' and 'DeviceCreationParameterStrings'
which returned the default value(s) not encapsulated into apostrophes
*
src/network/lscpserver.cpp: fixed implementation of LSCP commands
"GET MIDI_INPUT_DRIVER_PARAMETER INFO" and
"GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO"
2004-07-25 schoenebeck
* src/linuxsampler.cpp: tidied up a bit, "initialization completed"
message shown only after the server is actually running
*
src/testcases/: print the name of each test suite before running the
tests of the suite, added first tests against the LSCP server using a
socket connection to the LSCP server (tests for the following LSCP
commands: "ADD CHANNEL", "GET CHANNELS", "REMOVE CHANNEL")
2004-07-24 schoenebeck
* implemented "SET ECHO" LSCP command
2004-07-18 schoenebeck
* src/Sampler.cpp: changed sampler channel index allocation from consistent
channel index allocation to incrementing channel index allocation, that is
it doesn't fill channel index gaps anymore (to avoid race conditions)
*
implemented "LIST CHANNELS" LSCP command
2004-07-15 schoenebeck
* src/linuxsampler.cpp: print out LinuxSampler version and show all
registered MIDI input drivers
*
renamed class 'InputOutputDevice' -> 'Device'
2004-07-13 schoenebeck
* moved directory '/src/audiodriver' -> '/src/drivers/audio'
*
moved directory '/src/mididriver' -> '/src/drivers/midi'
2004-07-13 senkov
* Get rid of the timeout on select()
2004-07-07 senkov
* GET MIDI_INPUT_PORT_PARAMETER INFO command
2004-07-07 senkov
* Added MISCELLANEOUS event to help debugging client/server
interaction. It spits out every line received by the server.
2004-07-06 senkov
* Reworked the infrastructure to allow for parameter
registration and creation
*
Changed alsa audio output and midi drivers
to work with new infrastructure
2004-07-03 senkov
* moved ToString to common
*
Implemented handling of multiple connections
*
Implemented guts for event subscription/unsubscription
*
Illustrated event notification sending by sending MISC events
when connections are established or terminated.
2004-07-02 senkov
* Do not use accessor operator for the map unless
the element accessed already exists
2004-07-01 senkov
* Small enhancement to mutex class to support Trylock()
2004-06-29 capela
* Unconsolidaded MIDI input related channel commands are back:
SET CHANNEL MIDI_INPUT_DEVICE <chan> <midi-device>
SET CHANNEL MIDI_INPUT_PORT <chan> <midi-port>
SET CHANNEL MIDI_INPUT_CHANNEL <chan> <midi-chan>
*
Still useful for compability with legacy clients, an almost
deprecated command gets re-implemented:
SET CHANNEL MIDI_INPUT_TYPE <chan> <midi-driver>
*
Optional parameter list on MIDI input device creation fixed,
but not quite fully effective yet:
CREATE MIDI_INPUT_DEVICE <midi-driver> [<key>=<val>...]
2004-06-29 senkov
* Removed/cleaned up some left over stuff
*
Fixed midi port name parameter (no longer static)
2004-06-28 senkov
* Updated parser, lscp server and sampler class for new MIDI_INPUT
*
Minor fixes (and major new bugs) here and there
*
Consolidated 3 SET CHANNEL MIDI_xxx commands into one:
SET CHANNEL MIDI_INPUT
2004-06-28 senkov
* Fixed object deletion
2004-06-28 senkov
* Updated MIDI infrastructure similar to what was previously
done with the AUDIO
*
Implemented Alsa driver using new infrastructure
*
TODO: MacOS drivers!
2004-06-26 schoenebeck
* added directory 'Documentation'
*
network protocol document now under CVS, converted from latest document
(http://www.linuxsampler.org/api/draft-linuxsampler-protocol-11.sxw)
into XML (Documentation/lscp.xml), lscp.xml is compliant to RFC 2629 and
can be converted into HTML or RFC common ASCII format by using 'xml2rfc'
(http://xml.resource.org/)
2004-06-23 capela
* SET CHANNEL AUDIO_OUTPUT_TYPE <chan> <driver> command is back!
creates an audio output device instance of the given driver type
('Jack' or 'Alsa') with default parameters if none exists,
otherwise it just picks the first available device and assign
it to the intended sampler channel.
*
The AudioOutputDevice class get's a new pure virtual method,
Driver(), which is implemented on both of the existing inherited
classes, AudioOutputDeviceAlsa and AudioOutputDeviceJack, with
the sole purpose to return the driver type name as a String
('Alsa' and 'Jack', respectively).
*
The quoting on the filename argument for the LOAD INSTRUMENT
command has been made optional; you can have both ways, with
single quotes or none, keeping compability with older LSCP
specification.
*
An additional sanity check is made on LOAD INSTRUMENT, whether
the sampler channel has an audio output device assigned, thus
preventing the server from crashing on instrument file load.
*
The GET AUDIO_OUTPUT_DEVICE INFO now includes the missing
'driver' item, as predicted by the draft protocol document.
2004-06-22 senkov
* Added implementation for SET CHANNEL AUDIO_OUTPUT_DEVICE
2004-06-21 senkov
* LOAD INSTRUMENT NON_MODAL
2004-06-20 senkov
* Fixes and hacks to make CREATE AUDIO_OUTPUT_DEVICE work
2004-06-20 senkov
* Fix for CREATE_AUDIO_OUTPUT_DEVICE with all default params
*
Fix for GET AUDIO_OUTPUT_DEVICES resultset
*
Support for BACKGROUND loading
2004-06-20 capela
* Changed LSCPServer::LoadInstrument() signature, which adds a new
boolean argument (bool bBackground) where the loading mode maybe
selected, whether modal (the default), or modeless (in background).
2004-06-20 senkov
* Update audiodriver to supply parameters in compliance
with the latest LSCP spec
2004-06-20 senkov
* Update parser to comply with the latest spec
2004-06-20 senkov
* small but important typo fix in optional.h
2004-06-18 capela
* 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.
2004-06-15 senkov
* Remove calls to pure virtual from constructor of base class
to avoid runtime failure. InitWithDefault() will have to be called
from the constructor of the class where virtuals are implemented.
2004-06-14 schoenebeck
* src/common: added template class 'optional<>' which can be used e.g. as
return type whenever a value might be returned, but don't has to; this
template class pretty much acts like a pointer of the given type, but is
much more safer than a simple pointer
*
src/audiodriver: added static class AudioDeviceFactory to create audio
devices at runtime by using a string and to obtain driver informations
of drivers at runtime, driver classes should simply use the macro
REGISTER_AUDIO_OUTPUT_DRIVER(DriverName,DriverClass) in their cpp file
to register the driver to LinuxSampler (no changes needed anymore in the
LS code to add a new audio output driver)
*
src/drivers: added classes to dynamically manage driver parameters; there
are two different kinds of parameters: parameters which are need to
create a new device (DeviceCreationParameterX) used to e.g. create an
audio output device or a MIDI input device and parameters which are only
available at runtime, means when a device is already created
(DeviceRuntimeParameterX) which will be e.g. used as audio channel
parameters and MIDI port parameters
*
src/linuxsampler.cpp: all registered audio output drivers will be shown
on the console on startup
*
src/network: implemented configuration of audio output devices via LSCP
2004-06-12 senkov
* Error handling in resultset class, rewrite lscpserver to use resultset.
2004-06-06 senkov
* Added LSCP command GET CHANNEL INFO
2004-06-06 senkov
* Added methods for CHANNEL_INFO command
2004-06-05 schoenebeck
* LSCP allows now comment lines, that is lines starting with a hash ('#')
character
*
src/engines/gig/Voice.cpp: fixed "SET CHANNEL VOLUME" bug
2004-06-01 letz
* Do polynomial interpolation computation in float
2004-05-31 schoenebeck
* src/engines/gig/Voice.h: fixed bug which caused to hear only one audio
channel
2004-05-25 letz
* Correct KeyOn with velocity = O bug
2004-05-24 letz
* New type_core_midi and type_midishare types
2004-05-24 letz
* First import of MidiShare device
2004-05-23 schoenebeck
* biquad filter parameters are now calculated outside the interpolate
loop for better performance
*
couple of loop unroll optimizations
*
filter is now enabled by default
*
cubic interpolation is now enabled by default
*
reduced debug level to 1 to lower verbosity
*
raised default limit for voices to 128
*
raised default limit for streams to 150
*
added some compiler optimization flags (-ffast-math -march -mcpu)
2004-05-22 senkov
* Fixed SET CHANNEL MIDI_INPUT_CHANNEL lscp command.
2004-05-08 senkov
* Adding LSCP command SET CHANNEL MIDI_INPUT_PORT. First attempt.
2004-05-07 schoenebeck
* src/audiodriver/AudioOutputDeviceJack.cpp: fixed another stupid bug that
caused a segmentation fault when the Jack audio driver was loaded
2004-05-06 schoenebeck
* src/Sampler.cpp: fixed 3 stupid but fatal bugs that left in the rush (in
method SamplerChannels(), CreateAudioOutputDevice() and
CreateMidiInputDevice())
*
src/network/lscpserver.cpp: implemented LSCP command
'SET CHANNEL MIDI_INPUT_CHANNEL'
*
src/Sampler.h: moved enums 'audio_output_type_t', 'midi_input_type_t'
and 'engine_type_t' into the respective base classes
('AudioOutputDevice', 'MidiInputDevice', 'Engine')
2004-05-04 schoenebeck
* src/common/Thread.cpp: threads are now stoppable even if they are
waiting for a condition
*
src/common/Condition.cpp: fixed little misbehavior of Set() method,
which locked the Condition object on return
*
src/testcases: added a couple of new unit tests (against classes
'Mutex', 'Condition' and 'Thread')
2004-05-02 schoenebeck
* 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
2004-04-26 schoenebeck
* completely restructured source tree
*
implemented multi channel support
*
implemented instrument manager, which controls sharing of instruments
between multiple sampler engines / sampler channels
*
created abstract classes 'AudioOutputDevice' and 'MidiInputDevice' for
convenient implementation of further audio output driver and MIDI input
driver for LinuxSampler
*
implemented following LSCP commands: 'SET CHANNEL MIDI INPUT TYPE',
'LOAD ENGINE', 'GET CHANNELS', 'ADD CHANNEL', 'REMOVE CHANNEL',
'SET CHANNEL AUDIO OUTPUT TYPE'
*
temporarily removed all command line options
*
LSCP server is now launched by default
2004-04-11 senkov
* Fixed bug in AskForCreatedStream(). Cored if stream was not created.
2004-03-30 schoenebeck
* added Envelope Generator 2 and 3 (filter cutoff EG and pitch EG) for
accurate .gig playback
*
fixed accuracy of pitch calculation
*
changed filter cutoff range to 100Hz..10kHz with exponential curve, this
value range can also be adjusted on compile time by setting
FILTER_CUTOFF_MIN and FILTER_CUTOFF_MAX in src/voice.h to desired
frequencies
*
src/lfo.h: lfo is now generalized to a C++ template, which will be useful
especially when we implement further engines
2004-03-21 schoenebeck
* implemented all three low frequency oscillators (LFO1 = volume,
LFO2 = filter cutoff frequency, LFO3 = pitch) for accurate .gig playback
2004-03-16 schoenebeck
* added filters (lowpass, bandpass and highpass), note that filter code is
currently disabled by default, you have to explicitly enable it in
src/voice.h by setting define ENABLE_FILTER to 1
*
src/eg_vca.cpp: Decay_1 stage now using exponential curve
2004-03-10 schoenebeck
* src/eg_vca.cpp: added following transitions to the envelope generator:
'Attack_Hold' -> 'Release', 'Decay_1' -> 'Release' in case of a release
event
*
EG1 parameters 'Attack Time', 'Release Time' and 'Sustain Time' are now
controllable by a MIDI controller defined in the .gig file
*
src/voice.cpp: fixed bug in pitch calculation which caused new triggered
voices to be played back without honoring the current pitch bend value
2004-03-05 schoenebeck
* 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
2004-02-16 schoenebeck
* 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
2004-02-03 schoenebeck
* introduced time stamped events
*
implemented jitter correction
*
added pitchbend wheel support
*
src/audiothread.cpp: using voice pool instead of a voice array, makes
voice allocation more efficient and code more readable
*
src/rtelmemorypool: redesigned, added some new methods and pool is now
derived from list
2004-01-18 schoenebeck
* 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
2004-01-11 schoenebeck
* implemented amplitude envelope generator
*
src/voice.cpp: some .gig instruments still sounded detuned, I hope
finally to have this fixed now
2004-01-02 schoenebeck
* src/gig.cpp: fixed looping informations ('LoopStart', 'LoopEnd' and
'LoopSize')
*
src/voice.cpp: pitch sample according to keyboard position only if
keyrange > 1 key, this was the reason that some gig files were horrible
detuned
*
src/audioio.cpp: bigendian specific fix
*
src/ringbuffer.h: removed kernel header dependency by adding own atomic.h
2003-12-26 schoenebeck
* implemented looping; RAM only loops (that is loops that end within the
cached part of the sample) are handled in src/voice.cpp whereas
disk stream looping is handled in src/stream.cpp and is mostly covered
there by the new ReadAndLoop() method in class 'Sample' from src/gig.cpp
2003-12-25 schoenebeck
* added command line switch --volume to set the global volume level
*
added command line switch --inputclient to connect to an Alsa sequencer
input client on startup (e.g. a MIDI port with a keyboard)
*
added command line switch --instrument to select an instrument in case
the instrument file provides more than one instrument
2003-12-07 schoenebeck
* src/audioio.cpp: added support for Alsa 1.0.0
*
src/audiothread.cpp: fixed several bugs in sustain pedal handling
*
src/diskthread.cpp: fixed several bugs which occured under extreme
conditions (endless loop in audiothread, freezing the whole application,
outage of available disk streams)
*
src/voice.cpp: fixed cubic interpolation (disabled by default; you can
enable it by setting USE_LINEAR_INTERPOLATION to 0 in src/voice.h)
*
src/configure.in: added check for Alsa version
2003-11-29 schoenebeck
* implemented velocity->volume mapping: samples are now played back with a
volume appropriate to the velocity of the triggered key, the velocity
curve transformation functions (in src/gig.h) used for this are so far
only an approximation to the ones from Gigasampler
2003-11-23 schoenebeck
* rewrote sustain pedal handling: instead of just queuing the note-offs I
added a sustain pointer for each midi key which starts to point to the
first active voice on the respective key and increments to the next voice
on the key when a note-off arrived, the release velocity value will
immediately be stored in the respective voice object (this also fixes the
segmentation fault issue when the sustain pool was full)
2003-11-21 schoenebeck
* src/voice.cpp: fixed bug which caused a voice not free it's disk stream
when the whole sample was already played back and the voice was going to
free itself resulting in outage of unused disk streams after a while
*
src/audioio.cpp: implemented automatic fallback to ALSA plughw when the
sound card doesn't support one of the hardware parameters
*
src/linuxsampler.cpp: solved segmentation fault issue when receiving a
SIGINT which was caused due to the fact that all threads entered the
signal handler (there still seems to occur a segfault on some certain
circumstances though)
*
added print out of all-time maximum usage of voices and streams and the
current number of unused streams
*
src/thread.cpp: the StopThread() method will now block until the
associated thread actually stopped it's execution
2003-11-16 schoenebeck
* 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
2003-11-11 senoner
* src/audiothread.cpp, src/audiothread.h: added Sustain Pedal support
implemented by postponing note-offs and leting multiple voices play
on the same MIDI key.
*
added the RTELMemoryPool Class which is a fast RT-safe memory allocator
and list manger
*
src/linuxsampler.cpp: added a voice and stream counter debug message
2003-11-05 schoenebeck
* transition from plain Makefile to autotools, source files moved to src/
*
configure.in: added test for x86 architecture
*
src/voice.h: x86 specific asm optimization for double to int casts only
if compiling for x86 architecture