--- linuxsampler/trunk/ChangeLog 2016/04/25 17:28:23 2889 +++ linuxsampler/trunk/ChangeLog 2017/05/31 14:41:04 3259 @@ -2,6 +2,15 @@ * SFZ format engine: - added support for , and #define (patch by Alby M) + - Removed code duplication in SFZ file loading code. + - Added support for sfz extension opcode 'script' which may be used to + load real-time instrument script file (NKSP script language). + - Implemented opcode set_ccN (initial patch by Giovanni Senatore). + - Fixed unintended volume fade-in of voices under certain conditions. + + * Gigasampler/GigaStudio format engine: + - Fixed clicks and pumping noise with Lowpass Turbo filter on very low + cutoff settings. * general changes: - fixed printf type errors (mostly in debug messages) @@ -20,6 +29,21 @@ 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. + - 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. + - 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. + - gig/sf2/sfz: Fixed aftertouch channel pressure events being processed + properly and thus were ignored for certain uses. + - Added new C++ API method + VirtualMidiDevice::SendChannelPressureToSampler(). + - windows, 32-bit: fixed potential crashes by making sure the stack in + sub threads is 16-byte aligned + - fixed numerous compiler warnings + - Fixed invalid (note-on) event ID being assigned to new Note objects. * packaging changes: - removed unnecessary dependency to libuuid @@ -51,6 +75,142 @@ - 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). + - Reload script automatically after being modified by an instrument + editor. + - NKSP language grammar correction: allow empty event handler bodies + like "on note end on". + - Implemented built-in script function "change_vol()". + - Implemented built-in script function "change_tune()". + - Implemented built-in script function "change_pan()". + - Implemented built-in script function "change_cutoff()". + - Implemented built-in script function "change_reso()". + - Implemented built-in script function "event_status()". + - Added built-in script constants "$EVENT_STATUS_INACTIVE" and + "$EVENT_STATUS_NOTE_QUEUE" both for being used as flags for + "event_status()" 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. + - Fixed behavior of play_note() and note_off() functions which must + be distinguished engine internally from "real" MIDI note on/off + events in order to avoid misbehaviors like hanging notes. + - Implemented built-in script variable "$KSP_TIMER". + - Implemented built-in script variable "$NKSP_REAL_TIMER". + - Implemented built-in script variable "$NKSP_PERF_TIMER". + - Implemented built-in script variable "$ENGINE_UPTIME". + - Implemented built-in script function "inc()". + - 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). + - NKSP language correction: allow empty statements in entire language + (i.e. "if end if"). + - Implemented built-in script function "stop_wait()". + - Implemented built-in script variable "$NI_CALLBACK_ID". + - Implemented built-in script variable "$NI_CALLBACK_TYPE". + - Implemented built-in script variable "$NKSP_IGNORE_WAIT". + - Added support for read-only built-in variables (respectively + handled by the script parser). + - Added built-in script constant "$NI_CB_TYPE_INIT". + - Added built-in script constant "$NI_CB_TYPE_NOTE". + - Added built-in script constant "$NI_CB_TYPE_RELEASE". + - Added built-in script constant "$NI_CB_TYPE_CONTROLLER". + - NKSP Language: Added support for user defined script functions. + - Implemented built-in script function "change_attack()". + - Implemented built-in script function "change_decay()". + - Implemented built-in script function "change_release()". + - 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()). + - Implemented built-in script function "sh_left()". + - Implemented built-in script function "sh_right()". + - Implemented built-in script function "min()". + - Implemented built-in script function "max()". + - 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). + - ScriptVM: Implemented automatic suspension of RT safety + threatening scripts. + - Provide more user friendly error messages on syntax errors. + - Fixed NKSP parser warning "Not a statement" when assigning an + initializer list to an array variable. + - Implemented built-in script array variable "%ALL_EVENTS". + - Implemented built-in script function "in_range()". + - Implemented built-in script function "change_amp_lfo_depth()". + - Implemented built-in script function "change_amp_lfo_freq()". + - Implemented built-in script function "change_pitch_lfo_depth()". + - Implemented built-in script function "change_pitch_lfo_freq()". + - Implemented built-in script function "change_vol_time()". + - Implemented built-in script function "change_tune_time()". + - Implemented built-in script function "fade_in()". + - Implemented built-in script function "fade_out()". + - 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()". + - Added built-in script function "get_event_par()" and implemented some + of its possible parameter selections. + - Added built-in script function "set_event_par()" and implemented some + of its possible parameter selections. + - Fixed a bunch of scheduler time related bugs. + - Fixed polyphonic variables not being reset to zero after usage. + - Built-in "ignore_event()" function: argument is now optional, like with + built-in function "ignore_controller()". + - Implemented built-in script function "change_velo()". + - Implemented built-in script function "change_note()". + - 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). + - Implemented built-in script function "array_equal()". + - Implemented built-in script function "search()". + - Implemented built-in script function "sort()". + - NKSP Fix: Never suspend "init" event handlers. + - Implemented built-in script function "same_region()" (currently only + available for gig format engine). + - Added built-in script constant "$NKSP_LINEAR". + - Added built-in script constant "$NKSP_EASE_IN_EASE_OUT". + - Implemented built-in script function "change_vol_curve()". + - Implemented built-in script function "change_tune_curve()". + - 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. + - 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. + - 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. + - 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. + - Implemented built-in script function "change_play_pos()". + - 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. + - NKSP language fix: Unknown characters were not handled correctly. + + * Instruments DB: + - Fixed memory access bug of general DB access code which lead to + undefined behavior. + - 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. + - Added support for scanning SFZ (.sfz) files. + - Added support for scanning Sound Font (.sf2) files. + - Fixed undefined DB transaction behavior. Version 2.0.0 (15 July 2015) @@ -475,6 +635,7 @@ "SUBSCRIBE SEND_EFFECT_CHAIN_INFO" - provide comprehensive error messages on LSCP syntax errors (suggesting expected next non-terminal symbols) + - Fixed client connection not being closed after network errors. * LSCP shell: - Added support for auto correction of obvious and trivial syntax mistakes. @@ -524,7 +685,7 @@ $GIG_DIM_EFFECT3DEPTH, $GIG_DIM_EFFECT4DEPTH, $GIG_DIM_EFFECT5DEPTH. - Giga format scripts: Implemented built-in script function "gig_set_dim_zone(event_id, dimension, zone)". - - Implemented built-in script int array variable $KEY_DOWN. + - Implemented built-in script int array variable %KEY_DOWN. - Implemented built-in script function "abs()". - Implemented built-in script function "random()". - Implemented built-in script function "num_elements()". @@ -538,6 +699,7 @@ (i.e. return value of new script function "by_marks()"). - Pass/preserve polyphonic variable data from respective "note" event handler to "release" event handler. + - Fixed crash when using built-in script function "by_marks()". * Bug fixes: - Fixed crash which may occur when MIDI key + transpose is out of range