Kontakt에서 스크립팅 소개, 제 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!  

그럼 마지막으로 분할에서 우리는 컨트롤의 인터페이스에 표시했다. 그럼이 부분에서이 매개 변수에 해당 컨트롤을 연결하고 우리에게 유용 만들려고했다.

콘텐츠 작업 만들기

Kontakt에서 자동화 할 수있는 모든 매개 변수는 KSP에 의해 해결 될 수 있습니다. 이 매개 변수의 모든 주소가, 이것들이 내장 된 변수의 형태로 있습니다. Youll는 이용하면 모두 대문자 (예 : $ ENGINE_PAR_BITS) 이러한 중 하나를 알아요.

이 부분에서 잘, 우리 인터페이스 제어 할 Kontakt 내부 매개 변수에 대한 링크를 제공 그것에게 유용한 디스플레이 정보를주고 악기가 저장되고로드 될 때 또한 설정을 유지하려면 명령과 변수의 다양한 선택을 사용. 이 하나의 컨트롤이 보는 거라고하지만, 기술은 Kontakt에서 생성 모든 UI 컨트롤 youll에 적용됩니다. 시작을 할 수 있습니다!


엔진 매개 변수 명령

2 부에서 우리는 무시 효과는 MIDI 노트를 사용합니다. 하지만 사용자가 만든 컨트롤과 함께 유사한 일을하려고 했어요. 이 작업을 수행하려면 우리는 엔진 매개 변수 명령 중 하나를 (KSP 참조 설명서를 참조) set_engine_par ()를 사용합니다. 이 그룹의 다른 유용한 것들은 get_engine_par ()를 포함하고) (get_engine_par_display.

이 당신이 Kontakt 내부 매개 변수의 값을 설정하고 검색 할 수 있도록, 필터 효과에 대한 차단이라고합니다. 그러므로 우리가 마지막 부분에서 배운 것을 사용하여 컨트롤을 만들 수 있습니다. 음 또한 성능보기를합니다.

Code Example 1


필자는 Kontakt 매개 변수에 대한 전체 내부 해상도 1,000,000로 컨트롤 노브의 해상도를 설정합니다. 이 매개 변수 값의 전체 범위를 커버하려면 그 중요한이 값을 설정합니다.

그룹 1 삽입 효과의 슬롯 1에 4 극 LP 필터를로드합니다. 당신이 효과를들을 수 있도록 Kontakt로 샘플을로드 할 수 있습니다.


제어 연결

이 일을하기 위해, 우리는 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 ()는 두 개의 매개 변수가 있습니다.


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


그럼 좋은이야! 하지만 문제가 있습니다! 다시는 (이보세요!) 적용을 누르거나 사전 설정에서 스크립트를로드하거나 I의 가치를 확인하고 내 제어가 0으로 재설정됩니다 천만의 말씀! 악기를 새로 고침 할 때!

첫째로 나는이 스크립트를 초기화 할 때해야 할 모든 초기화 콜백에에 내 set_knob_label ()를 복사합니다 컷오프의 값을 볼 수 있습니다.

Code Example 5


지금은 초기화에 대한 값을 참조하십시오.

The value appears on initialization.


하지만 컨트롤은 여전히​​ 0으로 재설정되고 있습니다! 우리는 () make_persistent라는 또 다른 변수 명령을 사용하여이 일을 해결할 수 있습니다.


설정 스틱 만들기

make_persistent ( 스크립트가 초기화 될 때이 리콜 할 수 있도록)은 스크립트에서 변수의 값을 저장합니다. 이 경우에서 우리는 $ myControl의 값을 저장해야합니다.


이것은 추가하여 수행됩니다 ...


make_persistent ($ myControl)


초기화 콜백에 나가 있습니다.

Code Example 6


I 적용을 떨어졌을 때 내 설정이 유지됩니다.

The setting is retained


이 변수 설정은 스크립트 내부에 저장됩니다 때 :

  • 사전 설정으로 스크립트를 저장합니다.
  • 악기 나 멀티를 저장합니다.
  • 호스트 갈가마귀 프로젝트를 저장합니다.


마지막 손질

마지막 단계는 우리의 컨트롤에 올바른 값 단위를 추가하는 것입니다. 컷오프는 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


초기화 콜백에이을 추가하면 우리에게을 제공합니다.

A shiny working custom UI Control for our Filter Cutoff!


우리의 필터 컷오프에 대한 반짝이는 작업을 사용자 정의 UI 컨트롤!


결론

따라서이 시리즈를 위해이야! 나는 youve이 밖에서 무언가를 가지고 있고 어쩌면 그것의 Kontakt에 스크립트의 일부 관심을 촉발 바랍니다. 여기 다루지 있지만 시작하고 내가 당신을 보장 할 수 배우고 더 많은 theres havent을 많이 Theres!

그때가된다면!


빠른 연결

Kontakt에서 스크립팅 소개, 1 부

Kontakt에서 스크립팅 소개, 2 부

Kontakt에서 스크립팅 소개, 제 3 부

Kontakt에서 스크립팅 소개, 제 4 부

Kontakt에서 스크립팅 소개, 제 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!