実践KSP
準備
Native Instruments Kontakt5 (The latest version is not supported)

Callback、Variable、Commandなどの区別を何となくつけておくこと。
できるだけ手書きしましょう。

e.g. (for example):例えば
i.e. (that is):すなわち〜
immediately:すぐに
respective:それぞれの
retrieve:取る、回収する
specify:指定する
(text) string:文字列

参考
aikeの日記
Kontakt5 Application Reference
KSP Reference Manual (Kontakt4)
Nils' Kontakt Script Tutorial
NI User Forums
ミュージシャンのためのKSP入門

(c)2013- Challenge KSP

Callback

まずは実行。
ノブを動かすと奇数の時にスイッチがオンになり偶数の時はオフになる。
スイッチを押してもオンにならない。
鍵盤を押すとスイッチがオンになり、押し続けると2秒後にオフになる。
鍵盤を離すとただちにオフになる。
任意のMIDI CCでノブを動かすことはできるがスイッチは動かない。
連動させるには別途記述が必要。
それぞれの機能がわかるだろうか。

Return to menu

パフォーマンス・ビュー

set_script_title
スクリプトスロット、パフォーマンス・ビュータブに表示させるタイトル。
文字列は「"」でくくる。

make_perfview
右端に[PV]が追加されクリックするとカスタム・パネルを表示させることできる(左上工具マーク下の画像範囲でも可)。
各スロットで設定可能。
パフォーマンス・ビュータブは設定された分のみ表示される。
必要がなければ記述しない。

set_ui_heightset_ui_height_pxset_ui_widthset_ui_width_px
カスタム・パネルの高さと幅をグリッドまたはピクセルで指定する。
高さ、1~8(grid), 50~750px
幅、1~15(grid), 633~1000px

Return to menu

オンスクリーン・キーボードの色付け
*仕様変更されているので参考程度に

サンプルが存在すれば自動で青色になる。

{ memo } 括弧はスクリプトの影響外なのでコメントなどに活用できる。全角不可。

(1) set_key_color で鍵盤の番号と色を指定する。
(2) すべての鍵盤を白くする。
(3) 38から81番を青くする。このような書式は良く使うのでしっかり理解しておく。

スクリプトは上から下へと更新されるので(1)は上書きされる。

黒鍵を白くするにはKEY_COLOR_BLACKを使う。

Return to menu

UIの配置

ui_knob でノブが表示される。
move_control の位置は指定しない状態のノブの横幅をグリッドで1、縦を2とする。
move_control_pxでピクセル単位で指定可能。

Return to menu

MIDI CCの送受信

例ではAmplifier > Modでmidi CC(11)を作る必要があります。
on controllerで受信、on ui_controlで送信を設定する。
Ctrl+クリックでデフォルト値に戻すには$CONTROL_PAR_DEFAULT_VALUEで指定する。
$CC_NUM = 1、set_controller(1,$exp)、Amplifier > Mod > midi CC(1)とするとモジュレーションホイールで音量操作できる。

状態の保存

make_persistent は変数の値を保持する(編集時含む)。
DAWでプロジェクトを再度読み込んだ時、以前設定した状態で復帰できる。
保存せずライブラリを削除してから同じものを読み込んでも復帰できない。

Return to menu

Engine Parameter

SendEffects(以下SEND)のSlot0(左端)に何か、InsertEffects(以下INSERT)かGroupInsertFx(All、以下GROUP)に[Sends]を置く。
例はスイッチによるエフェクトのオンオフとノブによるセンド量調性ができる。

set_engine_par(<parameter>,<value>,<group>,<slot>,<generic>)
groupとslotは0から数える。*は任意。
GROUPを使う場合:set_engine_par(*,*,*,*,-1)
INSERTを使う場合:set_engine_par(*,*,-1,*,1)
SENDを使う場合:set_engine_par(*,*,-1,*,0)

<generic>
INSERT=1 / SEND=0 固定、GROUPはそれ以外なので-1。
<group>
INSERT/SENDともに関係ないので-1に固定。

SENDはINSERTかGROUPの[Sends]にまとめて送られる。
INSERTはグループ全体にかかり、GROUPはグループ個別にオンオフをしたい時に使う。

Return to menu

キースイッチ

スイッチの表示が必要なければ$CONTROL_PAR_HIDEで隠す。

例はC(48)を押すとgroup1が無視されgroup0のみ発音され、D(50)はその逆。

disallow_group ($ALL_GROUPS)はすべてのグループが無効になる。

Return to menu

自前の画像を使う

ui_knobは無効。

ファイル名の拡張子は省略可能。
set_control_par_strで記述。

$CONTROL_PAR_MOUSE_BEHAVIOURは-5000~5000で速度を指定する。
マイナスは上下操作。

ファイルはリソースコンテナをnkiのあるフォルダに作りResources > picturesに格納する。
(仮でデフォルトのUsers > username > Documents > Native Instruments > Kontakt 5 > picturesでも可)

画像は隙間なく縦に並べる。

上下にパラメーターの最小値から最大値を並べる。

画像ひとつに対し同じ名前のtxtファイルを作成する。

Has Alpha Channel: yes
Number of Animations: 128
Horizontal Animation: no
Vertical Resizable: no
Horizontal Resizable: no
Fixed Top: 0
Fixed Bottom: 32
Fixed Left: 0
Fixed Right: 16
(改行)

Has Alpha Channel (yes/no)
画像に透過要素があるか。わからなければyesで問題なさそう。

Number of Animations
パターン数。UIの設定値と枚数が違ってもKontakt側で帳尻を合わせてくれる。

Horizontal Animation (yes/no)
designates in what direction the image should be split.

Vertical Resizable (yes/no)
if set to yes, it is possible to adjust the height of the image file in KONTAKT using the $CONTROL_PAR_HEIGHT constant in the set_control_par command.

Horizontal Resizable (yes/no)
if set to yes, it is possible to adjust the width of the image file in KONTAKT using the $CONTROL_PAR_WIDTH constant.

Fixed Top、Fixed Bottom、Fixed Left、Fixed Right
1パターンの画像サイズ。縦のサイズをFixed Bottom、横のサイズをFixed Rightで指定する。
if you wish to be able to resize an image, but keep a certain area around the edge intact, simply set the number of pixels in the desired area.

*英語の説明文は未確認なのでKontakt 4 Player Developer Guideより引用。

buttonやswitchのパターンは以下。(Number of Animations:6)

Return to menu

まとめて設定

同じ形にしたいUIが多数ある時はwhileを使ってまとめて設定する。
UIを定義して配列で各々のIDを記述。

num_elementsは配列の要素数。0から始まるので < を使う。
要素の実数でも可。

$count < num_elements(%id_slider)は、$countが要素数未満の場合、ではなく、1番目から6番目までの要素を取り出す、という意味。
例では3番目から5番目までの要素を取り出す。

$count自体に意味はないが作っておくと便利($aでも$zzzでもお好きなように)。
inc()dec()は増減の連続性をつくるもので複数選択では必要なので忘れずに。

Return to menu

フォント

様々なフォントを眺めてみよう。

Return to menu

ノートオンでパラメーター表示

(いくつかグループを作ってボリュームを適当に動かしておく)
例では最低音が30で以降任意のキーまでサンプルが埋まっているものとする。
ノートナンバーとグループインデックスは低い順から連動している。
30以降のキーを押すとその音色(グループ)のボリュームが表示される。
ドラムライブラリで活用できる。
一連の長い記述を改行で有効にするには "..." を置いてその先を改行する。

Return to menu