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種類のノイズからランダムに選ばれます。
初音ミクの「あー」という声をサンプリングした音にリリースノイズとしてブレス音を設定するとこんな感じになります。
enjoy!
2018.09.02 追記 KSP中級者向けの電子書籍を書きました。