Features (or SKSP vs pyksp)

The thing has to be counted is that pyksp is not a compiler. If You just type code and compile it, it will not make any key difference of what SKSP does. But even now and even on compilation it counts something more: for example it raises exceptions if id passed to the set_control_par is not a valid id of ui control. Or it knows exactly the length of every array, and runs every for-loop entirely, so exception will be raised at the wrong index.

On the current stage, if You pass code to the SKSP You can be sure about 95% that it’s static semantic is right (i mean, that Kontakt will not reject your code at pressing the apply button). Pyksp can not give that warrancy yet, it’s very early alpha release. But when we sure it’s built-ins API is correct, within pasting the code (even without unit-tests inside python) we can be calm about many runtime things, we can not be calm within just static analyses.

The second advantage is that every object (even built-ins like EVENT_NOTE) is alive object. So it can be tested inside python. A huge amount of code can be written without pasting to Kontakt. And every time tests can be batch-checked.

The third adventage is Python. Many types of pre-calculations and many ways of keeping the project data can be applied. Only restriction is pyksp is still a preprocessor, but the power of this preprocessing is restricted only by Your imagination.

Note

Still knowing of how code will be generated and what is good KSP practice and what is bad is required.

now the blitz comparisson table

feature pyksp SublimeKSP
full KSP backvard-copability not yes
improved functions yes yes
variable amount of functions arguments yes no
returns from functions yes yes
multi-typed functions every of 6 only in inlined functions
undefined type at declaration yes buggy
‘lists’: undefined size of arrays and appending in init yes yes
constant as size of arrays every array only lists and constants
arrays concatination not yet yes
shorten control pars yes yes
iterative pre-processing yes yes
logging improved yes
advanced layout and custom ‘widgets’ yes not
structs classes? yes
families subclasses? yes
ui-arrays see ‘hello world’ yes
constant blocks not as syntax yes
persisten shorthand yes yes
multidimentional arrays needs to think yes
preprocessor variables are mutable yep nope