933 |
<p> |
<p> |
934 |
We already came across various built-in functions, which you may call |
We already came across various built-in functions, which you may call |
935 |
by your scripts to perform certain tasks or behavior which is already |
by your scripts to perform certain tasks or behavior which is already |
936 |
provided for you by the sampler. When working on larger scripts, you |
provided for you by the sampler. NKSP also allows you to write your |
937 |
|
own functions, which you then may call from various places of your |
938 |
|
script. |
939 |
|
<p> |
940 |
|
</p> |
941 |
|
When working on larger scripts, you |
942 |
may notice that you easily get to the point where you may have to |
may notice that you easily get to the point where you may have to |
943 |
duplicate portions of your script code, since there are certain things |
duplicate portions of your script code, since there are certain things |
944 |
that you may have to do again and again in different parts of your script. |
that you may have to do again and again in different parts of your script. |
945 |
Software developers usually try to avoid such code duplications to |
Software developers usually try to avoid such code duplications to |
946 |
keep the overall amount of code as small as possible, since it would |
keep the overall amount of code as small as possible, since the |
947 |
|
overall amount of code would bloat quickly and would |
948 |
make the software very hard to maintain. One way for you to avoid such |
make the software very hard to maintain. One way for you to avoid such |
949 |
script code duplications with NKSP is to write so called <i>User Functions</s>. |
script code duplications with NKSP is to write so called <i>User Functions</s>. |
950 |
</p> |
</p> |
970 |
</code> |
</code> |
971 |
<p> |
<p> |
972 |
This script will run an endless loop for each note being triggered. |
This script will run an endless loop for each note being triggered. |
973 |
Every <code>200ms</code> it will turn the volume alternatingly down and |
Every <code lang="none">200ms</code>. It will turn the volume alternatingly down and |
974 |
up to create the audible stuttering effect. After each <code>wait()</code> |
up to create the audible stuttering effect. After each <code>wait()</code> |
975 |
call it calls <code>event_status($EVENT_ID)</code> to check whether |
call it calls <code>event_status($EVENT_ID)</code> to check whether |
976 |
this note is still alive, and as soon as the note died, it will stop |
this note is still alive, and as soon as the note died, it will stop |
977 |
execution of the script instance by calling <code>exit()</code>. The latter |
execution of the script instance by calling <code>exit()</code>. The latter |
978 |
is important in this case, because otherwise the script instances would |
is important in this example, because otherwise the script instances would |
979 |
continue to run in this endless loop forever, even after the respectives |
continue to run in this endless loop forever, even after the respectives |
980 |
notes are gone. Which would let your CPU usage to increase with every note. |
notes are gone. Which would let your CPU usage to increase with every new note. |
981 |
This behavior of the sampler is not a bug, it is intended, since there may |
This behavior of the sampler is not a bug, it is intended, since there may |
982 |
also be cases where you want to do certain things by script even after the |
also be cases where you want to do certain things by script even after the |
983 |
respective notes are dead and gone. However as you can see, that script is |
respective notes are dead and gone. However as you can see, that script is |
1003 |
</code> |
</code> |
1004 |
<p> |
<p> |
1005 |
The script became in this simple example only slightly smaller, but it also |
The script became in this simple example only slightly smaller, but it also |
1006 |
became easier to read. And in practice, with a more complex script, you can |
became easier to read and behaves identically to the previous solution. |
1007 |
|
And in practice, with a more complex script, you can |
1008 |
reduce the overall amount of script code a lot this way. You can choose any |
reduce the overall amount of script code a lot this way. You can choose any |
1009 |
name for your own user functions, as long as the name is not already |
name for your own user functions, as long as the name is not already |
1010 |
reserved by a built-in function. Note that for calling a user function, |
reserved by a built-in function. Note that for calling a user function, |