KSP Event Commands 日本語訳と実例

Event Commands




p.066 by_marks(<bit-mark>)

ユーザ定義のイベントグループ(またはイベントID)

備考
by_marks()は、set_event_mark()で設定できるユーザー定義のイベントグループです。これは、note_off()、change_tune()などのイベントIDを利用するすべてのコマンドで使用できます。

画像の説明

on note
if ($EVENT_NOTE mod 12 = 0) {if played note is a c}
set_event_mark($EVENT_ID,$MARK_1)
change_tune(by_marks($MARK_1),%CC[1]*1000,0)
end if
end on
on controller
if($CC_NUM = 1)
change_tune(by_marks($MARK_1),%CC[1]*1000,0)
end if
end on


p.067 change_note()

change_note(<ID-number>,<note-number>)
特定のノートイベントのノート番号を変更する

備考

  • change_note()はノートコールバックでのみ許可され、最初のwait()文の前にのみ動作します。音声が既に実行されている場合は、変数の値だけが変更されます。
  • 特定のノートイベントのノートナンバーが変更されると、それは新しい$ EVENT_NOTEになります
  • $ ALL_EVENTSなどのイベント・グループを介してイベントに対処することはできません

画像の説明

on init
declare %black_keys[5] := (1,3,6,8,10)
end on
on note
if (search(%black_keys,$EVENT_NOTE mod 12) # -1)
change_note($EVENT_ID,$EVENT_NOTE-1)
end if
end on


p.068 change_pan()

change_pan(<ID-number>,<panorama>,<relative-bit>)
特定のノートイベントのパン位置を変更する

<ID-number>
変更されるノートイベントのID番号
<panorama>
ノートイベントのパン位置
  • 1000(左)〜1000(右)
<relative-bit>
相対ビットが0に設定されている場合、量は絶対値であり、すなわちその量はそのイベントの以前の設定値を上書きする。
1に設定すると、その金額はイベントの実際の値に相対的です。
異なる意味は、同じイベントに適用される複数のchange_pan()ステートメントにのみ関連します。

備考
change_pan()は、ノートイベントレベルで機能し、計測器自体のパノラマ設定は変更しません。また、パノラマに関するMIDI変調には関係しません。

画像の説明
画像の説明

on init
declare $pan_position
end on
on note
$pan_position := ($EVENT_NOTE * 1000 / 127) - 1000
change_pan ($EVENT_ID,$pan_position,0)
end on

on note
if ($EVENT_NOTE < 60)
change_pan ($EVENT_ID,1000,0)
wait(500000)
change_pan ($EVENT_ID,-1000,0) {absolute, pan is at -1000}
else
change_pan ($EVENT_ID,1000,1)
wait(500000)
change_pan ($EVENT_ID,-1000,1) {relative, pan is at 0}
end if
end on


p.069 change_tune()

change_tune(<ID-number>,<tune-amount>,<relative-bit>)
ミリ秒単位で特定のノートイベントのチューニングを変更する

<ID-number>
変更されるノートイベントのID番号
<tune-amount>
ミリオン単位での曲の量
従って100000は100セントに等しい(すなわちハーフトーン)
<relative-bit>
相対ビットが0に設定されている場合、量は絶対値であり、すなわちその量はそのイベントの以前の設定値を上書きする。
1に設定されている場合、その金額はイベントの実際の値に相対的です。
異なる意味は、同じイベントに適用される複数のchange_tune()ステートメントにのみ関連します。

備考
change_tune()は、ノートイベントレベルで動作し、楽器自体のチューン設定は変更しません。チューニングに関するMIDIモジュレーションにも関係しません。

on init
declare $tune_amount
end on
on note
$tune_amount := random(-50000,50000)
change_tune ($EVENT_ID,$tune_amount,1)
end on


p.070 change_velo()

change_velo(<ID-number>,<velocity>)
特定のノートイベントのベロシティを変更する

備考

  • change_velo()は、ノートコールバックでのみ許可され、最初のwait()ステートメントの前にのみ動作します。音声が既に実行されている場合は、変数の値だけが変更されます。
  • 特定のノートイベントのベロシティが変更されると、それは新しい$ EVENT_VELOCITYになります
  • $ ALL_EVENTSなどのイベント・グループを介してイベントに対処することはできません

画像の説明


p.071 change_vol()

change_vol(<ID-number>,<volume>,<relative-bit>)
特定のノートイベントの音量をミリ単位で変更する

<ID-number>
変更されるノートイベントのID番号
<volume>
ミリデシベル単位の音量変化
<relative-bit>
相対ビットが0に設定されている場合、量は絶対値であり、すなわちその量はそのイベントの以前の設定値を上書きする。
1に設定されている場合、その金額はイベントの実際の値に相対的です。
異なる意味は、同じイベントに適用される複数のchange_vol()ステートメントにのみ関連します

備考

  • change_vol()はノートイベントレベルで機能し、楽器自体のチューン設定は変更しません。音量に関するMIDIモジュレーション(MIDI CC7など)とは関係ありません

画像の説明

on init
declare $vol_amount
end on
on note
$vol_amount := (($EVENT_VELOCITY - 1) * 12000/126) - 6000
change_vol ($EVENT_ID,$vol_amount,1)
end on


p.072 delete_event_mark()

delete_event_mark(<ID-number>,<bit-mark>)
イベントマークを削除する、すなわち、指定されたイベントをイベントグループからグループ解除する

<ID-number>
グループ化されないイベントのID番号
<bit-mark>
ここでは、イベントに割り当てられている$ MARK_1から$ MARK_28までの28個のマークのうちの1つを入力できます。


p.073 event_status()

event_status(<ID-number>)
特定のノートイベント(またはマルチスクリプトのMIDIイベント)のステータスを取得する
ノートはアクティブであるか、またはこの関数は
$ EVENT_STATUS_NOTE_QUEUE(またはマルチスクリプトの$ EVENT_STATUS_MIDI_QUEUE)
または非アクティブである場合、関数は
$ EVENT_STATUS_INACTIVE

備考
event_status()を使用して、ノートイベントがまだ「生きている」かどうかを調べることができます。

on init
declare %key_id[128]
end on
on note
if (event_status(%key_id[$EVENT_NOTE])= $EVENT_STATUS_NOTE_QUEUE)
fade_out(%key_id[$EVENT_NOTE],10000,1)
end if
%key_id[$EVENT_NOTE] := $EVENT_ID
end on


p.074 fade_in()

fade_in(<ID-number>,<fade-time>)
特定のノートイベントに対してフェードインを実行する

<ID-number>
フェードインするノートイベントのID番号
<fade-time>
マイクロ秒単位のフェードイン時間

画像の説明

on init
declare $note_1_id
declare $note_2_id
end on
on note
$note_1_id := play_note($EVENT_NOTE+12,$EVENT_VELOCITY,0,-1)
$note_2_id := play_note($EVENT_NOTE+19,$EVENT_VELOCITY,0,-1)
fade_in ($note_1_id,1000000)
fade_in ($note_2_id,5000000)
end on


p.075 fade_out()

fade_out(<ID-number>,<fade-time>,<stop-voice>)
特定のノートイベントに対してフェードアウトを実行する

<ID-number>
フェードインするノートイベントのID番号
<fade-time>
マイクロ秒単位のフェードイン時間
<stop_voice>
1に設定すると、フェードアウト後に音声が停止します。
0に設定すると、フェードアウト後も音声は実行されます

画像の説明
画像の説明

on controller
if ($CC_NUM = 1)
if (%CC[1] mod 2 # 0)
fade_out($ALL_EVENTS,5000,0)
else
fade_in($ALL_EVENTS,5000)
end if
end if
end on
モジュレーションを触るとブツッと消える

on controller
if ($CC_NUM = 1)
fade_out($ALL_EVENTS,5000,1)
end if
end on
モジュレーションを触ると全ノートがオフになる


p.076 get_event_ids()

get_event_ids(<array-name>)
指定された配列をすべてのアクティブイベントIDで埋めます。
このコマンドは、イベントが存在する限り既存の値をすべて上書きし、イベントがそれ以上アクティブでない場合は0を書き込みます。

<array-name>
アクティブなイベントIDでいっぱいになる配列

画像の説明

on init
declare const $ARRAY_SIZE := 500
declare %test_array[$ARRAY_SIZE]
declare $a
declare $note_count
end on
on note
get_event_ids(%test_array)
$a := 0
$note_count := 0
while($a < $ARRAY_SIZE and %test_array[$a] # 0)
inc($note_count)
inc($a)
end while
message("Active Events: " & $note_count)
end on


p.077 get_event_par()

get_event_par(<ID-number>,<parameter>)
指定されたイベントの特定のイベントパラメータの値を返します。

<ID-number>
イベントのID番号
<parameter>
イベントパラメータ、4つの自由に割り当て可能なイベントパラメータ
$EVENT_PAR_0
$EVENT_PAR_1
$EVENT_PAR_2
$EVENT_PAR_3
またはノートイベントの「内蔵」パラメータ:
$EVENT_PAR_VOLUME
$EVENT_PAR_PAN
$EVENT_PAR_TUNE
$EVENT_PAR_NOTE
$EVENT_PAR_VELOCITY
$EVENT_PAR_SOURCE
$EVENT_PAR_PLAY_POS
$EVENT_PAR_ZONE_ID (use with caution, see below)

備考
ノートイベントは、ノートナンバー、再生されたベロシティ、音量、パン、チューンのような特定の情報を常に持ちます。 set_event_par()を使用すると、これらのパラメータを設定することも、$ EVENT_PAR_0のように自由に代入可能なパラメータを使用することもできます。これは、スクリプトを連鎖させる場合、つまりスロット1のイベントのイベントパラメータを設定し、get_event_par()を使用してスロット2の情報を取得する場合に特に便利です。

画像の説明

on note
message(get_event_par($EVENT_ID,$EVENT_PAR_NOTE))
end on


p.079 get_event_par_arr()

get_event_par_arr(<ID-number>,<parameter>,<group-index>)
特別な形式のget_event_par()は、指定されたイベントのグループ許可状態を取得するために使用されます

<ID-number>
ノートイベントのID番号
<parameter>
この場合、$EVENT_PAR_ALLOW_GROUPのみ
<group-index>>
指定されたノートのグループ許可状態を取り出すためのグループのインデックス

備考
get_event_par_arr()は、get_event_par()の特別な形式です(正確には、配列形式です)。特定のイベントの許可状態を取得するために使用されます。指定されたグループが許可されている場合は1を返し、許可されていない場合は0を返します。

画像の説明

on init
declare $count
declare ui_label $label (2,4)
set_text ($label,"")
end on
on note
set_text($label,"")
$count := 0
while($count < $NUM_GROUPS)
if (get_event_par_arr($EVENT_ID,$EVENT_PAR_ALLOW_GROUP,$count) = 1)
add_text_line($label,"Group ID " & $count & " allowed")
else
add_text_line($label,"Group ID " & $count & " disallowed")
end if
inc($count)
end while
end on


p.080 ignore_event()

ignore_event(<ID-number>)
メモのオンまたはオフのコールバックを無視する

備考
イベントを無視すると、ボリューム、チューン、パンの情報が失われます。しかし、この情報をget_event_par()で取得することができます。以下の2つの例を参照してください。
ignore_event()は非常に強力なコマンドです。イベントを無視することなく、さまざまなchange_xxx()コマンドで同じ結果を得ることができるかどうか常にチェックしてください

画像の説明

on init
declare $new_id
end on
on note
ignore_event($EVENT_ID)
wait (500000)
$new_id := play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1)
change_vol($new_id,get_event_par($EVENT_ID,$EVENT_PAR_VOLUME),1)
change_tune($new_id,get_event_par($EVENT_ID,$EVENT_PAR_TUNE),1)
change_pan($new_id,get_event_par($EVENT_ID,$EVENT_PAR_PAN),1)
end on


p.081 set_event_mark()

set_event_mark(<ID-number>,<bit-mark>)
指定されたイベントを特定のイベントグループに割り当てます。

<ID-number>
グループ化されるイベントのID番号
<bit-mark>
ここでは、イベントに割り当てられている$ MARK_1から$ MARK_28までの28個のマークのうちの1つを入力できます。コマンドを入力するか、演算子+を使用して、複数のマークを1つのイベントに割り当てることもできます。

備考
イベントIDを扱うコマンドを扱う場合、個々のIDではなくby_marks(<bit-mark>)を使用してイベントをグループ化することができます。これは、プログラムがマークではなくIDに対処する必要があることを知る必要があるからです。

備考
イベントIDを扱うコマンドを扱う場合、個々のIDではなくby_marks(<bit-mark>)を使用してイベントをグループ化することができます。これは、プログラムがマークではなくIDに対処する必要があることを知る必要があるからです。

on init
declare $new_id
end on
on note
set_event_mark($EVENT_ID,$MARK_1)
$new_id := play_note($EVENT_NOTE + 12,120,0,-1)
set_event_mark($new_id,$MARK_1 + $MARK_2)
change_pan(by_marks($MARK_1),-1000,1) {both notes panned to left}
change_pan(by_marks($MARK_2), 2000,1) {new note panned to right}
end on


p.082 set_event_par()

set_event_par(<ID-number>,<parameter>,<value>)
特定のイベントにパラメータを割り当てる

<ID-number>
イベントのID番号
<parameter>
イベントパラメータ、自由に割り当て可能な4つのイベントパラメータのいずれか:
$EVENT_PAR_0
$EVENT_PAR_1
$EVENT_PAR_2
$EVENT_PAR_3
またはノートイベントの「内蔵」パラメータ:
$EVENT_PAR_VOLUME
$EVENT_PAR_PAN
$EVENT_PAR_TUNE
$EVENT_PAR_NOTE
$EVENT_PAR_VELOCITY
<value>
イベントパラメータの値

備考
ノートイベントは、ノートナンバー、演奏されたベロシティのような特定の情報を常に「運ぶ」だけでなく、ボリューム、パン、チューンも持ちます。 set_event_par()を使用すると、これらのパラメータを設定することも、$ EVENT_PAR_0のように自由に代入可能なパラメータを使用することもできます。これは、スクリプトを連鎖させる場合、つまりスロット1のイベントのイベントパラメータを設定し、get_event_par()を使用してスロット2の情報を取得する場合に特に便利です。
イベント・パラメーターはシステム・スクリプトの影響を受けません。


p.083 set_event_par_arr()

set_event_par_arr(<ID-number>,<parameter>,<value>,<groupindex>)
特別な形式のset_event_par()は、指定されたイベントのグループ許可状態を設定するために使用されます

<ID-number>
ノートイベントのID番号
<parameter>
この場合、$EVENT_PAR_ALLOW_GROUPのみ使用できます
<value>
1に設定すると、<groupindex>で設定されたグループがイベントに許可されます。
0に設定すると、<groupindex>で設定されたグループはイベントに対して許可されません。
<group-index>
指定された音符のグループの許可状態を変更するためのグループのインデックス

備考
set_event_par_arr()は、set_event_par()の特別な形式です(正確には配列の変種です)。これは、特定のイベントの許可状態を設定するために使用されます。

on note
if (get_event_par_arr($EVENT_ID,$EVENT_PAR_ALLOW_GROUP,0) = 0)
set_event_par_arr($EVENT_ID,$EVENT_PAR_ALLOW_GROUP,1,0)
end if
end on

スポンサーリンク

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

  画像の説明

コメント


認証コード2773

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