内建变量:创建一个简单的八度和音器
读者通过对前例的使用,可能会发现变量是可以手动定义的,用户可以自行更改音符序号和力度。但生成的音符总是固定的,程序只能持续生成单一音符。
请将下列代码输入进Kontakt:
on note play_note($EVENT_NOTE - 12,$EVENT_VELOCITY,0,-1) end on
现在再在键盘上演奏,伴奏音就变成了演奏音符下方八度的音了,力度与输入音符一致,这就是简单的八度和音器了。
那这个和音器是如何实现的呢?这段简短的代码包含了两个新概念:变量与运算符。关于这两个概念的详细解释会在后续章节给出。
$EVENT_NOTE是一个内建变量,它记录着输入音符的序号。当C3(60)被演奏时,$EVENT_NOTE即为60。$EVENT_VELOCITY也是一个内建变量,它记录着输入音符的力度。当输入音符的力度为110时,$EVENT_VELOCITY即为110。
上述代码中出现了一个运算符“-”,它的作用也显而易见:从数值中减去某个量。play_note function()中的第一个参数指示生成音符的序号,经过减法运算后变为 $EVENT_NOTE – 12。当你演奏C3(60)时,代码输出的实际上是C2(48),因为60-12=48,力度保持不变。
读者可以自行尝试减去不同的数值,也可以对音符力度进行操作(例如$EVENT_VELOCITY – 20),甚至可以叠加多个play_note()函数。
总结
内建变量极为重要,功能强大,不可被定义,随写随用。本节课我们学习了两个重要的内建变量: $EVENT_NOTE与$EVENT_VELOCITY。KSP提供种类繁多的内建变量,完整列表可在参考章节查阅。