Kontakt Script官方教程 – 用户界面

目录
[隐藏]

UI控件变量初始化回调函数:创建一个简单的自动和声器

现在我们来对前例中的简单代码进行拓展:

我们希望打造一个旋钮,它可以控制伴奏音与原始音符间的距离,标签为“Interval”(音程)。请读者将下列代码输入进Kontakt:

on init
  declare ui_knob $Interval (-12,12,1)
  $Interval := 7
end on

on note
  play_note($EVENT_NOTE + $Interval,$EVENT_VELOCITY,0,-1)
end on

现在演奏的音符,都会有一个上方五度的伴奏音。但界面中还有一些改变,请看脚本模块区域:

出现了一个旋钮,标签为“Interval”。读者可以尝试将旋钮调整为不同值,此时演奏时的伴奏音就是用户自定义的了。前例中的八度和音器已经变为了一个简单的自动和声器。

这段代码是如何运作的呢?我们在用户界面中创建了一个用户界面元素(本例中为旋钮),我们通过代码定义了这个旋钮的范围:-12~12,初始值为7,并且KSP会把这个值加给输入音符的序号,以新值生成音符。

本利包含了三个新概念:init(initialization,初始化回调函数UI控件变量的声明变量的赋值

on init … end on
初始化回调函数,脚本正确解析后执行。

用户点击“Apply”按钮后,初始化回调函数就会执行。初始化回调函数中包括了初始化操作、变量定义、UI元素等等事宜。因此初始化回调函数只会被执行一次,音符回调函数则不然。如果用户想在界面中创建旋钮,必然要事先定义,但是只能定义一次。on init标记了此回调函数的开始,end on标记了其的结束。

UI控件变量是一类用户定义变量。KSP可以区分内建变量用户定义变量。本例中的旋钮理论上是一个用户定义变量,用户在脚本模块区域中做出的调整,会影响到变量值。

旋钮控件的定义法如下:

declare ui_knob $<变量名> (<最大值>,<最小值>,<分度值>)
创建旋钮

参数的意义会在后面解释。我们来回头分析代码的第三行:

$Interval := 7

“:=”进行赋值操作,用自然语言解释便是:将7作为值赋给名为Interval的变量。

初始化函数执行时,KSP会创建一个旋钮,初始值为7。这个值会加在输入音符的序号中。所以当变量值为-12时,C3(60)会变成C2(48),因为$EVENT_NOTE + $Interval equals 60 + (-12)=48。

通过上面的学习,相信读者已经不难读懂下面的代码了:

on init
  declare ui_knob $Interval (-12,12,1)
  $Interval := 7
  declare ui_knob $Velocity (1,127,1)
  $Velocity := 60
end on

on note
  play_note($EVENT_NOTE + $Interval,$Velocity,0,-1)
end on

总结

点击“Apply”按钮后,若脚本正确解析,初始化回调函数就会执行。旋钮是UI控件,即用户定义变量的一种。UI元素在初始化回调函数中声明。“:=”是赋值运算符,符号右边的值被赋给左边。

 

0

评论0

请先

没有账号? 忘记密码?