Parent Directory | Revision Log
Links to HEAD: | (view) (download) (as text) (annotate) |
Sticky Revision: |
* 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).
Fixed compiler warnings about implied type casts.
Fixed missing case warnings.
* 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).
* Added support for MIDI CC #96 (data increment). * Added support for MIDI CC #97 (data decrement). * Bumped version (2.1.1.svn34).
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).
EngineBase: Minor code cleanup regarding NRPNs. [ Does not mean any behaviour change, since Param.NRPN is just an alias for Param.RPN, so they are both mapped to the same memory address, and with the same data structure layout. ]
* NKSP: Implemented built-in script function "set_rpn()". * NKSP: Implemented built-in script function "set_nrpn()". * Bumped version (2.1.1.svn31).
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).
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).
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).
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).
* 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).
* 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).
* NKSP: Added built-in script function "change_pan_time()". * NKSP: Added built-in script function "change_pan_curve()". * Bumped version (2.0.0.svn75).
* NKSP: Implemented built-in script function "change_sustain()". * Bumped version (2.0.0.svn72).
* 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).
* 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).
* RT Instrument Scripts: Fixed potential memory access bug and potential undefined behavior of "init" event handlers. * Bumped version (2.0.0.svn62).
* 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).
* 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).
* NKSP: Fixed polyphonic variables not being reset to zero after usage. * Bumped version (2.0.0.svn48).
* 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).
* 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).
* 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).
* NKSP: Implemented built-in script array variable "%ALL_EVENTS". * Bumped version (2.0.0.svn35).
* Fixed numerous compiler warnings. * Bumped version (2.0.0.svn32).
* Fixed a bunch of minor issues (mostly compiler warnings). * Bumped version (2.0.0.svn31).
* 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).
* 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).
* 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).
* fixed C++11 compilation error
* 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).
* 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).
* 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).
* 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).
* 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).
* 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).
* 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).
* 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).
* fixed printf type errors (mostly in debug messages)
* Fixed crash which happened if instrument without instrument script was loaded (fixes #227). * Bumped version (1.0.0.svn55).
* 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).
* Fixed execution of "init" instrument script handler. * Fixed further crashes. * Bumped version (1.0.0.svn50).
* Fixed silence and another crash. * Bumped version (1.0.0.svn49).
* Implemented built-in script int array variable $KEY_DOWN. * Bumped version (1.0.0.svn48).
* Fixed crashes when exiting the sampler. * Bumped version (1.0.0.svn47).
* 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).
* 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).
* 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).
* 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).
* 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).
* 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
* Started to spread new C++ keyword "override" over the code base (keyword introduced with C++11 standard).
* code refactoring: added a lock guard class for exception safe mutex handling and used it everywhere appropriate
* 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.
* 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
* sfz/sf2 engine: fixed crash when using small audio fragment size
* use different EQ effect instance for every voice
* 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
* sfz engine: use common pool of CC objects to minimize RAM usage
* bugfix: playing a note while changing the instrument could cause a crash, or give "Handing back unknown region" error messages
* fixed crash when deleting a sampler channel or changing engine type while an instrument load was in progress
* 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
* sfz engine: added support for controller triggered regions (on_locc/on_hicc) * sfz engine: added support for loop_mode=one_shot
* sfz engine: improved support for exclusive groups (group, off_by and off_mode) * minor valgrind fixes
* 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
* 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
* 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
* Refactoring: moved the independent code from gig::Voice to base classes * SoundFont format engine: implemented EG1 & EG2
* 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
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.
ViewVC Help | |
Powered by ViewVC |