するお問い合わせでのスクリプティング入門、第5

In this 5 Part MPVHub Series, Toby Pitman explores the wonderful world of scripting in Native Instruments' Kontakt sampler. This final part 5 covers putting the finishing touches to your script!  

だから、前回の記事で私達は私達の制御がインターフェイスに表示されました。さて、この部分のパラメータにそのコントロールをフックアップし、私たちに便利なものにするつもりだった。

スタッフの仕事を作る

するお問い合わせに自動化することができるすべてのパラメータは、KSPで対処できます。これらのパラメータのすべてがアドレスを持っている、これらは組み込み変数の形で来る。 Youllは聞きしたいすべて大文字(例えば$ ENGINE_PAR_BITS)として、これらのいずれかを知っている。

この部分ではよくするお問い合わせ内のパラメータへのリンクを制御する私たちのインターフェイスを提供するコマンドや変数の多様な選択を使用して、それをいくつかの有用な表示情報を与えると、機器が保存され、ロードされたときに、その設定を保持します。これはほんの一制御が見しようとしていたされていますが、テクニックは、youllのは、KONTAKTで作成するすべてのUIコントロールに適用されます。始めてみましょう!


エンジンパラメータコマンド

第2部では、バイパス効果がMIDIノートを使用しています。しかし、ユーザが作成したコントロールと一緒にここに似たようなことをするつもりだった。これを行うには、我々は(KSPリファレンスマニュアルを参照してください)​​エンジンパラメータコマンドの一つですset_engine_par()を使用します。このグループの他の有用なものはget_engine_par()を含めると)(get_engine_par_display。

これらは、KONTAKTの内部パラメータの値を設定および取得することができ、フィルター効果のカットオフを言う。だから、我々は最後の部分で学んだことを使ってコントロールを作成することができます。まあまたパフォーマンス·ビューを作る。

Code Example 1


アイブ氏は、KONTAKTのパラメータの完全な内部解像度です1000000コントロールノブの分解能を設定します。あなたはパラメータ値の全範囲をカバーしたい場合は、その重要な、この値を設定します。

グループ1インサート·エフェクトのスロット1に4極LPフィルタをロードします。あなたが効果を聞くことができるようにするお問い合わせにサンプルをロードすることができます。


コントロールのリンク

この作業を行うために、我々はui_control上と呼ばれる特別なコールバック内で私たちのset_engine_par()コマンドを配置する必要があります。それはこのようになります。

ui_control


youllの通知には、私がヒットした場合、私はエラー(!:D私はこれらの多くを参照してください)​​を取得し適用します。

Error


我々はこのコールに割り当てるコントロールの変数を使用してブラケットを記入する必要があるためです。我々の場合$ myControlで。だから今はこのようになります。

Example 2


これを行うと、我々は、このコントロールを移動したときに我々は、このコントロールに固有のコールバック内でいくつかのコードを実行できることを意味します。だからグループインサートのスロット1にフィルタのカットにこのコントロールを割り当てることができます。我々はset_engine_par()でこれを行う。


set_engine_par(


したがって、最初のオフは、我々がカットされターゲットにするパラメータです。これは$ ENGINE_PAR_CUTOFFで行われます。これは、すべてのフィルタで動作します。エンジンパラメータ変数の下KSPリファレンスマニュアルですべてのエフェクト·パラメータの完全なリストを見つけるYoullは。


set_engine_par($ ENGINE_PAR_CUTOFF、


次は値です。私たちは、カットオフ量を作成私たちのUIコントロールノブの値を代入したい。我々は、入力$ myControlつまりノブの変数名をカットし、このノブの値を送信します。


set_engine_par($ ENGINE_PAR_CUTOFF、$ myControl、


我々は効果が住んでいるスロットに指示を与える必要がある次の。その最初のグループであるグループ1はそう0のグループのインデックスを持っています。 KONTAKTは常にグループ、ゾーンおよびスロット用に0からカウントします。


set_engine_par($ ENGINE_PAR_CUTOFF、myControl $、0、


最初の効果のスロット指数が再び0になります。


set_engine_par($ ENGINE_PAR_CUTOFF、$ myControl、0、0、


最後の値は、汎用的なインストゥルメント·インサート(0)を標的とするか、挿入(1)を送信するためです。これらのどれも該当しないので、我々は、-1を使用します。


set_engine_par($ ENGINE_PAR_CUTOFF、$ myControl、0、0、-1)


今、私たちは上のui_controlコールバック間でこれを置く。

Code Example 3


今、私たちは$ myControlを移動したときにカットオフの位置に従います!ブリリアント!

When we move $myControl the Cutoff will follow its position.


表示情報を設定する

現時点では、この値は1から1000000の間の数に、そのセットとしての効果のカットオフ周波数との関係では意味をなさないパフォーマンス·ビューで見ていた。だから我々はパフォーマンス·ビューの内側に効果で見ていたか、どのように表示するのですか?我々はget_engine_par_display()と組み合わせてコマンドset_knob_label()を使用してこれを行うことができます。私に説明してみましょう。

set_knob_label()は、そのラベルを変更するために使用されるのと同じ方法set_text()で多くのノブの値の表示を変更するために使用されます。私はget_engine_par_display()を使用してカットオフ効果の現在の値を取得し、その私達のノブの値を書き換えることができます。方法HERESに。


set_knob_label()は2つのパラメータがあります。


set_knob_label(

変数は、我々は、すなわち$ myControlを変更するUI要素になります。


set_knob_label($ myControl、


テキストには、カットオフパラメータオフ表示値となります。

The text will be the display value off the Cutoff parameter.


我々は、この使用get_engine_par_display()を取得します。形式は、私たちがset_engine_par()で使用されるものと似ています。


get_engine_par_disp(


グループ1のカットオフのために、スロット1はある...


get_engine_par_disp($ ENGINE_PAR_CUTOFF、0、0、-1)


このコードの入る


Example Code 4


今私は、コントロールを移動するとき、私は効果が内部カットの値を取得します。

The knob controls the Cutoff


だから良いのthats!しかし、私は問題を抱えている!私は再び(これを試してみてください!)適用をぶつけたり、プリセットからスクリプトをロードしたり、私は値を参照してください、私のコントロールは0にリセットされてはいけない!楽器をリロードしたとき!

私はすべてを行う必要が上のinitコールバックに私のset_knob_label()をコピーしたスクリプトを初期化するときにまずカットオフの値を表示します。

Code Example 5


今、私は初期の値を参照してください。

The value appears on initialization.


しかし、私のコントロールはまだ0にリセットされています!我々は()と呼ばれる別のmake_persistent variableコマンドを使用してもこの問題を解決することができます。


設定のスティックを作る

make_persistent( スクリプトが初期化されるときに、それをリコールできるように)スクリプト内で変数の値を格納します。この場合、我々は$ myControlの値を格納する必要があります。


これは、追加することによって行われます...


make_persistent($ myControl)


initは、コールバックの外へ。

Code Example 6


私は適用を打つときに私の設定が保持されます。

The setting is retained


この変数の設定はスクリプト内に格納されたとき:

  • プリセットとしてスクリプトを保存します。
  • インストゥルメントまたはMultiを保存します。
  • あなたのホストDAWのプロジェクトを保存します。


最後の仕上げ

最後のステップは、私たちのコントロールに正しい値ユニットを追加することです。カットオフをHz単位で表示されるように、コントロールにあることを追加することができます。


我々はset_knob_unit()でこれを行う。これは2つのパラメータがあります。


set_knob_unit(


変数は$ myControlです。


set_knob_unit($ myControl、


ユニットはこの場合$ KNOB_UNIT_HZでは組み込みユニット変数のいずれかを使用して設定されています。


set_knob_unit($ myControl、$ KNOB_UNIT_HZ)


DBは、MS、%、オクターブと半音のためにこれらを含むもののいくつかあります。我々は上のinitコールバックにこれを追加。

Code Example 7


上のinitコールバックにこれを追加すると、私たちにこれを与える。

A shiny working custom UI Control for our Filter Cutoff!


私たちのフィルター·カットオフのために光沢のある作業カスタムUIコントロール!


結論

だから、このシリーズのためにそれのthats!私はyouveはこの外の何かを持って、多分その中には、KONTAKTスクリプトに何らかの関心を巻き起こしたいと考えています。私がここで取り上げたhavent多くが、そのスタートをtheresの、私はあなたを確保することができ学ぶために多くのtheresの!

それまで!


クイックリンク

するお問い合わせでスクリプトの紹介、パート1

するお問い合わせでのスクリプティング入門、第2回

するお問い合わせでスクリプトの紹介、パート3

するお問い合わせでスクリプトの紹介、パート4

するお問い合わせでのスクリプティング入門、第5


For the past 20 years Toby has worked as a professional guitarist, programmer and producer. Clients include Sir Paul McCartney, George Michael, Shirley Bassey, Yusuf Islam, Giles Martin as well as the London 2012 Olympic Ceremonies. He has also worked extensively in TV, Advertising and Film. As well as composing himself he has also ... Read More

Discussion

Patrice
Hey Toby,

thanks for this great introduction. That's all i need for my instruments, except for placing a background picture on the performance view.

Greetz,
Patrice

Bellstir
Hi Patrice
This video can answer you question.
https://www.youtube.com/watch?v=oe4ul-pljEo
Scroll to about halfway thru it.
Basically, click on the wrench to see inside the patch.
Click on Instrument parameters. Select instrument tab. Then upload instrumnet wall paper. Only certain image formats work.
Good luck!

Bellstir
Toby
Thanks for sharing your expertise in such a clear and easily understandable way!
My quest in Kontakt scripting:
How to automate a user defined knob, button or slider.
Do you have any clues for me?
Thanks!
Bonzo
Great article, i just wish i could get it to work! I've copied the code letter for letter and get no errors but the knob just doesn't do anything. I followed a similar tutorial on youtube with the same result and now i'm sad.
SolonoidStudio
Hi there. There's something I'm having trouble with in regard to setting engine parameters to a ui control.

I can see you've covered knobs here - but I'm using a script where I declare sliders instead of knobs, and then use custom images to display my own knobs.

I can't figure out how to get these sliders to control certain engine parameters like attack, without snapping. I'm attempting to control the attack parameter the same way you would with a knob, but the problem is I'm using my custom knob, which requires that I use sliders instead.

None of the Kontakt manuals cover this type of approach, so I'm out of answers. Can you help?
Adrian Tucker
Hello! I am developing an instrument (drums) in kontakt 5 helped by Kontakt GUI Maker software (it is nice but I think it should work better) and I hope you can help me in this task.
I want to create a knob which could regulate the amount of unprocessed and processed signal, in other words, a parallel processing of two signals (Dry/Wet). I have some inserts (eq, comp, transient...) in different busses (kick, snare, hat...) so I would like to listen drums completely organic, with nothing of that inserts (knob at 0%) and with more of that processing (knob increase up to 100%). Maybe some way to send signal before busses and after busses to a channel which operates in parallel way? Also, I have another question: How can I assign a knob to dry or wet reverb and delay? (I tried with $ENGINE_PAR_SENDLEVEL_0 but it does not work) I have not seen the option in the KSP manual. I hope I had explained well, English is not my language. I hope hearing you soon.

Greetings!!

Want to join the discussion?

Create an account or login to get started!