最後までお読みいただきありがとうございます!
この記事が気に入ったらシェアをお願いします。
ユーザ定義のイベントグループ(またはイベント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
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
change_pan(<ID-number>,<panorama>,<relative-bit>)
特定のノートイベントのパン位置を変更する
備考
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
change_tune(<ID-number>,<tune-amount>,<relative-bit>)
ミリ秒単位で特定のノートイベントのチューニングを変更する
備考
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
change_velo(<ID-number>,<velocity>)
特定のノートイベントのベロシティを変更する
備考
- change_velo()は、ノートコールバックでのみ許可され、最初のwait()ステートメントの前にのみ動作します。音声が既に実行されている場合は、変数の値だけが変更されます。
- 特定のノートイベントのベロシティが変更されると、それは新しい$ EVENT_VELOCITYになります
- $ ALL_EVENTSなどのイベント・グループを介してイベントに対処することはできません
on note
change_velo ($EVENT_ID,100)
message($EVENT_VELOCITY)
end on
change_vol(<ID-number>,<volume>,<relative-bit>)
特定のノートイベントの音量をミリ単位で変更する
備考
- 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
delete_event_mark(<ID-number>,<bit-mark>)
イベントマークを削除する、すなわち、指定されたイベントをイベントグループからグループ解除する
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
fade_in(<ID-number>,<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
fade_out(<ID-number>,<fade-time>,<stop-voice>)
特定のノートイベントに対してフェードアウトを実行する
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
モジュレーションを触ると全ノートがオフになる
get_event_ids(<array-name>)
指定された配列をすべてのアクティブイベントIDで埋めます。
このコマンドは、イベントが存在する限り既存の値をすべて上書きし、イベントがそれ以上アクティブでない場合は0を書き込みます。
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
get_event_par(<ID-number>,<parameter>)
指定されたイベントの特定のイベントパラメータの値を返します。
備考
ノートイベントは、ノートナンバー、再生されたベロシティ、音量、パン、チューンのような特定の情報を常に持ちます。 set_event_par()を使用すると、これらのパラメータを設定することも、$ EVENT_PAR_0のように自由に代入可能なパラメータを使用することもできます。これは、スクリプトを連鎖させる場合、つまりスロット1のイベントのイベントパラメータを設定し、get_event_par()を使用してスロット2の情報を取得する場合に特に便利です。
on note
message(get_event_par($EVENT_ID,$EVENT_PAR_NOTE))
end on
get_event_par_arr(<ID-number>,<parameter>,<group-index>)
特別な形式のget_event_par()は、指定されたイベントのグループ許可状態を取得するために使用されます
備考
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
ignore_event(<ID-number>)
メモのオンまたはオフのコールバックを無視する
備考
イベントを無視すると、ボリューム、チューン、パンの情報が失われます。しかし、この情報をget_event_par()で取得することができます。以下の2つの例を参照してください。
ignore_event()は非常に強力なコマンドです。イベントを無視することなく、さまざまなchange_xxx()コマンドで同じ結果を得ることができるかどうか常にチェックしてください
on note
ignore_event($EVENT_ID)
wait (500000)
play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1)
end on
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
set_event_mark(<ID-number>,<bit-mark>)
指定されたイベントを特定のイベントグループに割り当てます。
備考
イベント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
set_event_par(<ID-number>,<parameter>,<value>)
特定のイベントにパラメータを割り当てる
備考
ノートイベントは、ノートナンバー、演奏されたベロシティのような特定の情報を常に「運ぶ」だけでなく、ボリューム、パン、チューンも持ちます。 set_event_par()を使用すると、これらのパラメータを設定することも、$ EVENT_PAR_0のように自由に代入可能なパラメータを使用することもできます。これは、スクリプトを連鎖させる場合、つまりスロット1のイベントのイベントパラメータを設定し、get_event_par()を使用してスロット2の情報を取得する場合に特に便利です。
イベント・パラメーターはシステム・スクリプトの影響を受けません。
on note
set_event_par($EVENT_ID,$EVENT_PAR_NOTE,60)
end on
set_event_par_arr(<ID-number>,<parameter>,<value>,<groupindex>)
特別な形式のset_event_par()は、指定されたイベントのグループ許可状態を設定するために使用されます
備考
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
Total:3579 Today:1 Yesterday:2 Now:5