所有文章第75页
事件管理 事件与音符编号 每个音符都是事件,外来的(键盘、编曲软件)或是脚本生成的音符都是事件。由于音符释放后,声音会经历衰减(Decay)过程,音符事件会持续存在一段时间,因此可能会有很多事件同时存在。为了方便访问,每个事件都有一个唯一编号。但回调函数和事件是两码事。回调函数是被计算机执行的程序,而事件可以认为是一种虚拟音。 触发回调函数的音符,其编号储存...
音组管理 如果一个乐器中有多个音组,通过下面的这些函数,用户可以通过代码控制音组: [su_table responsive=”yes”] disallow_group(<音组索引>) 禁用特定的音组 allow_group(<音组索引>) 激活特定的索引 find_group(<音组名>) 返回特...
运算子 布尔运算子 布尔运算符在if和while语句中使用,因为布尔运算返回的是条件成立与否。下表给出了所有的布尔运算符。x,y,z表示数字,a和b表示布尔值。 [su_table responsive=”yes”] x > y 大于 x # y 不等于 x<y 小于 in_range(x,y,z) x介于y和z之间时为真 x ...
控制语句 一般我们做出的决定,都是根据情况而定的。KSP内含了三种控制语句,来在不同情况下运行不同代码:if,select与while。 if…else…end 下例中的if…else…end(如果……否则……终止)控制语句浅显易懂: on note if($EVENT_VELOCITY > 80) play_note($EVENT_NOTE+12,$...
1基于节拍和时间的编程 wait()函数 到目前为止我们所写的程序,生成的伴奏音都是与输入音符同步发声的。如果我们想让伴奏音延迟发声,例如做出延迟效果或者琶音器,又要如何编程呢?这就要涉及到一个非常重要的语句了:wait()函数(等待函数)。 wait()函数就地将回调函数暂停一段时间。换言之,此函数将脚本冻结(其他脚本可以继续运作),设定时间过后,回调函数继...
变量 现在我们回头看最开始的代码: on note play_note(60,120,0,-1) end on 之前已经说过,给每个音符都配同一个伴奏音着实平平无奇。我们想编写一个更高级的伴奏器,能够生成力度相同的高八度伴奏音,因此便有了: on note play_note($EVENT_NOTE + 12,$EVENT_VELOCITY,0,-1) en...
基础 语法相关的基本规则 下列的规则是Kontakt脚本语言的基本规则,符合这些规则的脚本才能被正确执行: 指令只能在一行内书写 指令之间的空行可以有无限多个 单词之间的空格可以有无限多个 Kontakt脚本语言区分大小写,因此程序不会将Play_Note()识别为play_note() 指令太长不便在一行内写完时,在行末加入“…”可以另起一行续...
![]()
![]()
3变音符号 《斯波索宾和声学》是我国高校广泛采用的一本和声学教程,是一本前苏联和声学教材。但是许多人发现,中国引进翻译这本书时,把书中所有的升降号都移到了音名前面。例如书中的C#4,引进之后都变成了#C4。这样做的目的,有人猜测是为了符合中国读者的习惯。中文中对“C#”的读法为“升C”,恰好与字母符号表记法相反,将变音符号提前后,读写变得一致。大家只需记住“C...
![]()
![]()
3调试与自定义:完成脚本 本章节已经进入尾声,我们要对现有脚本进行拓展: on init declare ui_knob $Interval (-12,12,1) declare ui_knob $Velocity (-64,64,1) $Interval := 7 $Velocity := 20 end on on note play_note($EVENT...
1UI控件变量与初始化回调函数:创建一个简单的自动和声器 现在我们来对前例中的简单代码进行拓展: 我们希望打造一个旋钮,它可以控制伴奏音与原始音符间的距离,标签为“Interval”(音程)。请读者将下列代码输入进Kontakt: on init declare ui_knob $Interval (-12,12,1) $Interval := 7 end o...