Kontakt Script教程(一) – 概览

目录
[隐藏]

简介

Kontakt Script(Kontakt脚本)是Native Instruments推出的、内建于Kontakt的一种脚本语言。其衍生名词为KSP,全称为Kontakt Script Processor(Kontakt脚本解析器),是内建于Kontakt的针对Kontakt Script的解析器。Kontakt Script在Kontakt 2版本时被加入,成为了Kontakt采样器一个独特的、有力的功能。利用Kontakt Script,您可以编写自己的音源,甚至达到专业音源厂商的制作水平。

Kontakt Script严格来说是一种脚本语言,脚本语言的特点就是立即执行,所以你可以清楚地看到是哪一行代码有错误。Kontakt Script既然作为脚本语言,就一定有脚本语言所具有的简单易学的特点。Kontakt Script与Visual Basic和C++有一定的相似程度,因此如果你具有一定的编程基础,你会感觉Kontakt Script是非常容易学习的,其中Kontakt Script与Visual Basic在语句方面的相似度比较高。

Kontakt Script最难的地方不是在于其语法的繁杂,而是在于它的高度集成性,就算是最简单的一些语句,也往往会涉及到后面才会学习的函数。我很难找到一个最基础的切入点,让大家能从零开始学习Kontakt Script,所以我们一开始所要接触的基础非常多。况且Kontakt Script的系统性的教材很少,这就为Kontakt Script的学习又抬高了一层门槛。Kontakt Script的官方教材的起点很高,比较难学习,而且课程的安排有严重问题。早期的Kontakt Script官方教程的定位又太低,很难写出高质量的程序。

编写脚本

编写Kontakt Script的工具很随意,即使是记事本也可以编写Kontakt Script。在Kontakt中,请按照如图的指示打开Kontakt Script编辑器。双击Kontakt界面的空白处新建乐器。

此时便可以开始编写脚本。点击编辑框上方的Apply(应用)按钮执行脚本。

基本语法

回调函数

回调函数(callback)是通过函数指针调用的函数。用简单的话来说,你去人才市场投了一份简历,上面有你的联系方式。几天后你收到了来自某公司的聘书,那么你就被调用了。你的联系方式就是一个回调函数;你在简历上留下你的联系方式叫做登记回调函数;你的简历被看中叫做触发回调关联的事件;公司向你发出聘书,这个过程叫做调用回调函数;你在收到聘书之后去上班,叫做响应回调事件。除回调函数外,其他概念在KS(Kontakt Script,下文均如此)中很少涉及。

在Kontakt Script中,回调函数是一个非常重要的概念,Kontakt Script基本就是建立在回调函数之上的。要想把Kontakt Script学好,回调函数就必须精通。但是回调函数非常多,用法也很复杂,在第一节的基础课里我不可能全部介绍,因此我之前就说过想要系统地学好Kontakt Script不容易。

回调函数可以用exit指令结束

每个回调函数都有其唯一的ID,可以用$NI_CALLBACK_ID来获取

你可以用$NI_CALLBACK_TYPE来查询哪一个回调函数触发了函数和对应的内建常数

在Kontakt Script中,回调函数都是以如下的形式书写的:

[code lang=”js”]on function

end on[/code]

其他的代码都添加在这中间,否则就不能执行。

常用的回调函数有:

on init 初始化

on note 输入音符

on release 释放

on controller 输入控制器

根据我们之前所说的,它们都要以end on结束。

范例

[code lang=”js”]on init

end on[/code]

指令

指令(command)是告诉程序要做什么的代码。常用的指令有:

exit 立即结束回调函数

message 提示信息

在KS中,指令都是以command ( )的形式工作的,字符信息要用“”(英文引号)括起来。在KS中,指令是实现程序功能的重要模块。

范例

[code lang=”js”]on init
message ("Hello World!")
end on[/code]

变量

在任何编程语言(脚本语言也是一种编程语言)中,变量都是不可或缺的,没有变量,一个程序就真的是一个程序,不会有任何的变化可言。变量(Variable)在KS中通过变量名来访问,其声明格式如下:

[code lang=”js”]declare $Variable[/code]

declare是声明的意思,变量的声明有着严格的限制:

所有变量都要在on init(初始化)回调函数中声明

变量名只能包含数字、字母和下划线(_)

变量名区分大小写

不要创建如下命名方式的变量,它们是KS内建变量

  • $NI_
  • $CONTROL_PAR
  • $EVENT_PAR_
  • $ENGINE_PAR_

变量的赋值采用$Variable := Value的形式,其中的空格可以省略。也可以采取一次性声明和赋值的省略方法declare $Variable := Value的形式,这样可以提高代码的连贯性。

[code lang=”js”]on init
declare $Hello_World
$Hello_World := 1
message ($Hello_World)
end on[/code]

注释

为了保证代码的可读性,注释是必不可少的。解析器会直接忽略注释,所以增加注释只会提高代码的可读性而不会减慢执行速度。在KS中,注释都以{ }的形式存在。注释内的文本不必用””括起。另外,增加更多的空格也可以提高代码的可读性。通过Tab键可以输入长占位符,免去了多次按空格键的麻烦。

范例

[code lang=”js”]on init {初始化回调函数}
message ("Hello World!") {输出Hello World!}
end on {结束回调函数}[/code]

语句

语句是程序中极为关键的元素,它就像指挥家,告诉程序应该怎么走、怎么做。KS中常用的语句如下:

if…else…else if…end if 条件语句

select() 选择语句

while 循环语句

random() (伪)随机数

布尔运算

我们拿最简单的if…end if语句来举例:

范例

[code lang=”js”]on init
declare $NUM {定义变量}
$NUM := 10 {赋值}
if ($NUM = 10) {如果变量值为10}
message ("NUM now is 10.") {输出}
end if
end on[/code]

布尔运算

布尔运算是数据符号化的逻辑推演法,在KS中它主要起判断作用。

x > y 大于
x < y 小于
x >= y 大于等于
x <= y 小于等于
x = y 等于
x # y 不等于
in_range(x,y,z) 当x处于y和z之间时
not a a不成立
a and b a与b同时成立
a or b a或b单独成立

范例

[code lang=”js”]on init
declare $NUM {声明变量}
$NUM := random(0,5) {在0和5之间生成伪随机数}
if ($NUM &amp;amp;gt; 1) {判断条件}
message (NUM is greater than 1.) {提示信息}
end if
end on[/code]

数学运算

KS支持基本数学运算和高级数学运算,但是不支持幂运算、对数运算等。

+

*

/ 除以

mod 求余

KS同样也支持带有括号的数学运算(仅支持小括号)。

范例

[code lang=”js”]on init
    declare $N1 {声明变量}
    declare $N2
    $N1 := random(1,5) {赋值}
    $N2 := random(5,10)
    message (($N1*$N2)*3) {输出结果}
end on[/code]

结尾

本节我们粗略地对Kontakt Script进行了了解,在今后的教程中我们会采用实例分析的方法来介绍KS语法而不是词典式地罗列。大家在学习到一个新的语法点的时候,不要单纯地把代码复制粘贴或是手工录入到编辑器里,那样是没有一点效果的,要根据自己对于程序结构的理解把代码完整地复写下来、并且能根据这个例子举一反三才能把一门编程语言掌握。

未经授权,禁止转载。No reproduction without permissions.:编曲资源 » Kontakt Script教程(一) – 概览

赞 (13)

评论 1

*

  1. 匿名哇,好厉害,支持小编回复