最後までお読みいただきありがとうございます!
この記事が気に入ったらシェアをお願いします。
KSP Reference ManualのDL(正規サイト)
CC、ピッチベンド、またはチャンネル圧力メッセージが受信されるたびに実行されるMIDIコントローラコールバック
on controller
if (in_range($CC_NUM,0,127))
message("CC Number: "& $CC_NUM&" - Value: " & %CC[$CC_NUM])
else
if ($CC_NUM = $VCC_PITCH_BEND)
message("Pitchbend" & " - Value: " & %CC[$CC_NUM])
end if
if ($CC_NUM = $VCC_MONO_AT)
message("Channel Pressure" &" - Value: "&%CC[$CC_NUM])
end if
end if
end on
スクリプトが正常に解析されたときに実行される初期化コールバック
備考
initコールバックは次の場合に実行されます:
- スクリプトエディタで[適用]ボタンをクリックする
- スクリプトプリセットまたは楽器をロードする
- Monitor / Engineタブの再起動ボタンまたはKONTAKTのヘッダーの再起動ボタンをクリックして、KONTAKTのオーディオエンジンを再起動します。
- set_snapshot_type()を0に設定してスナップショットをロードする
on init
declare ui_button $Sync
declare ui_menu $time
add_menu_item ($time,"16th",0)
add_menu_item ($time,"8th",1)
$Sync := 0 {sync is off by default, so hide menu}
move_control ($time,0,0)
move_control ($Sync,1,1)
make_persistent ($Sync)
make_persistent ($time)
read_persistent_var ($Sync)
if ($Sync = 1)
move_control ($time,2,1)
else
move_control ($time,0,0)
end if
end on
on ui_control ($Sync)
if ($Sync = 1)
move_control ($time,2,1)
else
move_control ($time,0,0)
end if
end on
定義可能な時間間隔で、またはトランスポート・コマンドが受信されるたびに実行されるリスナー・コールバック
備考
リスナーコールバックは、set_listener()コマンドで定義された時間間隔で実行されます。また、ホストのトランスポート開始および停止コマンドに反応することもできます。これは、シーケンサー、アルペジエーター、MIDIファイルプレーヤーなどのように同期されたテンポのための理想的なコールバックになります。
- ダニを省略することができます。
on init
declare ui_knob $Test (0,99,1)
declare $direction
declare $tick_counter
set_listener($NI_SIGNAL_TIMER_MS,10000)
end on
on listener
if ($NI_SIGNAL_TYPE = $NI_SIGNAL_TIMER_MS)
if ($direction = 0)
inc($tick_counter)
else
dec($tick_counter)
end if
$Test := $tick_counter
if ($tick_counter = 99)
$direction := 1
end if
if ($tick_counter = 0)
$direction := 0
end if
end if
end on
ノートオンメッセージが受信されるたびに実行されるノートコールバック
on note
message("Note Nr: " & $EVENT_NOTE & " - Velocity: " & $EVENT_VELOCITY)
end on
initコールバックの後、またはスナップショットがロードされるたびに実行される
備考
on persistence_changedコールバックは、永続変数が計測器内で変化するたびに呼び出されます。つまり、initコールバックが呼び出された後、および/またはスナップショットのロード時に常に実行されます。
on init
set_snapshot_type(1) {init callback not executed upon snapshot loading}
reset_ksp_timer
declare $init_flag {1 if init callback has been executed, 0 otherwise}
$init_flag := 1
declare ui_label $label (2,2)
set_text($label,"init callback " & $KSP_TIMER)
end on
function add_text
add_text_line($label,"persistence_changed callback " & $KSP_TIMER)
end function
on persistence_changed
if ($init_flag = 1) {instrument has been loaded}
call add_text
else {snapshot has been loaded}
set_text($label,"Snapshot loaded")
end if
$init_flag := 0
end on
任意のスクリプトでpgs_set_key_val()コマンドが実行されるたびに実行される
備考
PGSはProgram Global Storageの略で、スクリプトスロット間の通信手段です。詳細は、PGSの章を参照してください。
on init
declare ui_knob $First (0,100,1)
declare ui_table %Next[128] (5,2,100)
end on
on pgs_changed
{checks if FIRST_KEY and NEXT_KEY have been declared}
if(pgs_key_exists(FIRST_KEY) and pgs_key_exists(NEXT_KEY))
$First := pgs_get_key_val(FIRST_KEY,0)
%Next[0] := pgs_get_key_val(NEXT_KEY,0)
%Next[127] := pgs_get_key_val(NEXT_KEY,127)
end if
end on
スクリプトスロットの順序にかかわらず、この例のコントロールが変更されます。
on init
pgs_create_key(FIRST_KEY, 1) {defines a key with 1 element}
pgs_create_key(NEXT_KEY, 128){defines a key with 128 elements}
declare ui_button $Push
end on
on ui_control($Push)
pgs_set_key_val(FIRST_KEY, 0,70 * $Push)
pgs_set_key_val(NEXT_KEY, 0, 50 * $Push)
pgs_set_key_val(NEXT_KEY, 127, 60 * $Push)
end on
ポリフォニックアフタータッチメッセージが受信されるたびに実行されるポリフォニックアフタータッチコールバック
on init
declare %note_id[128]
end on
on note
%note_id[$EVENT_NOTE] := $EVENT_ID
end on
on poly_at
change_tune(%note_id[$POLY_AT_NUM],%POLY_AT[$POLY_AT_NUM]*1000,0)
end on
ノートオフメッセージを受信するたびに実行されるリリースコールバック
on init
declare polyphonic $new_id
end on
on release
wait(1000)
$new_id := play_note($EVENT_NOTE,$EVENT_VELOCITY,0,2000000)
change_vol ($new_id,-30000,1)
end on
rpnまたはnrpn(登録済み/登録されていないパラメータ番号)メッセージを受信するたびに実行されるrpnおよびnrpnコールバック
on rpn
select ($RPN_ADDRESS)
case 0
message ("Pitch Bend Sensitivity"&" - Value: "& $RPN_VALUE)
case 1
message ("Fine Tuning" & " - Value: " & $RPN_VALUE)
case 2
message ("Coarse Tuning" & " - Value: " & $RPN_VALUE)
end select
end on
ユーザーがそれぞれのUI要素を変更するたびに実行されるUIコールバック
on init
declare ui_knob $Knob (0,100,1)
declare ui_button $Button
declare ui_switch $Switch
declare ui_table %Table[10] (2,2,100)
declare ui_menu $Menu
add_menu_item ($Menu,"Entry 1",0)
add_menu_item ($Menu,"Entry 2",1)
declare ui_value_edit $VEdit (0,127,1)
declare ui_slider $Slider (0,100)
end on
on ui_control ($Knob)
message("Knob" & " (" & $ENGINE_UPTIME & ")")
end on
on ui_control ($Button)
message("Button" & " (" & $ENGINE_UPTIME & ")")
end on
on ui_control ($Switch)
message("Switch" & " (" & $ENGINE_UPTIME & ")")
end on
on ui_control (%Table)
message("Table" & " (" & $ENGINE_UPTIME & ")")
end on
on ui_control ($Menu)
message("Menu" & " (" & $ENGINE_UPTIME & ")")
end on
on ui_control ($VEdit)
message("Value Edit" & " (" & $ENGINE_UPTIME & ")")
end on
on ui_control ($Slider)
message("Slider" & " (" & $ENGINE_UPTIME & ")")
end on
KONTAKTのすべてのGUI変更で実行されるUI更新コールバック
備考
このコマンドは、KONTAKTのGUIを変更するたびに起動されるので、注意して使用してください。
on init
declare ui_knob $Volume (0,1000000,1)
set_knob_unit ($Volume,$KNOB_UNIT_DB)
set_knob_defval ($Volume,630859)
$Volume := _get_engine_par ($ENGINE_PAR_VOLUME,-1,-1,-1)
set_knob_label ($Volume,_get_engine_par_disp...
($ENGINE_PAR_VOLUME,-1,-1,-1))
end on
on ui_update
$Volume := _get_engine_par ($ENGINE_PAR_VOLUME,-1,-1,-1)
set_knob_label($Volume,_get_engine_par_disp...
($ENGINE_PAR_VOLUME,-1,-1,-1))
end on
on ui_control ($Volume)
_set_engine_par($ENGINE_PAR_VOLUME,$Volume,-1,-1,-1)
set_knob_label ($Volume,_get_engine_par_disp...
($ENGINE_PAR_VOLUME,-1,-1,-1))
end on
Total:3361 Today:1 Yesterday:1 Now:3