所有分類
  • 所有分類
  • 宿主
  • 工具
  • 效果器
  • 教程
  • 采樣器
  • 音源
  • 預設采樣
  • 工程模闆
  • 樂譜

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中,回調函數都是以如下的形式書寫的:

on function</p>
<p>end on

其他的代碼都添加在這中間,否則就不能執行。

常用的回調函數有:

on init 初始化

on note 輸入音符

on release 釋放

on controller 輸入控制器

根據我們之前所說的,它們都要以end on結束。

範例

on init</p>
<p>end on

指令

指令(command)是告訴程序要做什麽的代碼。常用的指令有:

exit 立即結束回調函數

message 提示信息

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

範例

on init<br />
    message (&quot;Hello World!&quot;)<br />
end on

變量

在任何編程語言(腳本語言也是一種編程語言)中,變量都是不可或缺的,沒有變量,一個程序就真的是一個程序,不會有任何的變化可言。變量(Variable)在KS中通過變量名來訪問,其聲明格式如下:

declare $Variable

declare是聲明的意思,變量的聲明有着嚴格的限制:

所有變量都要在on init(初始化)回調函數中聲明

變量名隻能包含數字、字母和下劃線(_)

變量名區分大小寫

不要創建如下命名方式的變量,它們是KS内建變量

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

變量的賦值采用$Variable := Value的形式,其中的空格可以省略。也可以采取一次性聲明和賦值的省略方法declare $Variable := Value的形式,這樣可以提高代碼的連貫性。

on init<br />
    declare $Hello_World<br />
    $Hello_World := 1<br />
    message ($Hello_World)<br />
end on

注釋

爲了保證代碼的可讀性,注釋是必不可少的。解析器會直接忽略注釋,所以增加注釋隻會提高代碼的可讀性而不會減慢執行速度。在KS中,注釋都以{ }的形式存在。注釋内的文本不必用””括起。另外,增加更多的空格也可以提高代碼的可讀性。通過Tab鍵可以輸入長占位符,免去了多次按空格鍵的麻煩。

範例

on init {初始化回調函數}<br />
    message (&quot;Hello World!&quot;) {輸出Hello World!}<br />
end on {結束回調函數}
KS不支持中文、日文、韓文等字母的輸入,若強行粘貼會導緻程序無法執行(注釋除外)。本範例隻是方便大家理解所以采用中文注釋。

語句

語句是程序中極爲關鍵的元素,它就像指揮家,告訴程序應該怎麽走、怎麽做。KS中常用的語句如下:

if…else…else if…end if 條件語句

select() 選擇語句

while 循環語句

random() (僞)随機數

布爾運算

我們拿最簡單的if…end if語句來舉例:

範例

on init<br />
    declare $NUM {定義變量}<br />
    $NUM := 10 {賦值}<br />
    if ($NUM = 10) {如果變量值爲10}<br />
        message (&quot;NUM now is 10.&quot;) {輸出}<br />
    end if<br />
end on

布爾運算

布爾運算是數據符号化的邏輯推演法,在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單獨成立

範例

on init<br />
    declare $NUM {聲明變量}<br />
    $NUM := random(0,5) {在05之間生成僞随機數}<br />
    if ($NUM &amp;amp;amp;gt; 1) {判斷條件}<br />
        message (NUM is greater than 1.) {提示信息}<br />
    end if<br />
end on

數學運算

KS支持基本數學運算和高級數學運算,但是不支持幂運算、對數運算等。

+

*

/ 除以

mod 求餘

KS同樣也支持帶有括号的數學運算(僅支持小括号)。

範例

on init<br />
    declare $N1 {聲明變量}<br />
    declare $N2<br />
    $N1 := random(1,5) {賦值}<br />
    $N2 := random(5,10)<br />
    message (($N1*$N2)*3) {輸出結果}<br />
end on

結尾

本節我們粗略地對Kontakt Script進行了了解,在今後的教程中我們會采用實例分析的方法來介紹KS語法而不是詞典式地羅列。大家在學習到一個新的語法點的時候,不要單純地把代碼複制粘貼或是手工錄入到編輯器裏,那樣是沒有一點效果的,要根據自己對于程序結構的理解把代碼完整地複寫下來、并且能根據這個例子舉一反三才能把一門編程語言掌握。

4
分享海報
需要編曲混音教程、樂譜、工程文件,請聯系微信:audio999555
沒有賬号?注冊  忘記密碼?