/[svn]/linuxsampler/trunk/src/engines/common/InstrumentScriptVM.cpp
ViewVC logotype

Log of /linuxsampler/trunk/src/engines/common/InstrumentScriptVM.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (download) (annotate)
Sticky Revision:

Revision 3690 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jan 3 10:18:21 2020 UTC (9 months, 2 weeks ago) by schoenebeck
File length: 20165 byte(s)
Diff to previous 3557
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).


Revision 3557 - (view) (download) (annotate) - [select for diffs]
Modified Sun Aug 18 00:06:04 2019 UTC (14 months ago) by schoenebeck
File length: 19475 byte(s)
Diff to previous 3360
* 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).


Revision 3360 - (view) (download) (annotate) - [select for diffs]
Modified Fri Oct 27 21:19:18 2017 UTC (2 years, 11 months ago) by schoenebeck
File length: 19463 byte(s)
Diff to previous 3335
* 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).


Revision 3335 - (view) (download) (annotate) - [select for diffs]
Modified Sun Jul 30 14:33:15 2017 UTC (3 years, 2 months ago) by schoenebeck
File length: 18759 byte(s)
Diff to previous 3316
* NKSP: Added built-in script function "change_pan_time()".
* NKSP: Added built-in script function "change_pan_curve()".
* Bumped version (2.0.0.svn75).


Revision 3316 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jul 20 12:05:53 2017 UTC (3 years, 3 months ago) by schoenebeck
File length: 18556 byte(s)
Diff to previous 3296
* NKSP: Implemented built-in script function "change_sustain()".
* Bumped version (2.0.0.svn72).


Revision 3296 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jun 28 09:45:56 2017 UTC (3 years, 3 months ago) by schoenebeck
File length: 18461 byte(s)
Diff to previous 3293
* 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).


Revision 3293 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jun 27 22:19:19 2017 UTC (3 years, 3 months ago) by schoenebeck
File length: 18150 byte(s)
Diff to previous 3277
* 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).


Revision 3277 - (view) (download) (annotate) - [select for diffs]
Modified Mon Jun 5 18:40:18 2017 UTC (3 years, 4 months ago) by schoenebeck
File length: 17159 byte(s)
Diff to previous 3255
* 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).


Revision 3255 - (view) (download) (annotate) - [select for diffs]
Modified Tue May 30 15:43:39 2017 UTC (3 years, 4 months ago) by schoenebeck
File length: 17089 byte(s)
Diff to previous 3253
* NKSP: Implemented built-in script function "change_play_pos()".
* Bumped version (2.0.0.svn57).


Revision 3253 - (view) (download) (annotate) - [select for diffs]
Modified Tue May 30 12:08:45 2017 UTC (3 years, 4 months ago) by schoenebeck
File length: 16993 byte(s)
Diff to previous 3246
* 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).


Revision 3246 - (view) (download) (annotate) - [select for diffs]
Modified Sun May 28 22:22:56 2017 UTC (3 years, 4 months ago) by schoenebeck
File length: 16939 byte(s)
Diff to previous 3214
* 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).


Revision 3214 - (view) (download) (annotate) - [select for diffs]
Modified Thu May 25 14:46:47 2017 UTC (3 years, 4 months ago) by schoenebeck
File length: 16598 byte(s)
Diff to previous 3193
* NKSP: Implemented built-in script function "change_velo()".
* NKSP: Implemented built-in script function "change_note()".
* Bumped version (2.0.0.svn49).


Revision 3193 - (view) (download) (annotate) - [select for diffs]
Modified Sat May 20 12:28:57 2017 UTC (3 years, 5 months ago) by schoenebeck
File length: 16418 byte(s)
Diff to previous 3188
* 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).


Revision 3188 - (view) (download) (annotate) - [select for diffs]
Modified Fri May 19 14:23:12 2017 UTC (3 years, 5 months ago) by schoenebeck
File length: 15866 byte(s)
Diff to previous 3118
* 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).


Revision 3118 - (view) (download) (annotate) - [select for diffs]
Modified Fri Apr 21 13:33:03 2017 UTC (3 years, 6 months ago) by schoenebeck
File length: 15504 byte(s)
Diff to previous 3073
* 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).


Revision 3073 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jan 5 16:04:00 2017 UTC (3 years, 9 months ago) by schoenebeck
File length: 15046 byte(s)
Diff to previous 3054
* NKSP: Implemented built-in script array variable "%ALL_EVENTS".
* Bumped version (2.0.0.svn35).


Revision 3054 - (view) (download) (annotate) - [select for diffs]
Modified Thu Dec 15 12:47:45 2016 UTC (3 years, 10 months ago) by schoenebeck
File length: 14980 byte(s)
Diff to previous 3035
* Fixed numerous compiler warnings.
* Bumped version (2.0.0.svn32).


Revision 3035 - (view) (download) (annotate) - [select for diffs]
Modified Mon Oct 31 12:00:00 2016 UTC (3 years, 11 months ago) by schoenebeck
File length: 14925 byte(s)
Diff to previous 2953
* Check compiler for supported pragma diagnostics to avoid
  compiler errors.


Revision 2953 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jul 16 11:24:39 2016 UTC (4 years, 3 months ago) by schoenebeck
File length: 14884 byte(s)
Diff to previous 2948
* 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).


Revision 2948 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jul 15 15:29:04 2016 UTC (4 years, 3 months ago) by schoenebeck
File length: 14599 byte(s)
Diff to previous 2942
* 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).


Revision 2942 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jul 13 15:51:06 2016 UTC (4 years, 3 months ago) by schoenebeck
File length: 13656 byte(s)
Diff to previous 2935
* 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).


Revision 2935 - (view) (download) (annotate) - [select for diffs]
Modified Sun Jul 10 14:24:13 2016 UTC (4 years, 3 months ago) by schoenebeck
File length: 13320 byte(s)
Diff to previous 2931
* 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).


Revision 2931 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jul 9 14:38:33 2016 UTC (4 years, 3 months ago) by schoenebeck
File length: 12919 byte(s)
Diff to previous 2871
* 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).


Revision 2871 - (view) (download) (annotate) - [select for diffs]
Modified Sun Apr 10 18:22:23 2016 UTC (4 years, 6 months ago) by schoenebeck
File length: 12659 byte(s)
Diff to previous 2645
* 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).


Revision 2645 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jun 18 00:14:57 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 12134 byte(s)
Diff to previous 2630
* 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).


Revision 2630 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jun 13 15:01:06 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 11746 byte(s)
Diff to previous 2629
* 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).


Revision 2629 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jun 12 18:25:11 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 9730 byte(s)
Diff to previous 2618
* Implemented built-in instrument script function "note_off()".
* Bumped version (1.0.0.svn52).


Revision 2618 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jun 11 11:39:44 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 9653 byte(s)
Diff to previous 2614
* Fixed execution of "init" instrument script handler.
* Fixed further crashes.
* Bumped version (1.0.0.svn50).


Revision 2614 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jun 10 17:22:48 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 9583 byte(s)
Diff to previous 2613
* Fixed silence and another crash.
* Bumped version (1.0.0.svn49).


Revision 2613 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jun 10 15:17:01 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 9583 byte(s)
Diff to previous 2612
* Implemented built-in script int array variable $KEY_DOWN.
* Bumped version (1.0.0.svn48).


Revision 2612 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jun 10 13:32:16 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 9440 byte(s)
Diff to previous 2611
* Fixed crashes when exiting the sampler.
* Bumped version (1.0.0.svn47).


Revision 2611 - (view) (download) (annotate) - [select for diffs]
Modified Mon Jun 9 19:20:37 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 9063 byte(s)
Diff to previous 2600
* 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).


Revision 2600 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jun 7 00:16:03 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 4598 byte(s)
Diff to previous 2598
* Implemented built-in instrument script function "set_controller()".
* Fixed built-in script functions "ignore_event()" and
  "ignore_controller()".
* Added extended instrument script VM for the Gigasampler/GigaStudio format
  sampler engine, which extends the general instrument script VM with Giga
  format specific variables and functions.
* Giga format instrument scripts: added built-in script int constant
  variables $GIG_DIM_CHANNEL, $GIG_DIM_LAYER, $GIG_DIM_VELOCITY,
  $GIG_DIM_AFTERTOUCH, $GIG_DIM_RELEASE, $GIG_DIM_KEYBOARD,
  $GIG_DIM_ROUNDROBIN, $GIG_DIM_RANDOM, $GIG_DIM_SMARTMIDI,
  $GIG_DIM_ROUNDROBINKEY, $GIG_DIM_MODWHEEL, $GIG_DIM_BREATH,
  $GIG_DIM_FOOT, $GIG_DIM_PORTAMENTOTIME, $GIG_DIM_EFFECT1,
  $GIG_DIM_EFFECT2, $GIG_DIM_GENPURPOSE1, $GIG_DIM_GENPURPOSE2,
  $GIG_DIM_GENPURPOSE3, $GIG_DIM_GENPURPOSE4, $GIG_DIM_SUSTAIN,
  $GIG_DIM_PORTAMENTO, $GIG_DIM_SOSTENUTO, $GIG_DIM_SOFT,
  $GIG_DIM_GENPURPOSE5, $GIG_DIM_GENPURPOSE6, $GIG_DIM_GENPURPOSE7,
  $GIG_DIM_GENPURPOSE8, $GIG_DIM_EFFECT1DEPTH, $GIG_DIM_EFFECT2DEPTH,
  $GIG_DIM_EFFECT3DEPTH, $GIG_DIM_EFFECT4DEPTH, $GIG_DIM_EFFECT5DEPTH.
* Giga format instrument scripts: Implemented built-in script function
  "gig_set_dim_zone(event_id, dimension, zone)", which allows to override
  dimension zone(s) for new voices.
* Bumped version (1.0.0.svn45).


Revision 2598 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jun 6 12:38:54 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 4912 byte(s)
Diff to previous 2596
* 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).


Revision 2596 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jun 5 19:39:12 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 4552 byte(s)
Diff to previous 2595
* 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).


Revision 2595 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jun 5 12:14:53 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 4205 byte(s)
Diff to previous 2594
- Fixed compiler error with GCC 4.x (seems to be a GCC bug).


Revision 2594 - (view) (download) (annotate) - [select for diffs]
Added Thu Jun 5 00:16:25 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 4117 byte(s)
* 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).


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.

  Diffs between and
  Type of Diff should be a

  ViewVC Help
Powered by ViewVC