KSPリファレンスマニュアル 13 - キーボードコマンド(Keyboard Commands)

KSPリファレンスマニュアル 13 - キーボードコマンド(Keyboard Commands)


get_key_color()

get_key_color(<note-number>)

指定したノートナンバーのカラー定数を返します。

on init
    message("")

    declare $count

    while ($count < 128)
        set_key_color($count, $KEY_COLOR_INACTIVE)

        inc($count)
    end while

    declare $random_key
    $random_key := random(60, 71)

    set_key_color($random_key, $KEY_COLOR_RED)
end on

on note
    if (get_key_color($EVENT_NOTE) = $KEY_COLOR_RED)
        message("Bravo!")

        set_key_color($random_key, $KEY_COLOR_INACTIVE)
        $random_key := random(60, 71)
        set_key_color($random_key, $KEY_COLOR_RED)
    else
        message("Try again!")
    end if
end on

on release
    message("")
end on

捕まえられるものならどうぞ。

関連項目

set_key_color()


get_key_name()

get_key_name(<note-number>)

指定したノートナンバーの名前を返します。

on init
    declare $count

    while ($count < 128)
        set_key_name($count, "")

        inc($count)
    end while

    set_key_name(60, "Middle C")
end on

on note
    message(get_key_name($EVENT_NOTE))
end on

関連項目

set_key_name()


get_key_triggerstate()

get_key_triggerstate(<note-number>)

Kontaktのキーボード上で、指定したノートナンバーすなわちキーが押されているかどうかの状態を返します。値は1(キーが押されている)または0(キーが離されている)のいずれかです。

補足

on init
    set_key_pressed_support(1)
end on

on note
    set_key_pressed($EVENT_NOTE, 1)
    message(get_key_triggerstate($EVENT_NOTE))
end on

on release
    set_key_pressed($EVENT_NOTE, 0)
    message(get_key_triggerstate($EVENT_NOTE))
end on

関連項目

set_key_pressed()

set_key_pressed_support()


get_key_type()

get_key_type(<note-number>)

指定したノートナンバーのキータイプ定数を返します。

関連項目

set_key_type()


get_keyrange_min_note()

get_keyrange_min_note(<note-number>)

指定したキーレンジの最低ノートを返します。

補足

  • キーレンジはノートが重複することがないため、get_keyrange_...系のコマンドではいずれも、キーレンジを1つのノートナンバーだけで指定すれば十分です。

on init
    declare $count
    while ($count < 128)
        remove_keyrange($count)

        inc($count)
    end while

    set_keyrange(36, 72, "Middle Range")
end on

on note
    message(get_keyrange_min_note($EVENT_NOTE))
end on

関連項目

set_keyrange()


get_keyrange_max_note()

get_keyrange_max_note(<note-number>)

指定したキーレンジの最高ノートを返します。

補足

  • キーレンジはノートが重複することがないため、get_keyrange_...系のコマンドではいずれも、キーレンジを1つのノートナンバーだけで指定すれば十分です。

on init
    declare $count
    while ($count < 128)
        remove_keyrange($count)

        inc($count)
    end while

    set_keyrange(36, 72, "Middle Range")
end on

on note
    message(get_keyrange_max_note($EVENT_NOTE))
end on

関連項目

set_keyrange()


get_keyrange_name()

get_keyrange_name(<note-number>)

指定したキーレンジの名前を返します。

補足

  • キーレンジはノートが重複することがないため、get_keyrange_...系のコマンドではいずれも、キーレンジを1つのノートナンバーだけで指定すれば十分です。

on init
    declare $count
    while ($count < 128)
        remove_keyrange($count)

        inc($count)
    end while

    set_keyrange(36, 72, "Middle Range")
end on

on note
    message(get_keyrange_name($EVENT_NOTE))
end on

関連項目

set_keyrange()


set_key_color()

set_key_color(<note-number>, <key-color-constant>)

Kontaktのバーチャルキーボード上で、指定したキーすなわちMIDIノートの色を設定します。

<note-number>

キーのMIDIノートナンバー(0 ... 127)。

<key-color-constant>

使用する色を指定するための、利用可能なキーカラー定数のいずれかです。次の定数が利用できます:

$KEY_COLOR_RED

$KEY_COLOR_ORANGE

$KEY_COLOR_LIGHT_ORANGE

$KEY_COLOR_WARM_YELLOW

$KEY_COLOR_YELLOW

$KEY_COLOR_LIME

$KEY_COLOR_GREEN

$KEY_COLOR_MINT

$KEY_COLOR_CYAN

$KEY_COLOR_TURQUOISE

$KEY_COLOR_BLUE

$KEY_COLOR_PLUM

$KEY_COLOR_VIOLET

$KEY_COLOR_PURPLE

$KEY_COLOR_MAGENTA

$KEY_COLOR_FUCHSIA

$KEY_COLOR_DEFAULT マッピング済みのノートに対するKontaktの標準色にキーを設定します

$KEY_COLOR_INACTIVE キーを標準の白鍵と黒鍵の表示に戻します

$KEY_COLOR_NONE キーをKontaktの通常の色、例えば内部キースイッチであれば赤に戻します

補足

  • キーボードの色はKSPの外部に存在します。つまり、キーの色を変更することは、set_engine_par()でKontaktのノブを変更するのと同じようなものです。そのため、すべてのキーを$KEY_COLOR_INACTIVE$KEY_COLOR_NONEのいずれかに設定する処理を、on initコールバックの中に書いておくとよいでしょう。

on init
    message("")

    declare ui_button $Color

    declare $count
    declare $note_count
    declare $color_count
    declare %white_keys[7] := (0, 2, 4, 5, 7, 9, 11)
    declare %colors[16] := ( ...
        $KEY_COLOR_RED, ...
        $KEY_COLOR_ORANGE, ...
        $KEY_COLOR_LIGHT_ORANGE, ...
        $KEY_COLOR_WARM_YELLOW, ...
        $KEY_COLOR_YELLOW, ...
        $KEY_COLOR_LIME, ...
        $KEY_COLOR_GREEN, ...
        $KEY_COLOR_MINT, ...
        $KEY_COLOR_CYAN, ...
        $KEY_COLOR_TURQUOISE, ...
        $KEY_COLOR_BLUE, ...
        $KEY_COLOR_PLUM, ...
        $KEY_COLOR_VIOLET, ...
        $KEY_COLOR_PURPLE, ...
        $KEY_COLOR_MAGENTA, ...
        $KEY_COLOR_FUCHSIA)

    $count := 0
    while ($count < 128)
        set_key_color($count, $KEY_COLOR_NONE)

        inc($count)
    end while
end on

on ui_control ($Color)
    if ($Color = 1)
        $count := 0
        while ($count < 128)
            set_key_color($count, $KEY_COLOR_INACTIVE)
            inc($count)
        end while

        $note_count := 0
        $color_count := 0
        while ($color_count < 16)
            if (search(%white_keys, (60 + $note_count) mod 12) # -1)
                set_key_color(60 + $note_count, %colors[$color_count])
                inc($color_count)
            end if

            inc($note_count)
        end while
    else
        $count := 0
        while ($count < 128)
            set_key_color($count, $KEY_COLOR_NONE)

            inc($count)
        end while
    end if
end on

Kontaktのレインボー。

関連項目

set_control_help()

get_key_color()

set_key_name()

set_keyrange()


set_key_name()

set_key_name(<note-number>, <name>)

指定したノートナンバーにテキスト文字列を割り当てます。

<note-number>

キーのMIDIノートナンバー(0 ... 127)。

<name>

割り当てるテキスト文字列です。

補足

  • キーネームはインストゥルメントのパラメーターであり、KSPの外部に存在します。つまり、キーネームを変更することは、set_engine_par()でKontaktのノブを変更するのと同じようなものです。on initコールバックの中で、必ずすべてのキーネームをリセットするようにしてください。

  • キーネームとキーレンジは、Kontaktのキーボード上でキーにマウスカーソルを重ねると、KontaktのInfo Paneに表示されます。

on init
    declare $count

    while ($count < 128)
        set_key_name($count, "")

        inc($count)
    end while

    set_key_name(60, "Middle C")
end on

関連項目

set_keyrange()

get_key_name()


set_key_pressed()

set_key_pressed(<note-number>, <value>)

Kontaktのキーボード上で、指定したキーのトリガーステートを設定します。

<note-number>

キーのMIDIノートナンバー(0 ... 127)。

<value>

0: キーが離された状態

1: キーが押された状態

補足

  • set_key_pressed()を、1に設定したset_key_pressed_support()と組み合わせて使用することで、スクリプトが生成したノートをKontaktのキーボード上に表示できます。典型的な使用例は、インストゥルメントにシーケンサーやアルペジエーター、ハーモナイザーが内蔵されていて、トリガーされたノートをキーボード上に表示したい場合です。

on init
    set_key_pressed_support(1)
end on

on note
    set_key_pressed($EVENT_NOTE, 1)
end on

on release
    set_key_pressed($EVENT_NOTE, 0)
end on

アルペジエーターやハーモナイザーのスクリプトの後にこれを挿入します。

関連項目

set_key_pressed_support()

get_key_triggerstate()


set_key_pressed_support()

set_key_pressed_support(<mode>)

Kontaktのキーボードにおける押鍵状態のサポートモードを設定します。

<mode>

0: Kontaktがすべての押鍵状態を処理します。set_key_pressed()コマンドは無視されます(これがデフォルトです)。

1: Kontaktのキーボードはset_key_pressed()コマンドによってのみ影響を受けます。

補足

  • 押鍵状態のモードはKSPの外部に存在します。つまり、このモードを変更することは、set_engine_par()でKontaktのノブを変更するのと同じようなものです。on initコールバックの中で、必ず目的のモードを設定するようにしてください。

on init
    declare ui_button $Enable
    set_key_pressed_support(0)
end on

on ui_control ($Enable)
    set_key_pressed_support($Enable)
end on

on note
    play_note($EVENT_NOTE + 4, $EVENT_VELOCITY, 0, -1)
    play_note($EVENT_NOTE + 7, $EVENT_VELOCITY, 0, -1)

    set_key_pressed($EVENT_NOTE, 1)
    set_key_pressed($EVENT_NOTE + 4, 1)
    set_key_pressed($EVENT_NOTE + 7, 1)
end on

on release
    set_key_pressed($EVENT_NOTE, 0)
    set_key_pressed($EVENT_NOTE + 4, 0)
    set_key_pressed($EVENT_NOTE + 7, 0)
end on

ボタンを押すと、聞こえている音が目で見えるようになります。

関連項目

set_key_pressed()

get_key_triggerstate()


set_key_type()

set_key_type(<note-number>, <key-type-constant>)

指定したキーにキータイプを割り当てます。

<note-number>

キーのMIDIノートナンバー(0 ... 127)。

<key-type-constant>

次のキータイプが利用できます:

$NI_KEY_TYPE_DEFAULT 通常どおりマッピングされ、音を発するキーです。

$NI_KEY_TYPE_CONTROL キースイッチなど、音を発しないキーです。

$NI_KEY_TYPE_NONE キーをKontaktの標準の動作に戻します。

補足

  • キータイプの設定は、Komplete Kontrolのような対応ホストで役に立ちます。こうしたホストでは、キースイッチなどのコントロール機能を持つキーが、ノート処理の影響を受けないようにする必要があるためです。

on init
    declare $count

    $count := 0
    while ($count < 128)
        set_key_type($count, $NI_KEY_TYPE_NONE)

        inc($count)
    end while

    $count := 36
    while ($count <= 96)
        select ($count)
            case 36 to 47 { e.g. key switch }
                set_key_type($count, $NI_KEY_TYPE_CONTROL)
            case 48 to 96 { e.g. playable notes }
                set_key_type($count, $NI_KEY_TYPE_DEFAULT)
        end select

        inc($count)
    end while
end on

関連項目

get_key_type()


set_keyrange()

set_keyrange(<min-note>, <max-note>, <name>)

指定したキーの範囲にテキスト文字列を割り当てます。

<min-note>

キーレンジの最初のキー(0 ... 127)。

<max-note>

キーレンジの最後のキー(0 ... 127)。

<name>

キーレンジの名前を指定するテキスト文字列です。

補足

  • キーレンジはインストゥルメントのパラメーターであり、KSPの外部に存在します。つまり、キーレンジを変更することは、set_engine_par()でKontaktのノブを変更するのと同じようなものです。on initコールバックの中で、または後からキーレンジを変更したいときには必ず、すべてのキーレンジを削除するようにしてください。

  • 1つのインストゥルメントにつき、キーレンジは最大16個まで設定できます。

  • キーネームとキーレンジは、Kontaktのキーボード上でキーにマウスカーソルを重ねると、KontaktのInfo Paneに表示されます。レンジ名の後に、ダッシュで区切ってキーネームが表示されます。

on init
    declare $count

    while ($count < 128)
        remove_keyrange($count)

        inc($count)
    end while

    set_keyrange(36, 72, "Middle Range")
end on

関連項目

remove_keyrange()

set_key_name()


remove_keyrange()

remove_keyrange(<note-number>)

指定したノートナンバーが属するキーの範囲を削除します。

補足

  • キーレンジはインストゥルメントのパラメーターであり、KSPの外部に存在します。つまり、キーレンジを変更することは、set_engine_par()でKontaktのノブを変更するのと同じようなものです。on initコールバックの中で、または後からキーレンジを変更したいときには必ず、すべてのキーレンジを削除するようにしてください。

on init
    declare $count

    while ($count < 128)
        remove_keyrange($count)

        inc($count)
    end while

    set_keyrange(36, 72, "Middle Range")
end on

関連項目

set_keyrange()


参照元情報:Keyboard Commands
https://docs.native-instruments.com/online-guides/ksp-manual/en/keyboard-commands