KONTAKTのスクリプト言語KSPでサウンドプログラミング

Native Instruments社のKONTAKTというサンプラーソフトがあります。製品版はけっこう高価ですが、機能限定版のKONTAKT PLAYERがフリーでダウンロード可能で、またDAWがなくてもスタンドアロンで使えるので気軽に試奏することができます。このKONTAKTには出音を多彩にコントロールできるようにKontakt Script Processor(KSP)というスクリプト言語が内蔵されています。ちょっと調べたところ、面白そうなので今回はKSPで遊んでみました。
 
KSPは一種のドメイン固有言語(DSL)ということもあり、機能は少ないですが、その分おぼえることも少ない印象です。また、この手のDSLにしては珍しく、しっかりしたリファレンスマニュアルが付いてくるのでプログラミングは比較的簡単にできました。
 
とりあえずHello Worldはこんな感じ。ステータス行にメッセージを表示します。

on init
    message ("Hello, World!")
end on


 
別バージョンのHello World。ラベルとしてメッセージを表示します。

on init
    declare ui_label $label (1,1)
    set_text($label,"Hello, World!")
end on


 
次は押された鍵盤のノートナンバーとベロシティを表示するプログラム。

on init
    declare ui_value_edit $note (0,127,1)
    declare ui_value_edit $velo (0,127,1)
end on

on note
    $note := $EVENT_NOTE
    $velo := $EVENT_VELOCITY
end on

on release
    $note := 0
    $velo := 0
end on


 
最後に少し実用的なプログラム。ソフト音源でよくあるリリースノイズを再現してみます。リリースノイズとは、ギターの弦から指が離れる音やピアノのハンマーが戻る音など、音が止まるときに出るノイズで、これをうまく鳴らすと音にリアリティが増します。

on init
    declare $noise
    $noise := 100
    declare $rnd
end on

on release
    $rnd := random(0, 5)
    if ($rnd <= 2)
        wait(1000)
        play_note($noise + $rnd, $EVENT_VELOCITY, 0, 100000)
    end if
end on

このプログラムは乱数により1/2の確率でリリースノイズを鳴らします。リリースノイズはノートナンバー100-102(E6-F#6)にマッピングされた3種類のノイズからランダムに選ばれます。
 
初音ミクの「あー」という声をサンプリングした音にリリースノイズとしてブレス音を設定するとこんな感じになります。

Download
enjoy!
 
2018.09.02 追記 KSP中級者向けの電子書籍を書きました。





そのまま使えるKSP実践スクリプト集