脚本介绍,与我们联系,第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与我们联系,可以自动在每一个参数可以解决。所有这些参数有一个地址,这些内置的变量的形式。你会知道这些吗更有耐力所有大写字母(如$ ENGINE_PAR_BITS)的。

在这一部分中使用的命令和变量给我们的接口控制的链接与我们联系内部参数,给它一些有用的显示信息,当仪器保存和加载,也保留其设置各种不同的选择。这仅仅是一个控制去看看,但这些技术都适用于每一个UI控件,你会创建与我们联系。让我们开始!


发动机参数命令

在第2部分中,我们绕过一个影响使用MIDI音符。要在这里做同样的事情,但有一个用户创建的控件。要做到这一点,我们使用set_engine_par()这是一个发动机参数命令(见“KSP参考手册)。此组中的其他有用的包括get_engine_par()和get_engine_par_display()。

这允许你设置和检索值的参数内与我们联系,说截止滤镜效果。所以,让我们创建一个控件,用我们的经验教训,在最后部分。同时,使性能视图。

Code Example 1


香港专业教育学院设置的分辨率为1000000,是完整的内部分辨率与我们联系参数的控制旋钮。其重要的,如果你想覆盖整个范围的参数值,这个值设置。

加载4极LP滤波器第1组插入效果器插入插槽1。您可能要加载的样品与我们联系,这样你就可以听到效果。


链接控制

为了使这项工作,我们需要在一个特殊的回调呼吁​​ui_control把我们的set_engine_par的()命令。它看起来是这样的。

ui_control


如果我打你会通知申请我得到一个错误(我看到很多这样的:D)。

Error


这是因为我们需要填写括号内的变量的控制,我们要分配给此回调。在我们的例子中$ MyControl的。所以,现在看起来是这样的。

Example 2


这意味着,当我们提出这个控制,这种控制在回调,我们可以运行一些代码。因此,让我们分配控制本集团插入插槽1中的过滤器的截止。我们这样做与set_engine_par()。


set_engine_par(


因此,第一关的参数是我们想要的目标,这是截止。这是与美元ENGINE_PAR_CUTOFF完成。这适用于所有的过滤器。您会发现所有效果参数的完整列表,根据发动机参数变量的的KSP参考手册。


set_engine_par(ENGINE_PAR_CUTOFF,


其次是价值。我们要分配的价值,我们创建了我们的UI控制旋钮的截止量。该旋钮,发送到截止,我们输入的变量名,旋钮,这是MyControl的。


set_engine_par(ENGINE_PAR_CUTOFF,MyControl的,


接下来,我们需要给它的插槽中的作用生活的方向。在第1组,这是第一组,有一组索引为0。与我们联系总是从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的截止频率是毫无意义的。那么,如何才能显示性能视图里面看到的效果呢?为此,我们可以使用:命令set_knob_label()在联同get_engine_par_display()。让我来解释一下。

set_knob_label()是用来改变一个旋钮,以同样的方式set​​_text()的值显示是用来改变其标签。我能得到的电流值的截止效应使用get_engine_par_display(),重写我们的旋钮与价值。继承人如何。


set_knob_label()具有两个参数。


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


因此,多数民众赞成好!但我有一个问题!当我点击Apply(试试这个!),或从预设的脚​​本加载或重新加载的仪器,我没有看到的价值和我的控制复位为0!!

首先看到的价值,截止当我初始化脚本时,我需要做的是复制我的set_knob_label()上的init回调。

Code Example 5


现在,我看到初始化的值。

The value appears on initialization.


但我的控制仍然被重置为0!我们可以解决这个问题,但使用另一个变量的命令make_persistent()。


设置棒

make_persistent( )存储的脚本中的变量的值,因此它可以调用初始化脚本时。在这种情况下,我们需要存储的价值$ MyControl的。


这是通过添加...


make_persistent(MyControl的)


出于init回调。

Code Example 6


我的设置将被保留,当我点击Apply。

The setting is retained


这个变量的设置将存储在脚本的时候你是否:

  • 脚本保存为预设。
  • 保存仪器多。
  • 保存您的主机DAW项目。


最后的润色

最后一步是添加正确的值机到我们的控制。截止显示单位为Hz,允许添加的控制。


我们这样做与set_knob_unit()。这有两个参数。


set_knob_unit(


该变量是$ MyControl的。


set_knob_unit(MyControl的,


使用内置的单元变量之一,在这种情况下$ KNOB_UNIT_HZ单元被设置。


set_knob_unit(MyControl的,KNOB_UNIT_HZ)


有几个这些包括为DB,MS%,八度半音。我们的初始化回调。

Code Example 7


添加于init回调给我们。

A shiny working custom UI Control for our Filter Cutoff!


有光泽的自定义UI控制我们的滤波器截止!


结论

因此,多数民众赞成它为这个系列!我希望,youve了出来的东西,也许它引发了一些兴趣的脚本与我们联系。世界上有很多我还没有涉及,但它是一个开始,我很多学习我可以向你保证!

在那之前!


快速链接

脚本介绍,与我们联系,第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!