1.5.0 (2012-01-25) Added a few missing Kontakt variables and added save_array return value. Fixed bug: middle-click on unselected tab closed modified file without any question. Fixed bug: new compiler couldn't handle a parameterless function with a return value. Fixed bug: it's now possible to use the escape code \" inside strings. Made it possible to close the last tab. Made it possible to use empty lines between "select" and "case". If you associate .ksp files with KScript Editor you can now double-click on them to open. 1.4.9 (2012-01-22) Support for new pgs string functions. Fixed bug: syntax highlighting not working on some keywords Fixed bug: local override prefix didn't work in "on_init" functions. Fixed bug: return value functions declared in module imported "as" could not be used Fixed bug: {#pragma ...} instructions didn't work with new compiler Support for the new native pascal-like 0FFh format for hexadecimal numbers. Support for SET_CONDITION and USE_CODE_IF constructs 1.4.8 (2011-08-02) - Fixed a bug in the optimization mode - expressions containing the MOD operator and where both operands had been simplified to integers caused the compilation to stop with an error. - Added a new pragma, eg. {#pragma preserve_names myvar midi_data*} makes it so that the compiler does not compact variable names "myvar" or names that start with "midi_data". - Experimental support for new compiler version - Support for new Kontakt 5 callbacks, UI controls, and builtin variables/functions Incompatible behaviour in the new compiler ----------------------------------------- Consider this macro: macro foo(bar) bar.x := bar end macro foo(qux) The new compiler expands it to: qux.x := qux The old compiler expands it to: bar.x := qux 1.4.7 (2010-12-14) - Fixed a bug that caused some unused "call":ed functions to not be removed. Which could create errors claiming there were undeclared variables in case those functions declared local variables. - Support for "on listener" callback and ui_waveform controls. - Recursion detection improved for functions invoked using "call" - When the "Compact variable" option is active the program keeps a reverse lookup table for the last compiled script in RAM. This is used to present error messages in uncompacted form. - There is a new option in the Script menu to "uncompress" code where the variable names have been made compact. This can be used when Kontakt reports an error that KScript Editor does not catch. You can then copy the compacted code from Kontakt and use this tool to make it readable, thereby making it easier to locate. The reversal only works if you just before that compiled that script from source. 1.4.6 (2010-08-12) - When the "optimize compiled code" setting is active the program no longer removes unused variables if they are UI controls 1.4.5 (2010-08-12) - Fixed a bug in how newline encodings are handled upon compilation. 1.4.4 (2010-08-06) - Introduced an option to let the compiler automatically fix a bug related to the new "call" keyword. - Changed behaviour of newline encodings on OSX. 1.4.3 (2010-05-30) - Fixed a typo in the KSP reference - Fixed bug: "{" treated as start of a comment instead of as string. 1.4.2 (2010-05-29) - Fixed bug: local variables of a function that is inlined within another function that in its turn is invoked only using "call" are incorrectly left out of the compiled script 1.4.1 (2010-05-20) - Fixed a couple of bugs regarding usage of extended KSP syntax in "call"ed functions. 1.4 (2010-05-10) - Support for polyphonic aftertouch callback in Kontakt 4.1 - Support for native user-defined functions in Kontakt 4.1 and the "call" keyword (including automatic reordering of function definitions using topological sorting of the call graph). - Support and documentation for new variables, functions and callbacks in K4.1 - Fixed: a problem in the html-export - Fixed: call tips (invoked using Ctrl+Shift+Space) was confused by multiple functions on the same line. Notes about user-defined functions: * if a function is invoked using "myfunc" it is inlined * if a function is invoked using "call myfunc" it is not inlined and the native features in Kontakt 4.1 are used. * functions that are somewhere invoked using "call" may not have any parameters * functions that are invoked using "call" may have local variable declarations 1.3.7 (2010-03-12) - Fixed a bug that caused the min, max and rescaler value for knob and value edit declarations to be constants. 1.3.6 (2009-11-04) - Fixed a bug that caused the compiler to halt when encountering comments containing extended ascii characters. - Separated the Advanced syntax highlighting and Folding into two separate settings. Folding is for some reason slightly slower than the advanced syntax highlighting so this makes it possible to have the latter on without suffering the performance hit of the former. - Added an option to the settings menu which when active makes the compiler report if-statements and case-statements with empty (or commented out) bodies. Due to a Kontakt bug such statements silently cause the equivalent of an invokation to the exit function to occur, without any error being reported by Kontakt. This new optional check is only performed if "Extra syntax checks" is also activated. 1.3.5 (2009-10-31) - Fixed a bug that hindered the use of $VALUE_EDIT_MODE_NOTE_NAMES in declaration statements - Improved the handling of the $MARK_1-$MARK_28 constants when using Optimizing mode in the settings. Previously they were always replaced by their literal value. Now the only case where this happens is when they are assigned to a user-defined constant, since such constants are always reduced to a numerical literal in optimizing mode. - Greatly improved user feedback upon compilation. There's now a progress bar and the compilation is carried out in a background thread so it's possible to continue scrolling through and editing code while it is being compiled. - Added a couple of undocumented built-in constants 1.3.4 (2009-10-24) - Added support and documentation for old functions that have new simplified names in Kontakt 4 (eg. get_folder instead of _get_folder) 1.3.3 (2009-10-22) - Added support and documentation for Kontakt 4 variables/functions - Added syntax support for the new UI types in Kontakt 4: ui_switch and ui_slider - Made the KSP Reference search more responsive (the result tree is rebuilt quicker) - Updated the version of the parsing library used (PLY 2.5->3.3) 1.3.2 (2009-07-24) - Added support and documentation for Kontakt 3.5 variables/functions - Fixed import bug - previously script modules containing extended ascii characters could only be compiled if the files were open in the editor. - When the "Optimize compiled code" setting is turned on the script now introduces line breaks ("...") for long array initializations. - The script editor now only updates the list of callbacks and user-defined variables/functions when the script editor window is active. If you switch to Kontakt it will no longer do this in the background which makes it easier to measure the cpu consumption. 1.3.1 (2009-03-27) - Fixed GUI bug - newly opened tabs were not focused - Made it possible to use a variable with a subscript as for loop variable (eg. "for myList[1] := 1 to 10") 1.3.0 (2009-02-11) Added initial support for macros, eg. macro declare_knob(#var#, min, max, text) declare ui_knob #var#(min, max, 1) set_text(#var#, text) end macro Better error reporting 1.25.6 (2008-03-10) Fixed bug: hex numbers in modules that were imported using "import 'X.txt' as X" were incorrectly prefixed by X__ as if they had been variables. 1.25.5 (2008-03-08) Fixed bug in optimizer: constant expressions involving the .not. operator not evaluated and simplified to a single value but all constant declarations removed nevertheless. 1.25.4 (2008-01-31) Added support for the by_marks function in constant expressions. 1.25.3 (2008-01-14) Fixed bug: if a variable is declared like $X and consistently used like $x then the declaration will be removed since it's marked as unused. 1.25.2 (2008-01-13) Fixed bug: right hand side expression is not always parenthesized correctly in optimization mode.