news about features screenshots demos download support developers faq documentation bugs instruments links credits
Bitcoins Or donate Bitcoins at:

Why donate?

linuxsampler Subversion History

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/ instead of fiddling directly with /etc/ 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 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: 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
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
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
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
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 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
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
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
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
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
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
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
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
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
2008-02-03 schoenebeck
* added support for triggering notes by instrument editors (still some cleanup / refactoring ahead, but it should work)
* bumped version to
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
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/
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
* 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 - 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
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
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
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
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
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
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 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
* 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
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
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
* 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/ 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)
* 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
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 ( 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' (
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
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
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
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
* 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')
* 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/ 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/
* added test for x86 architecture
* src/voice.h: x86 specific asm optimization for double to int casts only if compiling for x86 architecture