次のファイル形式を読み込み・保存できます。
Kontaktの配列(.nkaファイル)
KSPのファイルコマンドで使用するMIDIファイル(.mid)
KontaktのコンボリューションエフェクトやユーザーZoneで使用するサンプル(.wav、.aif、.aiff、.ncw)(読み込みのみ)
ファイルの読み込みと保存はリアルタイムでは実行できません。そのため、すべてのロード/セーブコマンドは、動作の完了時に一意の値、すなわち非同期IDを返します。この値を$NI_ASYNC_IDおよび$NI_ASYNC_EXIT_STATUSと組み合わせてon async_completeコールバックの中で使用すると、コマンドが動作を完了したかどうか、読み込みや保存が成功したかどうかを確認できます。
KSPのすべてのファイルパスは、フォルダーの区切り文字としてスラッシュ(/)を使用します。バックスラッシュはサポートされていません。フルパスもスラッシュ / で始める必要があります。
macOSのファクトリーフォルダー:
/Library/Application Support/Native Instruments/Kontakt 8/
Windowsのファクトリーフォルダー:
C:\Program Files\Common Files\Native Instruments\Kontakt 8\
リソースコンテナから読み込むのではなく絶対パスでファイルを読み込みまたは保存する場合は、必ずパス変数をget_folder()と組み合わせて使用してください。
一般:$NI_ASYNC_ID、$NI_ASYNC_EXIT_STATUS
| |
|---|---|
ビルトインのパス変数で指定されたパスを返します。 | |
|
使用できるパス変数は次のとおりです。
Kontakt Playerでエンコードされたライブラリーに属するパッチで使用した場合:ライブラリーフォルダー。 エンコードされていないパッチで使用した場合:User Contentフォルダー。場所は次のとおりです。 macOS: Windows:
Kontaktのファクトリーデータフォルダー。主にファクトリーのIRサンプルを読み込むために使用します。 注意:これはKontakt Factory Libraryのフォルダーではありません!
パッチが保存されているフォルダー。 パッチがまだ保存されていない場合は、空の文字列が返されます。
リソースコンテナが保存されているフォルダー。ライブラリー構造の中にある他のファイル(たとえばNKAファイルやMIDIファイル)を参照するときは、一般にこのパスを使用することが推奨されます。リソースコンテナまでのパスは、Kontakt Playerでエンコードされたライブラリーでもエンコードされていないパッチでも同じだからです。 Instrumentにリソースコンテナが設定されていない場合は、空の文字列が返されます。 |
get_folder()を使えば、文字列に../を付け加えることで1つ上の階層(または複数階層上)にあるファイルを相対的に参照できます。
Kontaktで絶対ファイルパスを扱うときは、必ずスラッシュ(/)を使用してください。
on init
message(get_folder($GET_FOLDER_FACTORY_DIR))
end on
Kontaktのファクトリーデータフォルダーのパスを表示します。
on init
declare %data[5]
load_array_str(%data, get_folder($GET_FOLDER_PATCH_DIR) & "../Data/my_data.nka")
end on
パッチフォルダーを基点として、絶対ファイルパスを使ってNKAファイルを読み込みます。この例では、パッチがライブラリーのメインフォルダーのサブフォルダーにあり、さらにライブラリーのメインフォルダーにDataという名前の別のフォルダーがあることを前提としています。
一般:$GET_FOLDER_LIBRARY_DIR、$GET_FOLDER_FACTORY_DIR、$GET_FOLDER_PATCH_DIR
| |
|---|---|
外部の.nkaファイルから配列を読み込みます。 | |
|
配列変数の名前。この名前は.nkaファイルの1行目に記載されている必要があります。 |
|
0:ダイアログウィンドウが開き、読み込む.nkaファイルを選択できます。このモードはon persistence_changed、on ui_control、on pgs_changedの各コールバックでのみ使用できます(非同期)。 1:配列は ユーザーInstrumentの場合、 Kontakt PlayerでエンコードされたライブラリーのInstrumentの場合、 macOS: Windows: このモードはon initコールバックで同期的に、on persistence_changed、on ui_control、on pgs_changedの各コールバックで非同期的に使用できます。 2:配列はリソースコンテナ内の このモードはon initコールバックで同期的に、on persistence_changed、on ui_control、on pgs_changedの各コールバックで非同期的に使用できます。 |
.nkaファイルからは実数配列や文字列配列を読み込むこともできます。
.nkaファイル内の%xyzという名前の配列を配列%abcに読み込むことはできません。変数名は正確に一致している必要があります。
load_array()コマンドは非同期で動作するため、コマンドの実行直後に配列データが利用できるわけではありません。値が即座に利用できるのは、on initコールバックの中でモード1またはモード2を使用した場合だけです。
モード0を使用した場合、読み込みダイアログが開いたままでもコールバックは続行されます。
on initコールバックの中で配列を読み込む場合、その配列は暗黙のうちに永続化される(make_persistent()コマンドを使用したのと同じ状態になる)ため、読み込まれたデータがコールバックの終わりに上書きされる点に注意してください。この問題を避けるには、配列を読み込む前にread_persistent_var()を使用してください。
リソースコンテナから読み込む.nkaファイルは、ファイルの末尾に必ず改行文字を入れてください。この最後の改行が無いと、Kontaktはファイルが終わったことを判断できず、リソースコンテナから他のデータを読み込もうとし続けます。save_array()コマンドで生成されたファイルには自動的に改行が入りますが、別の方法でNKAファイルを作成する場合は注意が必要です。
on init
declare $count
declare $load_arr_id := -1
declare $save_arr_id := -1
declare %preset[8]
declare ui_button $Load
declare ui_button $Save
declare ui_table %table[8] (2,2,100)
make_persistent(%table)
end on
on ui_control (%table)
$count := 0
while ($count < 8)
%preset[$count] := %table[$count]
inc($count)
end while
end on
on ui_control ($Load)
$load_arr_id := load_array(%preset, 0)
end on
on ui_control ($Save)
$save_arr_id := save_array(%preset, 0)
end on
on async_complete
if ($NI_ASYNC_ID = $load_arr_id)
$load_arr_id := -1
$Load := 0
if ($NI_ASYNC_EXIT_STATUS = 1)
$count := 0
while($count < 8)
%table[$count] := %preset[$count]
inc($count)
end while
end if
end if
if ($NI_ASYNC_ID = $save_arr_id)
$save_arr_id := -1
$Save := 0
end if
end on
ui_tableウィジェットの内容を書き出して読み込みます。
一般:$NI_ASYNC_ID、$NI_ASYNC_EXIT_STATUS
| |
|---|---|
ファイルへの絶対パスを使って、外部の.nkaファイルから配列を読み込みます。 | |
|
配列変数の名前。これは.nkaファイルの1行目に記載されている必要があります。 |
|
.nkaファイルの絶対パス。 |
動作はモードを0に設定したload_array()と似ていますが、.nkaファイルを手動で選択する代わりに絶対パスで指定できます。
このコマンドはon initコールバックで同期的に、on persistence_changed、on ui_control、on pgs_changedの各コールバックで非同期的に使用できます。
load_array_str()には、load_array()のような暗黙の永続化の動作はありません。
Kontaktで絶対ファイルパスを扱うときは、必ずスラッシュ(/)を使用してください。
on init
message("")
set_ui_height(2)
declare $count
declare $load_arr_id := -1
declare %preset[8]
declare @file_path
declare @basepath_browser
{ set browser path here, for example:
@basepath_browser := "/Users/<username>/Desktop/Arrays" }
declare ui_file_selector $file_browser
declare ui_table %table[8] (2, 2, 100)
declare $browser_id
$browser_id := get_ui_id($file_browser)
set_control_par_str($browser_id, $CONTROL_PAR_BASEPATH, @basepath_browser)
set_control_par($browser_id, $CONTROL_PAR_WIDTH, 112)
set_control_par($browser_id, $CONTROL_PAR_HEIGHT, 68)
set_control_par($browser_id, $CONTROL_PAR_COLUMN_WIDTH, 110)
set_control_par($browser_id, $CONTROL_PAR_FILE_TYPE, $NI_FILE_TYPE_ARRAY)
make_persistent(@file_path)
make_persistent(%table)
move_control_px($file_browser, 66, 2)
move_control(%table, 3, 1)
end on
on async_complete
if ($NI_ASYNC_ID = $load_arr_id)
$load_arr_id := -1
if ($NI_ASYNC_EXIT_STATUS = 0)
message("Array not found!")
else
message("")
$count := 0
while ($count < num_elements(%preset))
%table[$count] := %preset[$count]
inc($count)
end while
end if
end if
end on
on ui_control ($file_browser)
@file_path := fs_get_filename($browser_id, 2)
$load_arr_id := load_array_str(%preset, @file_path)
end on
ブラウザーを使ってさまざまなテーブルプリセットを読み込みます。まず、ファイルセレクターのブラウザーパスが、互換性のある.nkaファイルの入ったフォルダーを指すように設定してください。
| |
|---|---|
Kontaktのコンボリューションエフェクトにインパルスレスポンスサンプルを読み込みます。 | |
|
IRサンプルの絶対ファイルパス。 パスを指定しない場合、コマンドはリソースコンテナの リソースコンテナが無い場合は、Kontaktユーザーフォルダー内の Kontaktユーザーフォルダーは次の場所にあります: macOS: Windows: |
|
コンボリューションエフェクトのスロットインデックス(0始まり)。 |
|
コンボリューションエフェクトをどのように使用するかを指定します:
バスの場合、このパラメーターは実際のバスを指定します:
|
リソースコンテナのir_samplesフォルダー内のサブフォルダーはスキャンされないので注意してください。テキスト文字列で手動で追加することも推奨されません。リソースコンテナのMonolithを作成するときにサブフォルダーは無視されるため、問題につながる可能性があります。
リソースコンテナからインパルスレスポンスサンプルを読み込む場合、ファイル拡張子を含める必要はありません。
Kontaktで絶対ファイルパスを扱うときは、必ずスラッシュ(/)を使用してください。
on init
declare $load_ir_id := -1
declare ui_button $Load
end on
on ui_control ($Load)
$load_ir_id := load_ir_sample("Small Ambience.wav", 0, $NI_SEND_BUS)
$Load := 0
end on
on async_complete
if ($NI_ASYNC_ID = $load_ir_id)
$load_ir_id := -1
if ($NI_ASYNC_EXIT_STATUS = 0)
message("IR sample not found!")
else
message("IR sample loaded!")
end if
end if
end on
Sendエフェクトチェーンの最初のスロットに配置したコンボリューションリバーブにIRサンプルを読み込みます。
一般:$NI_ASYNC_ID
| |
|---|---|
配列を外部の.nkaファイルに保存します。 | |
|
保存する配列変数の名前です。 |
|
0:ダイアログウィンドウが開き、.nkaファイルを保存できます。このモードは 1:配列は ユーザーInstrumentの場合、 Kontakt PlayerでエンコードされたライブラリーのInstrumentの場合、 macOS: Windows: このモードは |
実数配列や文字列配列を.nkaファイルに保存することもできます。
書き出された.nkaファイルは、配列の名前に続いてそのすべての値が1行に1つずつ並んだ形になります。
モード0を使用した場合、読み込みダイアログが開いたままでもコールバックは続行されます。
一般:$NI_ASYNC_ID、$NI_ASYNC_EXIT_STATUS
| |
|---|---|
指定した絶対パスで外部の.nkaファイルに配列を保存します。 | |
|
保存する配列変数の名前です。 |
|
保存する.nkaファイルの絶対パス。 |
動作はsave_array()と似ていますが、保存場所を手動で選択する代わりに、指定した場所へ直接ファイルを保存できます。
ファイルが存在せずフォルダーだけが存在する場合は、新しい.nkaファイルが作成されます。
このコマンドはon initコールバックで同期的に、on persistence_changed、on ui_control、on pgs_changedの各コールバックで非同期的に使用できます。
Kontaktで絶対ファイルパスを扱うときは、必ずスラッシュ(/)を使用してください。
on init
message("")
set_ui_height(2)
declare $count
declare $save_arr_id := -1
declare %preset[8]
declare @path
{ set save path here, for example:
@path := "/Users/<username>/Desktop/Arrays/" }
declare ui_button $Save
declare ui_label $pattern_lbl (1, 1)
declare ui_text_edit @preset_name
declare ui_table %table[8] (2, 2, 100)
make_persistent(%table)
make_persistent(@preset_name)
set_control_par(get_ui_id(@preset_name), $CONTROL_PAR_FONT_TYPE, 10)
move_control_px(@preset_name, 73 + (3 * 92), 2)
move_control_px($pattern_lbl, 66 + (3 * 92), 2)
set_control_par_str(get_ui_id(@preset_name), $CONTROL_PAR_TEXT, "<empty>")
set_text($pattern_lbl, "")
end on
on ui_control (%table)
$count := 0
while ($count < num_elements(%preset))
%preset[$count] := %table[$count]
inc($count)
end while
end on
on ui_control ($Save)
$save_arr_id := save_array_str(%preset, @path & @preset_name & ".nka")
end on
on async_complete
if ($NI_ASYNC_ID = $save_arr_id)
$save_arr_id := -1
$Save := 0
end if
end on
テーブルプリセットに好きな名前を付けて保存します。.nkaファイルを保存するパスを必ず設定してください。
| |
|---|---|
| |
|
保存するMIDIファイルの絶対パス。 |
Kontaktで絶対ファイルパスを扱うときは、必ずスラッシュ(/)を使用してください。
on init
message("")
declare $save_mf_id := -1
declare @path
{ set save path here, for example
@path := "/Users/<username>/Desktop/MIDI Files/" }
declare ui_text_edit @file_name
declare ui_label $file_name_lbl (1, 1)
declare ui_button $Save
make_persistent(@file_name)
set_control_par(get_ui_id(@file_name), $CONTROL_PAR_FONT_TYPE, 10)
set_control_par_str(get_ui_id(@file_name), $CONTROL_PAR_TEXT, "<empty>")
set_text($file_name_lbl, "")
move_control($Save, 2, 1)
move_control_px(@file_name, 73, 2)
move_control_px($file_name_lbl, 66, 2)
end on
on ui_control ($Save)
$save_mf_id := save_midi_file(@path & @file_name & ".mid")
end on
on async_complete
if ($NI_ASYNC_ID = $save_mf_id)
$save_mf_id := -1
$Save := 0
end if
end on
MIDIファイルを保存します。
参照元情報:Load/Save Commands
https://docs.native-instruments.com/online-guides/ksp-manual/en/load-save-commands