| |
|---|---|
内部モジュレーターまたは外部モジュレーションのスロットインデックスを返します。 | |
| グループのインデックスです(KontaktのMonitor -> GroupsペインにあるIndex列を参照してください)。 |
| 内部(LFO、エンベロープ、ステップモジュレーターなど)または外部(ベロシティ、キーポジション、モノアフタータッチなど)のモジュレーターの名前です。 |
各モジュレーターには、その種類とターゲットとするパラメーターに基づいて、あらかじめ定義された名前が付いています。
この名前は、KontaktのOptions → Developerペインで開発者向けオプションを有効にしたうえで、モジュレーターまたはモジュレーションターゲットのストリップを右クリックすることで変更できます。
on init
declare $grp_idx := 0
declare $env_idx
$env_idx := get_mod_idx($grp_idx, "VOL_ENV")
declare ui_knob $Attack (0, 1000000, 1)
$Attack := get_engine_par($ENGINE_PAR_ATTACK, $grp_idx, $env_idx, -1)
set_knob_unit($Attack, $KNOB_UNIT_MS)
set_knob_label($Attack, get_engine_par_disp($ENGINE_PAR_ATTACK, $grp_idx, $env_idx, -1))
end on
on ui_control ($Attack)
set_engine_par($ENGINE_PAR_ATTACK, $Attack, $grp_idx, $env_idx, -1)
set_knob_label($Attack, get_engine_par_disp($ENGINE_PAR_ATTACK, $grp_idx, $env_idx, -1))
end on
最初のグループのボリュームエンベロープのアタックタイムを制御します。注意:このエンベロープは手動で"VOL_ENV"にリネームしてあります。
on init
declare $count
declare $mod_idx
$mod_idx := get_mod_idx(0, "VEL_VOLUME")
declare ui_slider $VelAmt (0, 1000000)
if ($mod_idx # $NI_NOT_FOUND)
$VelAmt := get_engine_par($ENGINE_PAR_MOD_TARGET_INTENSITY, 0, $mod_idx, -1)
end if
make_persistent($VelAmt)
end on
on ui_control ($VelAmt)
$count := 0
while($count < $NUM_GROUPS)
$mod_idx := get_mod_idx($count, "VEL_VOLUME")
if ($mod_idx # $NI_NOT_FOUND)
set_engine_par($ENGINE_PAR_MOD_TARGET_INTENSITY, $VelAmt, $count, $mod_idx, -1)
end if
inc($count)
end while
end on
存在するすべてのグループについて、ベロシティからボリュームへのモジュレーション強度を制御するスライダーを作成します。
| |
|---|---|
内部モジュレーターのモジュレーションターゲットのスロットインデックスを返します | |
| グループのインデックスです(KontaktのMonitor -> GroupsペインにあるIndex列を参照してください)。 |
| 内部モジュレーター(LFO、エンベロープ、ステップモジュレーターなど)のスロットインデックスです。 |
| モジュレーションターゲットのスロットの名前です。 |
各モジュレーターには、その種類とターゲットとするパラメーターに基づいて、あらかじめ定義された名前が付いています。
この名前は、KontaktのOptions → Developerペインで開発者向けオプションを有効にしたうえで、モジュレーターまたはモジュレーションターゲットのストリップを右クリックすることで変更できます。
on init
declare $mod_idx
declare $target_idx
$mod_idx := get_mod_idx(0, "FILTER_ENV")
$target_idx := get_target_idx(0, $mod_idx, "FILTER_ENV > CUTOFF")
declare ui_knob $FilterEnv (-1000, 1000, 10)
set_knob_unit($FilterEnv, $KNOB_UNIT_PERCENT)
make_persistent($FilterEnv)
end on
on ui_control ($FilterEnv)
if ($mod_idx # $NI_NOT_FOUND and $target_idx # $NI_NOT_FOUND)
set_engine_par($ENGINE_PAR_MOD_TARGET_MP_INTENSITY, 500000 + ($FilterEnv * 500), 0, $mod_idx, $target_idx)
end if
end on
最初のグループで、エンベロープからフィルターカットオフへのモジュレーション量を制御します。注意:フィルターエンベロープは手動で"FILTER_ENV"に、ターゲットは"FILTER_ENV > CUTOFF"にリネームしてあります。
| |
|---|---|
特定のエンジンパラメーターの値を返します。 | |
| ビルトインのエンジンパラメーター定数のいずれかを使ってパラメーターを指定します。 |
| 指定したパラメーターが存在するグループのインデックス(ゼロ始まり)です。 指定したパラメーターがInstrumentレベルに存在する場合は、-1を入力します。 バスとMain FXもInstrumentレベルに存在するため、バスを操作したい場合は<group>に-1を設定する必要があります。 |
| 指定したパラメーターのスロットインデックス(ゼロ始まり)です。これはグループ/インストゥルメントのエフェクト、モジュレーター、モジュレーション強度にのみ適用されます。 グループ/インストゥルメントのエフェクトの場合、この引数はそのエフェクトが存在するスロット(ゼロ始まり)を指定します。 モジュレーターとモジュレーション強度の場合、この引数は それ以外の用途では、この引数に-1を設定します。 |
| この引数はインストゥルメントエフェクトと内部モジュレーターに適用されます。 インストゥルメントエフェクトの場合、この引数は次のものを区別します。
バスの場合、この引数は実際のバスを指定します。
内部モジュレーターの場合、この引数は Flex Envelopeの場合、この引数は Step Modulatorの場合、この引数は それ以外の用途では、この引数に-1を設定します。 |
on init
declare $i
declare ui_label $label (2, 6)
set_text($label,"Release Trigger Groups:")
while ($i < $NUM_GROUPS)
if (get_engine_par($ENGINE_PAR_RELEASE_TRIGGER, $i, -1, -1) = 1)
add_text_line($label, group_name($i) & " (Index: " & $i & ")")
end if
inc($i)
end while
end on
リリーストリガーグループの名前とインデックスを出力します。
on init
declare ui_label $label (2, 6)
declare ui_button $Refresh
declare $i
declare !effect_name[128]
!effect_name[$EFFECT_TYPE_NONE] := "None"
!effect_name[$EFFECT_TYPE_PHASER] := "Phaser"
!effect_name[$EFFECT_TYPE_CHORUS] := "Chorus"
!effect_name[$EFFECT_TYPE_FLANGER] := "Flanger"
!effect_name[$EFFECT_TYPE_REVERB] := "Reverb"
!effect_name[$EFFECT_TYPE_DELAY] := "Delay"
!effect_name[$EFFECT_TYPE_IRC] := "Convolution"
!effect_name[$EFFECT_TYPE_GAINER] := "Gainer"
while ($i < 8)
add_text_line($label, "Slot: " & $i + 1 & ": " & ...
!effect_name[get_engine_par($ENGINE_PAR_SEND_EFFECT_TYPE, -1, $i, -1)])
inc($i)
end while
end on
on ui_control ($Refresh)
set_text($label, "")
while ($i < 8)
add_text_line($label, "Slot: " & $i + 1 & ": " & ...
!effect_name[get_engine_par($ENGINE_PAR_SEND_EFFECT_TYPE, -1, $i, -1)])
inc($i)
end while
$Refresh := 0
end on
8つあるSend Effectスロットすべてのエフェクトタイプを出力します。
| |
|---|---|
特定のエンジンパラメーターの表示値を文字列として返します。 | |
| ビルトインのエンジンパラメーター定数のいずれかを使ってパラメーターを指定します。 |
| 指定したパラメーターが存在するグループのインデックス(ゼロ始まり)です。 指定したパラメーターがInstrumentレベルに存在する場合は、-1を入力します。 バスとMain FXもInstrumentレベルに存在するため、バスを操作したい場合は<group>に-1を設定する必要があります。 |
| 指定したパラメーターのスロットインデックス(ゼロ始まり)です。これはグループ/インストゥルメントのエフェクト、モジュレーター、モジュレーション強度にのみ適用されます。 グループ/インストゥルメントのエフェクトの場合、この引数はそのエフェクトが存在するスロット(ゼロ始まり)を指定します。 モジュレーターとモジュレーション強度の場合、この引数は それ以外の用途では、この引数に-1を設定します。 |
| この引数はインストゥルメントエフェクトと内部モジュレーターに適用されます。 インストゥルメントエフェクトの場合、この引数は次のものを区別します。
バスの場合、この引数は実際のバスを指定します。
内部モジュレーターの場合、この引数は Flex Envelopeの場合、この引数は Step Modulatorの場合、この引数は それ以外の用途では、この引数に-1を設定します。 |
on init
declare $i
declare ui_label $label (2, 6)
set_text($label, "Group Volume Settings:")
while ($i < $NUM_GROUPS)
add_text_line($label, group_name($i) & ": " & get_engine_par_disp($ENGINE_PAR_VOLUME, $i, -1, -1) & " dB")
inc($i)
end while
end on
インストゥルメント内のグループのボリューム設定を取得します。
| |
|---|---|
特定のエンジンパラメーターについて、任意の値に対する表示値を文字列として返します。 | |
| ビルトインのエンジンパラメーター定数のいずれかを使ってパラメーターを指定します。 |
| 指定したパラメーターに設定する値です。 値の範囲は常に0から1000000までです。ただしスイッチの場合は0または1となり、連続的ではなく段階的な値をとるエンジンパラメーターも一部あります。これらには専用の定数が用意されているか、汎用的な整数の値域が定められており、エンジンパラメーターのセクションで個別に記載されています。 |
| 指定したパラメーターが存在するグループのインデックス(ゼロ始まり)です。 指定したパラメーターがInstrumentレベルに存在する場合は、-1を入力します。 バスとMain FXもInstrumentレベルに存在するため、バスを操作したい場合は<group>に-1を設定する必要があります。 |
| 指定したパラメーターのスロットインデックス(ゼロ始まり)です。これはグループ/インストゥルメントのエフェクト、モジュレーター、モジュレーション強度にのみ適用されます。 グループ/インストゥルメントのエフェクトの場合、この引数はそのエフェクトが存在するスロット(ゼロ始まり)を指定します。 モジュレーターとモジュレーション強度の場合、この引数は それ以外の用途では、この引数に-1を設定します。 |
| この引数はインストゥルメントエフェクトと内部モジュレーターに適用されます。 インストゥルメントエフェクトの場合、この引数は次のものを区別します。
バスの場合、この引数は実際のバスを指定します。
内部モジュレーターの場合、この引数は Flex Envelopeの場合、この引数は Step Modulatorの場合、この引数は それ以外の用途では、この引数に-1を設定します。 |
on init
declare $value
declare ui_knob $Cutoff (0, 1000000, 1)
declare ui_knob $Macro (0, 1000000, 10000)
declare ui_knob $MacroAmt (-1000000, 1000000, 10000)
$MacroAmt := -500000
set_knob_defval($Cutoff, 1000000)
set_knob_defval($MacroAmt, 0)
set_knob_unit($Cutoff, $KNOB_UNIT_HZ)
set_knob_unit($Macro, $KNOB_UNIT_PERCENT)
set_knob_unit($MacroAmt, $KNOB_UNIT_PERCENT)
make_persistent($Cutoff)
make_persistent($Macro)
make_persistent($MacroAmt)
set_engine_par($ENGINE_PAR_EFFECT_TYPE, $EFFECT_TYPE_FILTER, -1, 0, $NI_INSERT_BUS)
end on
function SetCutoff()
$value := int(real($Cutoff) + (real($Macro) * real($MacroAmt) * 1.0e-6))
if ($value < 0)
$value := 0
end if
if ($value > 1000000)
$value := 1000000
end if
set_engine_par($ENGINE_PAR_CUTOFF, $value, -1, 0, $NI_INSERT_BUS)
set_knob_label($Cutoff, get_engine_par_disp_ext($ENGINE_PAR_CUTOFF, $Cutoff, -1, 0, $NI_INSERT_BUS))
end function
on persistence_changed
call SetCutoff()
end on
on ui_controls
call SetCutoff()
end on
マクロ的なコントロールによる追加のオフセットのために実際のエンジンパラメーターの値が異なっていても、フィルターカットオフの基準値を取得します。
| |
|---|---|
SourceモジュールのTime Machine Proサンプラーモードのボイスリミットを返します。 | |
| ボイスタイプです。次のいずれかを指定できます。
|
on init
declare ui_label $label (3, 2)
add_text_line($label, "Standard Voice Limit: " & get_voice_limit($NI_VL_TMPRO_STANDARD))
add_text_line($label, "HQ Voice Limit: " & get_voice_limit($NI_VL_TMPRO_HQ))
end on
TM Proのボイスリミットを表示します。
| |
|---|---|
指定した出力のチャンネル名を返します。 | |
| 出力チャンネルの番号(ゼロ始まり。つまり最初の出力は0になります)です。 |
on init
declare $i
declare ui_menu $menu
add_menu_item($menu, "Default", -1)
$i := 0
while ($i < $NUM_OUTPUT_CHANNELS)
add_menu_item($menu, output_channel_name($i), $i)
inc($i)
end while
$menu := get_engine_par($ENGINE_PAR_OUTPUT_CHANNEL, 0, -1, -1)
end on
on ui_control ($menu)
set_engine_par($ENGINE_PAR_OUTPUT_CHANNEL,$menu, 0, -1, -1)
end on
最初のグループの出力チャンネル割り当てメニューを再現します。
一般:$NUM_OUTPUT_CHANNELS、$ENGINE_PAR_OUTPUT_CHANNEL
| |
|---|---|
Kontaktのさまざまなエンジンパラメーターを制御します。 | |
| ビルトインのエンジンパラメーター定数のいずれかを使ってパラメーターを指定します。 |
| 指定したパラメーターに設定する値です。 値の範囲は常に0から1000000までです。ただしスイッチの場合は0または1となり、連続的ではなく段階的な値をとるエンジンパラメーターも一部あります。これらには専用の定数が用意されているか、汎用的な整数の値域が定められており、エンジンパラメーターのセクションで個別に記載されています。 |
| 指定したパラメーターが存在するグループのインデックス(ゼロ始まり)です。 指定したパラメーターがInstrumentレベルに存在する場合は、-1を入力します。 バスとMain FXもInstrumentレベルに存在するため、バスを操作したい場合は<group>に-1を設定する必要があります。 |
| 指定したパラメーターのスロットインデックス(ゼロ始まり)です。これはグループ/インストゥルメントのエフェクト、モジュレーター、モジュレーション強度にのみ適用されます。 グループ/インストゥルメントのエフェクトの場合、この引数はそのエフェクトが存在するスロット(ゼロ始まり)を指定します。 モジュレーターとモジュレーション強度の場合、この引数は それ以外の用途では、この引数に-1を設定します。 |
| この引数はインストゥルメントエフェクトと内部モジュレーターに適用されます。 インストゥルメントエフェクトの場合、この引数は次のものを区別します。
バスの場合、この引数は実際のバスを指定します。
内部モジュレーターの場合、この引数は Flex Envelopeの場合、この引数は Step Modulatorの場合、この引数は それ以外の用途では、この引数に-1を設定します。 |
一部のエンジンパラメーターは非同期に実行されます(最も代表的なのはエフェクトのタイプとサブタイプの設定です)。on initコールバックからエフェクトスロットの内容を変更した場合は同期的に実行されるため、インストゥルメントの初期ロード時間に大きく影響することがあります。特に多数のエフェクトスロットに対してこれを行う場合はその影響が大きくなります。このような処理はon persistence_changedコールバックに移すことをおすすめします。
on init
declare ui_knob $Volume (0, 1000000, 1000000)
end on
on ui_control ($Volume)
set_engine_par($ENGINE_PAR_VOLUME, $Volume, -1, -1, -1)
end on
ノブでインストゥルメントのボリュームを制御します。
on init
declare ui_knob $Freq (0, 1000000, 1000000)
declare ui_button $Bypass
end on
on ui_control ($Freq)
set_engine_par($ENGINE_PAR_CUTOFF, $Freq, 0, 0, -1)
end on
on ui_control ($Bypass)
set_engine_par($ENGINE_PAR_EFFECT_BYPASS, $Bypass, 0, 0, -1)
end on
最初のグループの最初のスロットにあるフィルターモジュールのカットオフとバイパスボタンを制御します。
on init
declare ui_knob $Knob (-1000, 1000, 10)
declare $mod_idx
$mod_idx := get_mod_idx(0, "FILTER_ENV")
declare $target_idx
$target_idx := get_target_idx(0, $mod_idx, "ENV_AHDSR_CUTOFF")
end on
on ui_control ($Knob)
set_engine_par($ENGINE_PAR_MOD_TARGET_MP_INTENSITY, $Knob * 1000, 0, $mod_idx, $target_idx)
end on
最初のグループで、エンベロープからフィルターカットオフへのモジュレーションについて、フィルターエンベロープの量を制御します。注意:フィルターエンベロープは手動で"FILTER_ENV"にリネームしてあります。
on init
declare ui_knob $Vol (0, 1000000, 1000000)
end on
on ui_control ($Vol)
set_engine_par($ENGINE_PAR_VOLUME, $Vol, -1, -1, $NI_BUS_OFFSET + 15)
end on
16番目のバスのアンプボリュームを制御します。
| |
|---|---|
SourceモジュールのTime Machine Proモードのボイスリミットを設定します。 | |
| ボイスタイプです。次のいずれかを指定できます。
|
| Time Machine Proモードのボイスリミットです。 |
ボイスリミットの変更は非同期の処理です。そのため、新しく確保されたボイスにインスタンス化の直後から確実にアクセスできるとは限りません。これに対処するため、set_voice_limit()コマンドは$NI_ASYNC_IDを返し、on async_completeコールバックをトリガーします。
このコマンドは、インストゥルメントのメモリ使用量を調整するために使用します。Time Machine Proは、ロードされたサンプルが使用するメモリとは別に、独自のメモリ確保を行います。この状況はKontaktのサイドペインにあるMonitor → Engineタブで確認できます。
on init
declare $change_voices_id
declare ui_value_edit $Voices (1, 8, 1)
make_persistent($Voices)
end on
on ui_control ($Voices)
$change_voices_id := set_voice_limit($NI_VL_TMPRO_STANDARD, $Voices)
end on
on async_complete
if ($NI_ASYNC_ID = $change_voices_id)
message("New TMPro Std Voice Limit: " & get_voice_limit($NI_VL_TMPRO_STANDARD))
end if
end on
TM Proのボイスリミットを変更します。
参照元情報:Engine Parameter Commands
https://docs.native-instruments.com/online-guides/ksp-manual/en/engine-parameter-commands