KSP Variables 日本語訳と実例

変数 Variables

  • すべてのユーザ定義変数は、on initコールバックで宣言する必要があります。
  • 変数名には数字、文字、アンダースコア(_)のみを使用できます。
  • 変数名では大文字と小文字が区別されます。
  • これらの接頭辞は内部変数と定数に使用されるため、下の接頭辞を持つ変数は作成しないでください


p.017 $ (int variable)

単一の整数値を格納するためのユーザー定義変数の宣言

on init
declare $test
$test := -1
end on

短く書くなら
on init
declare $test := -1
end on


p.018 % (int array)

declare %<array-name>[<num-of-elements>]
特定のインデックスに単一の整数値を格納するためのユーザー定義配列の宣言

備考
配列の最大サイズは32768です。

  • 要素数は定数で定義する必要がありますが、標準変数は使用できません。
  • 1つの値を持つ配列を初期化することができます(下の2番目の例を参照)

on init
declare %presets[10*8] := (...
{1} 8,8,8,0, 0,0,0,0,...
{2} 8,8,8,8, 0,0,0,0,...
{3} 8,8,8,8, 8,8,8,8,...
{4} 0,0,5,3, 2,0,0,0,...
{5} 0,0,4,4, 3,2,0,0,...
{6} 0,0,8,7, 4,0,0,0,...
{7} 0,0,4,5, 4,4,2,2,...
{8} 0,0,5,4, 0,3,0,0,...
{9} 0,0,4,6, 7,5,3,0,...
{10} 0,0,5,6, 4,4,3,2)
end on

同じ配列を値4で初期化する簡単な方法
on init
declare %presets[10*8] := (4)
end on


p.019 ~ (real variable)

declare ~<real variable>
単一の実数値を格納するためのユーザー定義変数の宣言

備考
実数は、数値が整数でも小数点を使用して常に定義する必要があります。たとえば、2の代わりに2.0を使用する必要があります

on init
declare ~test := 0.5
end on


p.020 ? (real array)

declare ?<array-name>[<num-of-elements>]
特定のインデックスに単一の実数値を格納するためのユーザー定義配列の宣言

備考

  • 配列の最大サイズは32768です。
  • 要素の数は定数の整数値で定義する必要があります。標準の変数は使用できません。
  • 1つの値を持つ配列を初期化することができます(下の2番目の例を参照)。
  • コマンドarray_equal()とsearch()は、実数の配列では機能しません。

プリセットデータを格納する配列を作成する
on init
declare ?presets[5*4] := (...
{1} 1.0, 1.0, 1.0, 1.0,...
{2} 0.5, 0.7, 0.1, 0.5,...
{3} 1.0, 0.6, 0.6, 0.2,...
{4} 0.0, 0.0, 0.5, 0.3,...
{5} 0.0, 1.0, 0.4, 0.1)
end on
creating an array for storing preset data

1.0resetの値を持つ同じ配列を初期化するpquickの方法を格納するための配列を作成する
on init
declare ?presets[10*8] := (1.0)
end on


p.021 @ (string variable)

declare @<variable-name>
テキストを格納するためのユーザー定義の文字列変数を宣言する

備考

  • 整数変数の場合と同じコード行で文字列変数を宣言して定義することはできません。
  • 文字列変数を永続化することは可能です。

画像の説明

on init
declare @text
@text := "Last received note number played or released: "
end on
on note
message(@text & $EVENT_NOTE)
end on
on release
message(@text & $EVENT_NOTE)
end on


p.022 ! (string array)

declare !<array-name>[<num-of-elements>]
指定されたインデックスにテキスト文字列を格納するユーザー定義の文字列配列を宣言する
画像の説明

on init
declare $count
declare !note[12]

note[0] := "C"

note[1] := "Db"

note[2] := "D"

note[3] := "Eb"

note[4] := "E"

note[5] := "F"

note[6] := "Gb"

note[7] := "G"

note[8] := "Ab"

note[9] := "A"

note[10] := "Bb"

note[11] := "B"

declare !name [128]
while ($count < 128)

name[$count] := !note[$count mod 12] & (($count/12)-2)

inc ($count)
end while
end on
on note
message("Note played: " & !name[$EVENT_NOTE])
end on
creating a


p.023 const $ (constant integer)

declare const $<variable-name>
単一の整数値を格納するためのユーザー定義定数の宣言

備考

  • 名前が示すように、定数変数の値は変更されずに読み取られるだけです。
  • 定数の名前を大文字にすることは非常に一般的です

定数の作成、プリセット配列作成時の便利な機能
on init
declare const $NUM_OF_PRESETS := 10
declare const $NUM_OF_PARAMETERS := 5
declare %preset_data[$NUM_OF_PRESETS * $NUM_OF_PARAMETERS]
end on


p.024 const ~ (real constant)

declare const ~<variable-name>
単一の実数値を格納するユーザー定義定数を宣言する

備考

  • 名前が示すように、定数変数の値は変更されずに読み取られるだけです。
  • 定数の名前を大文字にすることは非常に一般的です

on init
declare const ~BIG_NUMBER := 100000.0
declare const ~SMALL_NUMBER := 0.00001
end on


p.025 polyphonic $ (polyphonic integer)

declare polyphonic $<variable-name>
ノートイベントごとに単一の整数値を格納するためのユーザ定義のポリフォニック変数の宣言

備考

  • ポリフォニック変数は、実行されたノートイベントごとに一意の変数として機能し、たとえばwait()を使用するときなどに並行して実行されるコールバックの競合を回避します。
  • ポリフォニック変数は、対応するノートのリリースコールバックでその値を保持します。
  • ポリフォニック変数は、通常の変数よりもはるかに多くのメモリを必要とします。
  • ポリフォニック変数は、ノートコールコールとリリースコールバックでのみ使用する必要があります

polyphonic integer

on init
declare $counter
declare polyphonic $polyphonic_counter
end on
on note
message($polyphonic_counter & " " & $counter)
inc($counter)
inc($polyphonic_counter)
end on
ポリフォニック変数は常にコールバックごとに一意なので、$ polyphonic_counterは表示されたメッセージでは常に0になります


p.026 make_instr_persistent()

make_instr_persistent(<variable>)
計測器でのみ変数の値を保持する

備考
make_instr_persistent()はmake_persistent()と似ていますが、変数の値は計測器でのみ保存され、スナップショットでは保存されません。例えば、スナップショットの読み込み時にUI要素が変更されないようにします。

画像の説明

on init
set_snapshot_type(1) {init callback not executed upon snapshot loading}
declare ui_knob $knob_1 (0,2,1)
set_text($knob_1,"Pers.")
make_persistent($knob_1)
declare ui_knob $knob_2 (0,2,1)
set_text($knob_2,"Inst Pers.")
make_instr_persistent ($knob_2)
declare ui_knob $knob_3 (0,2,1)
set_text($knob_3,"Not Pers.")
end on
スナップショットをロードするときに2番目のノブは変更されません


p.027 make_persistent()

make_persistent(<variable>)

備考
•変数の状態は、パッチ(またはマルチまたはホストチャンク)だけでなく、スクリプトがKONTAKTプリセット(.nkpファイル)として保存されたときにも保存されます。

  • 変数の状態は、initコールバックの最後に読み込まれます。 initコールバック内に格納された値を手動でロードするには、read_persistent_var()を使用します。
  • on persistenceコールバックを使用して、永続変数の値を取得することもできます
  • スクリプトコードをコピーして置き換えてテキストを置換するときは、永続変数の値も保持されます。
  • より複雑なスクリプトを扱う場合、スクリプトをリセットして変数を "フラッシュ"したい場合があります。それぞれのスロットに空のスクリプトを適用することで、これを行うことができます。

画像の説明

on init
declare ui_knob $Preset (1,10,1)
make_persistent ($Preset)
end on

ノブのようなユーザーインターフェイス要素は、通常、楽器をリロードするときにその値を保持する必要があります


p.028 read_persistent_var()

make_persistent()コマンドで保存された変数の値を直ちにリロードします。

備考

  • このコマンドは、initコールバック内でのみ使用できます。
  • 変数の状態は、パッチ(またはマルチまたはホストチャンク)だけでなく、スクリプトがKONTAKTプリセット(.nkpファイル)として保存されたときにも保存されます。
  • スクリプトコードをコピーして置き換えてテキストを置き換えるときは、永続変数の値も保持されます。
  • より複雑なスクリプトを扱う場合、スクリプトをリセットして変数を "フラッシュ"したい場合があります。それぞれのスロットに空のスクリプトを適用することで、これを行うことができます。
  • あなたもすることができます

画像の説明

on init
declare ui_label $label (1,1)
declare ui_button $button
set_text($button,"$a := 10000")
declare $a
make_persistent($a)
{read_persistent_var($a)}
set_text ($label,$a)
end on
on ui_control ($button)
$a := 10000
set_text($label,$a)
end on

このスクリプトを適用した後、ボタンをクリックし、NKIを保存して閉じます。再読み込み後、initコールバックの最後で$ aの値が初期化されるため、ラベルには0が表示されます。 read_persistent_varを中心に{}を削除し、スクリプトを再度適用します。 Voila。

スポンサーリンク

最後までお読みいただきありがとうございます!
この記事が気に入ったらシェアをお願いします。

  画像の説明

コメント


認証コード4161

コメントは管理者の承認後に表示されます。