KSPリファレンスマニュアル 18 - ユーザーインターフェースコマンド(User Interface Commands)

KSPリファレンスマニュアル 18 - ユーザーインターフェースコマンド(User Interface Commands)


add_menu_item()

add_menu_item(<variable>, <text>, <value>)

ui_menuウィジェットにエントリーを作成します。

<variable>

ui_menuウィジェットの変数名です。

<text>

メニューエントリーのテキストです。

<value>

メニューエントリーの値です。

補足

  • メニューエントリーを作成できるのはon initコールバックの中だけですが、そのテキストと値は後からset_menu_item_str()set_menu_item_value()を使って変更できます。メニューエントリーは好きなだけ追加でき、set_menu_item_visibility()を使って動的に表示・非表示を切り替えられます。

  • $CONTROL_PAR_VALUEコントロールパラメーターをget_control_par()コマンドで使うと、返るのは現在選択されているメニューのインデックスであり、現在選択されているではありません。メニューの値を取得したい場合は、get_menu_item_value()コマンドを使用してください。

on init
declare ui_menu $menu
add_menu_item($menu, "First Entry", 0)
add_menu_item($menu, "Second Entry", 1)
add_menu_item($menu, "Third Entry", 2)
end on

シンプルなメニューです。

関連項目

get_menu_item_str()

get_menu_item_value()

get_menu_item_visibility()

set_menu_item_str()

set_menu_item_visibility()

ui_menu

特定のUIウィジェット$CONTROL_PAR_SELECTED_ITEM_IDX$CONTROL_PAR_NUM_ITEMS


add_text_line()

add_text_line(<variable>, <text>)

既存のテキストを消さずに、指定したui_labelに新しいテキスト行を追加します。

<variable>

ui_labelウィジェットの変数名です。

<text>

表示するテキストです。

on init
declare $count
declare ui_label $label (1, 4)

set_text($label, "")
end on

on note
inc($count)

select ($count)
case 1
set_text($label, $count & ": " & $EVENT_NOTE)
case 2 to 4
add_text_line($label, $count & ": " & $EVENT_NOTE)
end select

if ($count = 4)
$count := 0
end if
end on

直近に演奏された4つのノートを監視します。

関連項目

set_text()

ui_label


attach_level_meter()

attach_level_meter(<ui-id>, <group>, <slot>, <channel>, <generic>)

ui_level_meterをインストゥルメント内の特定の場所に取り付けて、音量データを読み取ります。

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<group>

アクセスしたいグループのインデックスです。グループレベルを使用しない場合は-1に設定します。

<slot>

アクセスしたいFXスロットのインデックスです。FXスロットにアクセスしない場合は-1に設定します。

<channel>

レベルメーターが表示するオーディオチャンネルを設定するには、0から15を選択します。

<generic>

次のいずれかを指定できます。

  • NI_LEVEL_METER_MAIN:Main FXチェーンへのアクセスに使用します。

  • NI_LEVEL_METER_GROUP:Group FXチェーンへのアクセスに使用します。

  • NI_LEVEL_METER_INSERT:Insert FXチェーンへのアクセスに使用します。

  • 0 ... 15:個々のインストゥルメントバスへのアクセスに使用します。

補足

  • レベルメーターは、インストゥルメントバスの出力やインストゥルメントのメイン出力に取り付けられます。また、コンプレッサーやリミッターのエフェクトに取り付けてゲインリダクションのデータを表示することもでき、$CONTROL_PAR_RANGE_MIN$CONTROL_PAR_RANGE_MAXコントロールパラメーターを使って表示の最小値と最大値を設定したり、表示を反転させたりできます。

on init
declare const $GROUP_IDX := 0
declare const $BUS_IDX := 0
declare const $SLOT_IDX := 0
declare const $CHANNEL_L := 0
declare const $CHANNEL_R := 1

declare ui_label $InstOutputL (1, 1)
declare ui_label $InstOutputR (1, 1)
declare ui_label $BusOutput (1, 1)
declare ui_label $MainFX (1, 1)
declare ui_label $BusFX (1, 1)
declare ui_label $GroupFX (1, 1)

declare ui_level_meter $inst_output_l_lvl
declare ui_level_meter $inst_output_r_lvl
declare ui_level_meter $bus_output_lvl
declare ui_level_meter $mainfx_output_lvl
declare ui_level_meter $busfx_output_lvl
declare ui_level_meter $groupfx_output_lvl

attach_level_meter(get_ui_id($inst_output_l_lvl), -1, -1, $CHANNEL_L, -1)
attach_level_meter(get_ui_id($inst_output_r_lvl), -1, -1, $CHANNEL_R, -1)
attach_level_meter(get_ui_id($bus_output_lvl), -1, -1, $CHANNEL_L, $BUS_IDX)
attach_level_meter(get_ui_id($mainfx_output_lvl), -1, $SLOT_IDX, $CHANNEL_L, -2)
attach_level_meter(get_ui_id($busfx_output_lvl), -1, $SLOT_IDX, $CHANNEL_L, $BUS_IDX)
attach_level_meter(get_ui_id($groupfx_output_lvl), $GROUP_IDX, $SLOT_IDX, $CHANNEL_L, -1)
end on

さまざまなレベルメーターです。

関連項目

ui_level_meter

特定のUIウィジェット$CONTROL_PAR_BG_COLOR$CONTROL_PAR_OFF_COLOR$CONTROL_PAR_ON_COLOR$CONTROL_PAR_OVERLOAD_COLOR$CONTROL_PAR_PEAK_COLOR$CONTROL_PAR_VERTICAL$CONTROL_PAR_RANGE_MIN$CONTROL_PAR_RANGE_MAX


attach_zone()

attach_zone(<variable>, <zone-id>, <flags>)

対応するZoneを波形に接続し、ui_waveformウィジェットに表示されるようにします。

<variable>

ui_waveformウィジェットの変数名です。

<zone-id>

取り付けたいZoneのID番号です。

<flags>

次のフラグを使って、ウィジェットのさまざまな設定を制御できます。

$UI_WAVEFORM_USE_SLICES

$UI_WAVEFORM_USE_TABLE

$UI_WAVEFORM_TABLE_IS_BIPOLAR

$UI_WAVEFORM_USE_MIDI_DRAG

補足

  • フラグを組み合わせるには、ビット単位の.or.演算子を使用します。

  • $UI_WAVEFORM_USE_TABLE$UI_WAVEFORM_USE_MIDI_DRAGのフラグは、$UI_WAVEFORM_USE_SLICESがすでに設定されている場合にのみ機能します。

on init
declare ui_waveform $Waveform (6, 6)
attach_zone ($Waveform,find_zone(”Test”), $UI_WAVEFORM_USE_SLICES .or. $UI_WAVEFORM_USE_TABLE)
end on

“Test”という名前のZoneをui_waveformウィジェットに取り付け、そのZoneのスライスとテーブルも表示します。

関連項目

set_ui_wf_property()

get_ui_wf_property()

ui_waveform

ゾーンとスライスの関数find_zone()

特定のUIウィジェット:Waveform Flag Constants、Waveform Property Constants


expose_controls

expose_controls

5つのスクリプトスロットすべてで宣言されたUIウィジェットをすべて公開し、Komplete UIのパラメーターとして利用できるようにします。

補足

  • このコマンドはon initコールバックでのみ使用できます。

  • すべてのUIウィジェットは、識別子($%のような変数型の記号を除いた名前)だけを介して公開されます。

  • 複数のスクリプトスロットが同じ識別子を使用している場合、最初のものだけが考慮されます。

  • 公開されたすべてのコントロールの一覧は、Instrumentを選択してEdit viewの外にいるときに、KontaktのMonitor → Parameterペインで確認できます。

  • 詳しくはKomplete UIのドキュメントをご覧ください。

on init
make_perfview
set_ui_width_px(1000)
set_ui_height_px(500)
load_komplete_ui(“main”)
expose_controls

declare ui_slider $Foo (0, 100)
declare ui_switch $Bar

make_persistent($Foo)
make_persistent($Bar)
end on

Komplete UIのファイルを読み込み、パフォーマンスビューのサイズと表示を設定し、いくつかのUIウィジェットをKomplete UIのパラメーターおよび永続状態として公開します。

関連項目

make_perfview

set_ui_height_px()

set_ui_width_px()

???


fs_get_filename()

fs_get_filename(<ui-id>, <return-parameter>)

ui_file_selectorウィジェットで最後に選択されたファイルのファイル名を返します。

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<return-parameter>

0: 拡張子なしのファイル名を返します。

1: 拡張子付きのファイル名を返します。

2: パス全体を返します。

補足

  • このコマンドはon ui_controlコールバックのうち、ui_file_selectorsのものでのみ使用できます。

  • Kontaktで絶対ファイルパスを扱うときは、必ずスラッシュ(/)を使用してください。

関連項目

fs_navigate()

ui_file_selector


fs_navigate()

fs_navigate(<ui-id>, <direction>)

ui_file_selectorウィジェット内の前後のファイルにジャンプし、そのコールバックをトリガーします。

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<direction>

0: 前のファイル(現在選択されているものとの関係で)が選択されます

1: 次のファイル(現在選択されているものとの関係で)が選択されます

補足

関連項目

fs_get_filename()

ui_file_selector


get_control_par()

get_control_par(<ui-id>, <control-parameter>)

指定したUIウィジェットのさまざまなパラメーターを取得します。

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<control-parameter>

取得したいUIウィジェットのパラメーターです。例:$CONTROL_PAR_WIDTH

補足

  • get_control_par_str()は、文字列を扱うためのこのコマンドの別バージョンです(例:ui_labelからテキストを取得したり、ui_sliderからオートメーション名を取得したりする場合)。

on init
declare ui_value_edit $Test (0, 100, 1)
message(get_control_par(get_ui_id($Test), $CONTROL_PAR_WIDTH))
end on

値入力欄の幅をピクセル単位で取得します。

関連項目

set_control_par()

一般$CONTROL_PAR_KEY_SHIFT$CONTROL_PAR_KEY_ALT$CONTROL_PAR_KEY_CONTROL


get_control_par_arr()

get_control_par_arr(<ui-id>, <control-parameter>, <index>)

指定したUIウィジェットのさまざまなパラメーターを取得します

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<control-parameter>

取得したいUIウィジェットのパラメーターです。例:$CONTROL_PAR_WIDTH

<index>

取得したいUIウィジェットの配列インデックスです。

補足

  • get_control_par_arr()には、さらに2つのバージョンがあります。

    • get_control_par_str_arr()(例:特定のui_xyカーソルのオートメーション名を取得する場合)

    • get_control_par_real_arr()(例:ui_xyカーソルのX軸とY軸の値を取得する場合)

on init
declare ui_xy ?XY1[2]
declare ui_xy ?XY2[2]
declare ui_xy ?XY3[2]
declare ui_xy ?XY4[2]
declare ui_button $Random

declare $i
declare ~val
end on

on ui_control ($Random)
$i := 0
while ($i < 8)
{ randomize X axis value }
~val := int_to_real(random(0, 1000000)) / 1000000.0
set_control_par_real_arr(get_ui_id(?XY1) + $i / 2, $CONTROL_PAR_VALUE, ~val, $i mod 2)

{ randomize Y axis value }
~val := int_to_real(random(0, 1000000)) / 1000000.0
set_control_par_real_arr(get_ui_id(?XY1) + $i / 2, $CONTROL_PAR_VALUE, ~val, ($i mod 2) + 1)

inc($i)
end while

$Random := 0
end on

1つのループで4つの異なるXYパッドの最初のカーソルの値をランダム化します。

関連項目

get_control_par()

set_control_par()

set_control_par_arr()

一般$CONTROL_PAR_KEY_SHIFT$CONTROL_PAR_KEY_ALT$CONTROL_PAR_KEY_CONTROL


get_font_id()

get_font_id(<file-name>)

画像ファイルをもとにしたカスタムフォント用に生成されたフォントIDを返します。このフォントIDは、動的なテキスト要素を持つあらゆるコントロールで使用できます。

<file-name>

拡張子を除いた画像の名前です。画像はPNG形式で、リソースコンテナの"pictures"サブフォルダーに置く必要があります。

補足

  • このコマンドはon initコールバックでのみ使用できます。

  • カスタムフォント用の画像は、カスタムフォントとして正しく解釈されるように特別な形式にする必要があります。すべての文字はWindows-1252文字セットに従って横に並べて配置し、各文字フレームの左上に完全な赤(#FF0000)のピクセルを置きます。また、この画像のアルファレイヤーはソリッド(1色のみを含む)である必要があります。Adobe Photoshop用のSuperPNGアドオン(書き出し時に"Clean Transparent"オプションを使用)、またはFigma用のKSP Font Generatorプラグインの使用をおすすめします。

  • 注意:フォント画像を変更したあとはKontaktを再起動する必要があります。スクリプトを再適用するだけでは不十分です。

on init
declare ui_text_edit @textEdit
set_control_par(get_ui_id(@textEdit), $CONTROL_PAR_FONT_TYPE, get_font_id("Font1"))
end on

ui_text_editコントロールでカスタムフォントを使用します。

関連項目

set_control_par()

一般$CONTROL_PAR_FONT_TYPE


get_menu_item_str()

get_menu_item_str(<ui-id>, <index>)

特定のui_menuエントリーの文字列値を返します。

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<index>

メニュー項目のインデックス(ではありません!)です。

補足

  • <index>は、on initコールバック内でメニュー項目が追加された順序によって決まり、後から変更することはできません。

on init
declare ui_button $button
declare ui_menu $menu

add_menu_item($menu, "First Entry", 0)
add_menu_item($menu, "Second Entry", 5)
add_menu_item($menu, "Third Entry", 10)
end on

on ui_control ($button)
message(get_menu_item_str(get_ui_id($menu), 1))
end on

ボタンをクリックすると“Second Entry”というメッセージが表示されます。メニュー項目のインデックス1のテキストを読み取っているためです。

関連項目

add_menu_item()

get_menu_item_value()

get_menu_item_visibility()

get_menu_item_str()

set_menu_item_value()

set_menu_item_visibility()

特定のUIウィジェット$CONTROL_PAR_SELECTED_ITEM_IDX$CONTROL_PAR_NUM_ITEMS


get_menu_item_value()

get_menu_item_value(<ui-id>, <index>)

特定のui_menuエントリーの値を返します。

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<index>

メニュー項目のインデックス(ではありません!)です。

補足

  • <index>は、on initコールバック内でメニュー項目が追加された順序によって決まり、後から変更することはできません。

on init
declare ui_button $button
declare ui_menu $menu

add_menu_item($menu, "First Entry", 0)
add_menu_item($menu, "Second Entry", 5)
add_menu_item($menu, "Third Entry", 10)
end on

on ui_control ($button)
message(get_menu_item_value(get_ui_id($menu), 1))
end on

メニュー項目のインデックス1の値を読み取っているため、数値5が表示されます。

関連項目

add_menu_item()

get_menu_item_str()

get_menu_item_visibility()

set_menu_item_str()

set_menu_item_value()

set_menu_item_visibility()

特定のUIウィジェット$CONTROL_PAR_SELECTED_ITEM_IDX$CONTROL_PAR_NUM_ITEMS


get_menu_item_visibility()

get_menu_item_visibility(<ui-id>, <index>)

特定のui_menuエントリーが表示されている場合は1を、そうでない場合は0を返します。

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<index>

メニューエントリーのインデックス(ではありません!)です。

補足

  • <index>は、on initコールバック内でメニュー項目が追加された順序によって決まり、後から変更することはできません。

on init
declare ui_button $visibility
declare ui_button $value
declare ui_menu $menu

add_menu_item($menu, "First Entry", 0)
add_menu_item($menu, "Second Entry", 5)
add_menu_item($menu, "Third Entry", 10)
end on

on ui_control ($visibility)
set_menu_item_visibility(get_ui_id($menu), 1, $visibility)
end on

on ui_control ($value)
message(get_menu_item_visibility(get_ui_id($menu), 1))
end on

Visibilityボタンをクリックすると2番目のメニューエントリーの表示・非表示が切り替わり、Valueボタンをクリックすると同じメニューエントリーの表示状態が表示されます。

関連項目

add_menu_item()

get_menu_item_str()

get_menu_item_value()

set_menu_item_str()

set_menu_item_value()

set_menu_item_visibility()

特定のUIウィジェット$CONTROL_PAR_SELECTED_ITEM_IDX$CONTROL_PAR_NUM_ITEMS


get_ui_id()

get_ui_id(<variable>)

UIウィジェットのUI ID番号を取得します。

補足

  • UI IDは、スクリプトで最初に宣言された変数または定数から順番に割り当てられ、32768から始まります。

  • 通常の変数や定数(UIウィジェットではないもの)にもUI IDが割り当てられますが、このIDはさまざまなget_control_par()/set_control_par()コマンドでは使用できません。

on init
declare const $NUM_KNOBS := 4

declare ui_knob $Knob_1 (0, 100, 1)
declare ui_knob $Knob_2 (0, 100, 1)
declare ui_knob $Knob_3 (0, 100, 1)
declare ui_knob $Knob_4 (0, 100, 1)

declare ui_value_edit $Set (0, 100, 1)

declare $i
declare %ID[$NUM_KNOBS]

while ($i < $NUM_KNOBS)
%ID[$i] := get_ui_id($Knob_1) + $i

inc($i)
end while
end on

on ui_control ($Set)
$i := 0
while ($i < $NUM_KNOBS)
set_control_par(%ID[$i], $CONTROL_PAR_VALUE, $Set)
inc($i)
end while
end on

IDを配列に格納し、そのIDを使って複数のノブを同じ値に設定します。

関連項目

set_control_par()

get_control_par()


get_ui_wf_property()

get_ui_wf_property(<variable>, <property>, <index>)

ui_waveformウィジェットに関するさまざまなプロパティの値を返します。

<variable>

ui_waveformウィジェットの変数名です。

<property>

次のプロパティを使用できます。

$UI_WF_PROP_PLAY_CURSOR

$UI_WF_PROP_FLAGS

$UI_WF_PROP_TABLE_VAL

$UI_WF_PROP_TABLE_IDX_HIGHLIGHT

$UI_WF_PROP_MIDI_DRAG_START_NOTE

<index>

スライスのインデックスです。

on init
declare $play_pos

declare ui_waveform $Waveform (6, 6)

attach_zone($Waveform, find_zone("Test"), 0)
end on

on note
while ($NOTE_HELD = 1)
$play_pos := get_event_par($EVENT_ID, $EVENT_PAR_PLAY_POS)

set_ui_wf_property($Waveform, $UI_WF_PROP_PLAY_CURSOR, $play_pos)
message(get_ui_wf_property($Waveform, $UI_WF_PROP_PLAY_CURSOR, 0))

wait(10000)
end while
end on

現在の再生位置の値を表示します。

関連項目

set_ui_wf_property()

ui_waveform

attach_zone()

ゾーンとスライスの関数find_zone()

特定のUIウィジェット:Waveform Flag Constants、Waveform Property Constants


hide_part()

hide_part(<variable>, <hide-mask>)

さまざまなウィジェットの特定の部分を隠します。

<variable>

ウィジェットの変数名です。

<hide-mask>

UIコントロールのさまざまな部分の表示状態を表すビットマスクで、次の定数で構成されます。

$HIDE_PART_BGui_knobui_labelui_value_editui_tableの背景)

$HIDE_PART_VALUEui_knobui_tableの値)

$HIDE_PART_TITLEui_knobのタイトル)

$HIDE_PART_MOD_LIGHTui_knobのモッドリングライト)

$HIDE_PART_CURSOR(特定のui_xyカーソルを隠す)

on init
declare ui_knob $Knob (0, 100, 1)

hide_part($Knob, $HIDE_PART_BG .or. $HIDE_PART_MOD_LIGHT .or. $HIDE_PART_TITLE .or. $HIDE_PART_VALUE)
end on

裸のノブです。

on init
declare ui_label $label_1 (1, 1)
set_text($label_1, "Small Label")
hide_part($label_1, $HIDE_PART_BG)
end on

ラベルの背景を隠します。これは他のUI要素でも可能です。

関連項目

特定のUIウィジェット$CONTROL_PAR_HIDE$HIDE_PART_NOTHING$HIDE_WHOLE_CONTROL


load_performance_view()

load_performance_view(<filename>)

Creator ToolsのGUI Designerで作成したパフォーマンスビューファイル(.nckp)を読み込みます。

<filename>

拡張子を除いた.nckpファイルのファイル名を、文字列として入力します。

補足

  • スクリプトスロット1つにつき読み込める.nkcpパフォーマンスビューファイルは1つだけです。

  • このコマンドはon initコールバックでのみ使用できます。

  • このコマンドはmake_perfviewと併用できません。

  • パフォーマンスビューファイル(.nkcp)は、リソースコンテナのperformance_viewサブフォルダーに置く必要があります。

  • 含まれるすべてのコントロールは、KSPで宣言・設定されたものと同じようにアクセスできます。変数名はCreator Toolsで確認できます。

  • 詳しくはCreator Toolsマニュアルをご覧ください。

on init
load_performance_view(“performanceView”)
end on

on ui_control ($testButton)
if ($testButton = 0)
set_control_par(get_ui_id($testSlider), $CONTROL_PAR_HIDE, $HIDE_PART_WHOLE_CONTROL)
else
set_control_par(get_ui_id($testSlider), $CONTROL_PAR_HIDE, $HIDE_PART_NOTHING)
end if
end on

パフォーマンスビューファイルを読み込み、その中に含まれる2つのコントロールに関する基本的な動作を定義します。

関連項目

リソースコンテナ


make_perfview

make_perfview

対応するスクリプトスロットのパフォーマンスビューを有効にします。

補足

on init
message("")

make_perfview
set_script_title("My Cool Instrument")
set_ui_height(6)
end on

多くのKSPスクリプトはこのように始まります。

関連項目

set_skin_offset()

set_ui_height()

set_ui_height_px()

set_ui_width_px()

set_ui_color()


move_control()

move_control(<variable>, <x-position>, <y-position>)

UIウィジェットをKontaktの標準グリッドに配置します。

<variable>

UIウィジェットの変数名です。

<x-position>

ウィジェットの水平位置をグリッド単位で指定します(0 ... 6)。

<y-position>

ウィジェットの垂直位置をグリッド単位で指定します(0 ... 16)。

補足

  • move_control()はすべてのコールバックで使用できます。

  • move_control()on initコールバックの外で使用するとCPU負荷が高くなるので、注意して扱ってください。

  • move_control(<variable>, 0, 0)はUIウィジェットを隠します。

  • ピクセルベースのコントロールパラメーターとグリッドベースのものは混在させられません。そのため、グリッド座標(2, 1)に配置したui_labelに$CONTROL_PAR_WIDTHを設定しようとしても機能しません。代わりに$CONTROL_PAR_GRID_WIDTHを使用する必要があります。

on init
set_ui_height(3)

declare ui_label $label (1, 1)
set_text($label, "Move the wheel!")
move_control($label, 3, 6)
end on

on controller
if ($CC_NUM = 1)
move_control($label, 3, 6 - ((%CC[1] * 5) / 127))
end if
end on

モジュレーションホイールでUI要素を移動します。

関連項目

move_control_px()

一般$CONTROL_PAR_HIDE


move_control_px()

move_control_px(<variable>, <x-position>, <y-position>)

UIウィジェットをピクセル単位で配置します。

<variable>

UIウィジェットの変数名です。

<x-position>

ウィジェットの水平位置をピクセル単位で指定します(0 ... 1000)。

<y-position>

ウィジェットの垂直位置をピクセル単位で指定します(0 ... 750)。

補足

  • ピクセルベースのコントロールパラメーターとグリッドベースのものは混在させられません。そのため、グリッド座標(2, 1)に配置したui_labelに$CONTROL_PAR_WIDTHを設定しようとしても機能しません。代わりに$CONTROL_PAR_GRID_WIDTHを使用する必要があります。

  • move_control_px()はすべてのコールバックで使用できます。

  • move_control_px()on initコールバックの外で使用するとCPU負荷が高くなるので、注意して扱ってください。

  • Kontaktの標準グリッドサイズをピクセル位置に対応させるには、次の式を使用できます。

    • X位置:((grid_value - 1) * 92) + 66

    • Y位置:((grid_value - 1) * 21) + 2

    • 幅($CONTROL_PAR_WIDTH):(grid_value * 92) - 5

    • 高さ($CONTROL_PAR_HEIGHT):(grid_value * 21) - 3

on init
declare ui_label $label (1, 1)
set_text($label, "Move the wheel!")
move_control_px($label, 66, 2)
end on

on controller
if ($CC_NUM = 1)
move_control_px($label, 66 + %CC[1], 2)
end if
end on

CC値をピクセル位置に変換します。参考になるかもしれません。

関連項目

move_control()

一般$CONTROL_PAR_POS_X$CONTROL_PAR_POS_Y


set_control_help()

set_control_help(<variable>, <text>)

UIウィジェットにカーソルを合わせたときに表示されるテキスト文字列を割り当てます。このテキストはKontaktのinfo paneに表示されます。

<variable>

UIウィジェットの変数名です。

<text>

表示するインフォテキストです。

補足

  • 使用するテキスト文字列は最大320文字です。

on init
declare ui_knob $Knob (0, 100, 1)
set_control_help($Knob, "I'm the only knob, folks!")
end on

set_control_help()の動作例です。

関連項目

set_script_title()

一般

$CONTROL_PAR_HELP


set_control_par()

set_control_par(<ui-id>, <control-parameter>, <value>)

指定したUIウィジェットのさまざまなパラメーターを変更します。

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<control-parameter>

設定したいUIコントロールのパラメーターです。例:$CONTROL_PAR_WIDTH

<value>

設定したいコントロールパラメーターの値です。

補足

  • set_control_par_str()は、文字列を扱うためのこのコマンドの別バージョンです(例:ui_labelのテキストを設定したり、ui_sliderのオートメーション名を設定したりする場合)。

on init
declare ui_value_edit $test (0, 100, $VALUE_EDIT_MODE_NOTE_NAMES)
set_text($test,"")
set_control_par(get_ui_id($test), $CONTROL_PAR_WIDTH, 45)
move_control_px($test, 100, 10)
end on

値入力欄の幅を45ピクセルに変更します。ピクセルベースのコントロールパラメーターを使う場合は、その位置もピクセル単位で指定する必要があることに注意してください。

on init
declare ui_label $test (1, 1)
set_control_par_str(get_ui_id($test), $CONTROL_PAR_TEXT, "This is Text")
set_control_par(get_ui_id($test), $CONTROL_PAR_TEXT_ALIGNMENT, 1)
end on

ラベルのテキストを設定して中央に配置します。

関連項目

get_control_par()

set_control_par_arr()

get_ui_id()


set_control_par_arr()

set_control_par_arr(<ui-id>, <control-parameter>, <value>, <index>)

配列ベースのUIウィジェット内の要素のさまざまなパラメーターを変更します。例:ui_xyカーソル

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<control-parameter>

設定したいUIウィジェットのパラメーターです。例:$CONTROL_PAR_AUTOMATION_ID

<value>

設定したいコントロールパラメーターの値です。

<index>

設定したいUIコントロールの配列インデックスです。

補足

  • set_control_par_arr()には、さらに2つのバージョンがあります。

    • set_control_par_str_arr()(例:個々のui_xyカーソルのオートメーション名を設定する場合)

    • set_control_par_real_arr()(例:個々のui_xyカーソルのX軸とY軸の値)

on init
make_perfview
set_ui_height_px(350)

declare ui_xy ?myXY[4]
declare $xyID
$xyID := get_ui_id(?myXY)

set_control_par_arr($xyID, $CONTROL_PAR_AUTOMATION_ID, 0, 0)
set_control_par_arr($xyID, $CONTROL_PAR_AUTOMATION_ID, 1, 1)
set_control_par_arr($xyID, $CONTROL_PAR_AUTOMATION_ID, 2, 2)
set_control_par_arr($xyID, $CONTROL_PAR_AUTOMATION_ID, 3, 3)

set_control_par_str_arr($xyID, $CONTROL_PAR_AUTOMATION_NAME, "Cutoff", 0)
set_control_par_str_arr($xyID, $CONTROL_PAR_AUTOMATION_NAME, "Resonance", 1)
set_control_par_str_arr($xyID, $CONTROL_PAR_AUTOMATION_NAME, "Delay Pan", 2)
set_control_par_str_arr($xyID, $CONTROL_PAR_AUTOMATION_NAME, "Delay Feedback", 3)
end on

2つのカーソルを持つXYパッドのオートメーションIDと名前を設定します。

関連項目

一般$CONTROL_PAR_AUTOMATION_ID$CONTROL_PAR_AUTOMATION_NAME

特定のUIウィジェット$CONTROL_PAR_CURSOR_PICTURE$HIDE_PART_CURSOR


set_knob_defval()

set_knob_defval(<variable>, <value>)

ui_knobにデフォルト値を割り当てます。[Ctrl](Windows)または[Cmd](macOS)を押しながらノブをクリックすると、この値にリセットされます。

補足

  • ui_sliderにデフォルト値を割り当てるには、set_control_par()$CONTROL_PAR_DEFAULT_VALUEコントロールパラメーターを使用します。

on init
declare ui_knob $Knob (-100, 100, 0)
set_knob_defval($Knob, 0)
$Knob := 0

declare ui_slider $Slider (-100, 100)
set_control_par(get_ui_id($Slider), $CONTROL_PAR_DEFAULT_VALUE, 0)
$Slider := 0
end on

ノブとスライダーにデフォルト値を割り当てます。

関連項目

一般$CONTROL_PAR_DEFAULT_VALUE


set_knob_label()

set_knob_label(<variable>, <text>)

ui_knobにテキスト文字列を割り当てます。

on init
declare !rate_names[18]
!rate_names[ 0] := "1/128"
!rate_names[ 1] := "1/64"
!rate_names[ 2] := "1/32"
!rate_names[ 3] := "1/16 T"
!rate_names[ 4] := "1/32 D"
!rate_names[ 5] := "1/16"
!rate_names[ 6] := "1/8 T"
!rate_names[ 7] := "1/16 D"
!rate_names[ 8] := "1/8"
!rate_names[ 9] := "1/4 T"
!rate_names[10] := "1/8 D"
!rate_names[11] := "1/4"
!rate_names[12] := "1/2 T"
!rate_names[13] := "1/4 D"
!rate_names[14] := "1/2"
!rate_names[15] := "1/1 T"
!rate_names[16] := "1/2 D"
!rate_names[17] := "1/1"

declare ui_knob $Rate (0, 17, 1)
set_knob_label($Rate, !rate_names[$Rate])
end on

on persistence_changed
set_knob_label($Rate, !rate_names[$Rate])
end on

on ui_control ($Rate)
set_knob_label($Rate, !rate_names[$Rate])
end on

リズムの値を表示するのに便利です。

関連項目

一般$CONTROL_PAR_LABEL


set_knob_unit()

set_knob_unit(<variable>, <knob-unit-constant>)

ui_knobに単位記号を割り当てます。次の定数を使用できます。

$KNOB_UNIT_NONE

$KNOB_UNIT_DB

$KNOB_UNIT_HZ

$KNOB_UNIT_PERCENT

$KNOB_UNIT_MS

$KNOB_UNIT_OCT

$KNOB_UNIT_ST

on init
declare ui_knob $Time (0, 1000, 10)
set_knob_unit($Time, $KNOB_UNIT_MS)

declare ui_knob $Octave (1, 6, 1)
set_knob_unit($Octave, $KNOB_UNIT_OCT)

declare ui_knob $Volume (-600, 600, 100)
set_knob_unit($Volume, $KNOB_UNIT_DB)

declare ui_knob $Scale (0, 100, 1)
set_knob_unit($Scale, $KNOB_UNIT_PERCENT)

declare ui_knob $Tune (4300, 4500, 10)
set_knob_unit($Tune, $KNOB_UNIT_HZ)
end on

さまざまなノブの単位記号です。

関連項目

一般$CONTROL_PAR_UNIT


set_menu_item_str()

set_menu_item_str(<ui-id>, <index>, <string>)

ui_menuエントリーの値を設定します。

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<index>

メニュー項目のインデックスです。

<string>

選択したメニュー項目に設定したいテキストです。

補足

  • <index>は、on initコールバック内でメニュー項目が追加された順序によって決まり、後から変更することはできません。

on init
declare ui_menu $menu
declare ui_button $button

add_menu_item ($menu, "First Entry", 0)
add_menu_item ($menu, "Second Entry", 5)
add_menu_item ($menu, "Third Entry", 10)
end on

on ui_control ($button)
set_menu_item_str(get_ui_id($menu), 1, "Renamed")
end on

2番目のメニューエントリーの名前を変更します。

関連項目

add_menu_item()

get_menu_item_str()

get_menu_item_value()

get_menu_item_visibility()

set_menu_item_value()

set_menu_item_visibility()

特定のUIウィジェット$CONTROL_PAR_SELECTED_ITEM_IDX$CONTROL_PAR_NUM_ITEMS


set_menu_item_value()

set_menu_item_value(<ui-id>, <index>, <value>)

ui_menuエントリーの値を設定します。

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<index>

メニュー項目のインデックスです。

<value>

メニュー項目に与えたい値です。

補足

  • <index>は、on initコールバック内でメニュー項目が追加された順序によって決まり、後から変更することはできません。

  • <value>は、add_menu_item()コマンドの3番目のパラメーターで設定します。

on init
declare ui_menu $menu

add_menu_item ($menu, "First Entry", 0)
add_menu_item ($menu, "Second Entry", 5)
add_menu_item ($menu, "Third Entry", 10)

set_menu_item_value(get_ui_id($menu), 1, 20)
end on

2番目のメニューエントリーの値を20に変更します。

関連項目

add_menu_item()

get_menu_item_str()

get_menu_item_value()

get_menu_item_visibility()

set_menu_item_str()

set_menu_item_visibility()

特定のUIウィジェット$CONTROL_PAR_SELECTED_ITEM_IDX$CONTROL_PAR_NUM_ITEMS


set_menu_item_visibility()

set_menu_item_visibility(<ui-id>, <index>, <visibility>)

ui_menuエントリーの表示状態を設定します。

<ui-id>

UIウィジェットのID番号です。get_ui_id()で取得できます。

<index>

メニュー項目のインデックスです。

<visibility>

0(非表示)または1(表示)に設定します。

補足

  • <index>は、on initコールバック内でメニュー項目が追加された順序によって決まり、後から変更することはできません。

  • 必要になりそうなだけのメニューエントリーをon initコールバック内で追加し、set_menu_item_visibility()を使って動的に表示・非表示を切り替えます。

  • 現在選択されているメニュー項目を非表示に設定した場合、その項目は選択が解除されるまで表示されたままになります。

on init
declare ui_menu $menu
declare ui_button $button

add_menu_item ($menu, "First Entry", 0)
add_menu_item ($menu, "Second Entry", 5)
add_menu_item ($menu, "Third Entry", 10)
end on

on ui_control ($button)
set_menu_item_visibility(get_ui_id($menu), 1, $button)
end on

ボタンで2番目のメニューエントリーを隠します。

関連項目

add_menu_item()

get_menu_item_str()

get_menu_item_value()

get_menu_item_visibility()

set_menu_item_str()

set_menu_item_value()

特定のUIウィジェット$CONTROL_PAR_SELECTED_ITEM_IDX$CONTROL_PAR_NUM_ITEMS


set_table_steps_shown()

set_table_steps_shown(<variable>, <num-of-steps>)

ui_tableウィジェットに表示される列の数を変更します。

<variable>

ui_tableウィジェットの変数名です。

<num-of-steps>

表示されるステップの数です。

on init
declare ui_table %table[32] (5, 4, 127)
declare ui_value_edit $Steps (2, 32, 1)

$Steps := 16
set_table_steps_shown(%table, $Steps)
end on

on ui_control($Steps)
set_table_steps_shown(%table, $Steps)
end on

表示されるステップ数を変更します。

関連項目

ui_table


set_script_title()

set_script_title(<text>)

スクリプトのタイトルを設定します。

補足

  • このコマンドは、手動で設定されたスクリプトタイトルを上書きします。

on init
message("")

make_perfview
set_script_title("My Cool Instrument")
set_ui_height(6)
end on

多くのパフォーマンスビュースクリプトはこのように始まります。

関連項目

make_perfview


set_skin_offset()

set_skin_offset(<offset-in-px>)

選択した背景画像ファイルを、指定したピクセル数だけオフセットします。

補足

  • 背景に使用するPNGファイルが設定されていて、パフォーマンスビューの最大高さより大きい場合は、このコマンドで背景グラフィックをオフセットできます。これにより、1つの画像ファイルだけを使いながら、スクリプトスロットごとに別々の背景を作成できます。

on init
make_perfview
set_ui_height(1)
end on

on controller
if ($CC_NUM = 1)
set_skin_offset(%CC[1])
end if
end on

関連項目

make_perfview

set_ui_height_px()


set_text()

set_text(<variable>, <text>)

ui_labelに適用した場合:指定したラベルに現在表示されているテキストを置き換えて、新しいテキストを追加します。

ui_knobui_buttonui_switchui_value_editに適用した場合:ウィジェットの表示名を設定します。

on init
declare ui_label $label_1 (1, 1)
set_text($label_1, "Small Label")

declare ui_label $label_2 (3, 6)
set_text($label_2, "Big Label")
add_text_line($label_2, "...with a second text line")
end on

サイズの異なる2つのラベルです。

on init
declare ui_label $label_1 (1, 1)
set_text ($label_1, "Small Label")
hide_part ($label_1, $HIDE_PART_BG)
end on

ラベルの背景を隠します。これは他のウィジェットでも可能です。

関連項目

add_text_line()

set_control_par()set_control_par_str()

一般$CONTROL_PAR_TEXT


set_ui_color()

set_ui_color(<hex-value>)

パフォーマンスビューのメイン背景色を設定します。

<hex value>

16進数のカラー値を次の形式で指定します。

0ff0000h {red}

先頭の0は、その値が数値であることをKontaktに伝えます。

末尾のhは、それが16進数の値であることを示します。大文字のHも使用できます。

補足

  • このコマンドはすべてのコールバックで使用できます。

on init
make_perfview
set_ui_color(0000000H)
end on

真っ黒に塗ります。

関連項目

set_ui_height()

set_ui_height_px()


set_ui_height()

set_ui_height(<height>)

スクリプトのパフォーマンスビューの高さをグリッド単位で設定します。

<height>

スクリプトの高さをグリッド単位で指定します(1 ... 8)。

補足

  • このコマンドはon initコールバックでのみ使用できます。

on init
message("")

make_perfview
set_script_title("My Cool Instrument")
set_ui_height(6)
end on

多くのパフォーマンスビュースクリプトはこのように始まります。

関連項目

set_ui_height_px()


set_ui_height_px()

set_ui_height_px(<height>)

スクリプトのパフォーマンスビューの高さをピクセル単位で設定します。

<height>

スクリプトの高さをピクセル単位で指定します(50 ... 750)。

補足

  • このコマンドはon initコールバックでのみ使用できます。

on init
make_perfview

declare const $SIZE := 1644 { picture height }
declare const $NUM_FRAMES := 4
declare const $HEADER_SIZE := 68

declare ui_value_edit $Slide (1, $NUM_SLIDES, 1)

set_ui_height_px(($SIZE / $NUM_FRAMES) - $HEADER_SIZE)
set_skin_offset(($Slide - 1) * ($SIZE / $NUM_FRAMES))
end on

on ui_control ($Slide)
set_skin_offset(($Slide - 1) * ($SIZE / $NUM_FRAMES))
end on

関連項目

set_ui_height()

set_ui_height_px()


set_ui_width_px()

set_ui_width_px(<width>)

スクリプトのパフォーマンスビューの幅をピクセル単位で設定します。

<width>

スクリプトの幅をピクセル単位で指定します(633 ... 1000)。

補足

  • このコマンドはon initコールバックでのみ使用できます。

on init
make_perfview
set_ui_height_px(750)
set_ui_width_px(1000)
end on

可能な限り最大のサイズでパフォーマンスビューを作成します。

関連項目

set_ui_height_px()


set_ui_wf_property()

set_ui_wf_property(<variable>, <property>, <index>, <value>)

ui_waveformウィジェットのさまざまなプロパティを設定します。

<variable>

ui_waveformウィジェットの変数名です。

<property>

次のプロパティを使用できます。

$UI_WF_PROP_PLAY_CURSOR

$UI_WF_PROP_FLAGS

$UI_WF_PROP_TABLE_VAL

$UI_WF_PROP_TABLE_IDX_HIGHLIGHT

$UI_WF_PROP_MIDI_DRAG_START_NOTE

<index>

選択したプロパティが適用されるスライスのインデックスです。

$UI_WF_PROP_TABLE_IDX_HIGHLIGHT$UI_WF_PROP_TABLE_VALでのみ有効です

<value>

選択したプロパティの値です。

on init
declare $play_pos
declare ui_waveform $Waveform (6, 6)

attach_zone($Waveform, find_zone("Test"), 0)
end on

on note
while ($NOTE_HELD = 1)
$play_pos := get_event_par($EVENT_ID, $EVENT_PAR_PLAY_POS)
set_ui_wf_property($Waveform, $UI_WF_PROP_PLAY_CURSOR, 0, $play_pos)
wait(10000)
end while
end on

“Test”という名前のZoneを波形ディスプレイに取り付け、ノートを演奏している間、波形の中に再生カーソルを表示します。

関連項目

get_ui_wf_property()

ui_waveform

attach_zone()

ゾーンとスライスの関数find_zone()

特定のUIウィジェット:Waveform Flag Constants、Waveform Property Constants


参照元情報:User Interface Commands
https://docs.native-instruments.com/online-guides/ksp-manual/en/user-interface-commands