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 theyre सभी अपरकेस (उदाहरण के ENGINE_PAR_BITS डॉलर) के रूप में इन के बारे में पता है.

इस भाग में अच्छी तरह से आदेश और चर की एक विविध चयन हमारे इंटरफ़ेस नियंत्रण Kontakt अंदर एक पैरामीटर के लिए एक लिंक दे, यह कुछ उपयोगी प्रदर्शन की जानकारी दे और भी इसकी सेटिंग्स को बनाए रखने के लिए जब साधन बचाया और भरी हुई है का उपयोग कर सकता है. यह सिर्फ एक नियंत्रण को देखने के लिए जा रहे थे, लेकिन इस तकनीक हर UI नियंत्रण youll के लिए लागू Kontakt में बनाने के लिए कर रहे हैं. शुरू कर देता है!


इंजन पैरामीटर कमानों

भाग 2 में, हम को नजरअंदाज कर एक प्रभाव एक मिडी नोट का उपयोग. लेकिन एक बनाया उपयोगकर्ता नियंत्रण के साथ कुछ इसी तरह यहाँ करने के लिए जा रहा है. ऐसा करने के लिए हम (set_engine_par) का उपयोग करें जो इंजन पैरामीटर कमानों के (KSP संदर्भ मैनुअल देखें) में से एक है. इस समूह में अन्य उपयोगी लोगों (get_engine_par शामिल है) और (get_engine_par_display).

ये आप सेट और Kontakt अंदर एक पैरामीटर का मान प्राप्त करने की अनुमति, एक फिल्टर प्रभाव के लिए Cutoff कहते हैं. तो सिर्फ एक का उपयोग कर हम क्या पिछले भाग में सीखा नियंत्रण बनाने की सुविधा देता है. वैसे भी एक प्रदर्शन देखें.

Code Example 1


Ive 1000000 जो Kontakt मापदंडों के लिए पूर्ण आंतरिक संकल्प नियंत्रण घुंडी के संकल्प सेट. यह महत्वपूर्ण है इस मूल्य निर्धारित करने के लिए अगर आप मापदंडों मूल्य की पूरी रेंज को कवर करना चाहते हैं.

समूह 1 डालने प्रभाव स्लॉट 1 में एक 4 पोल एल.पी. फिल्टर लोड करें. आप Kontakt में लोड नमूना तो आप प्रभाव सुन सकते हैं चाहते हो सकता है.


नियंत्रण जोड़ने

यह काम करना है, हम एक विशेष ui_control पर बुलाया कॉलबैक अंदर हमारे set_engine_par () आदेश जगह की जरूरत है. यह इस तरह दिखता है.

ui_control


Youll नोटिस अगर मैं मारा लागू मैं एक त्रुटि (मैं इनमें से एक बहुत देखते हैं: डी) मिलता है.

Error


यह इसलिए है क्योंकि हम नियंत्रण हम इस कॉलबैक असाइन करना चाहते हैं चर के साथ कोष्ठक को भरने की जरूरत है. हमारे $ myControl मामले में. तो अब यह इस तरह दिखता है.

Example 2


यह कर का मतलब है कि जब भी हम इस पर नियंत्रण हम इस पर नियंत्रण के लिए विशिष्ट कॉलबैक अंदर कुछ कोड चला सकते हैं चाल. देता है तो समूह आवेषण के 1 स्लॉट में फ़िल्टर के cutoff इस पर नियंत्रण प्रदान. हम set_engine_par () के साथ करते हैं.


set_engine_par ( , , , , )


तो पहले से पैरामीटर हम लक्ष्य जो Cutoff है चाहता हूँ. यह $ ENGINE_PAR_CUTOFF के साथ किया जाता है. यह सभी फिल्टर के साथ काम करता है. Youll इंजन पैरामीटर चर के तहत KSP संदर्भ मैनुअल में सभी प्रभाव मापदंडों की एक पूरी सूची मिल.


set_engine_par ($ ENGINE_PAR_CUTOFF, , , , )


अगले मूल्य है. हम हमारे यूआई नियंत्रण घुंडी के मूल्य कि हम Cutoff राशि के लिए बनाया असाइन करना चाहते हैं. Cutoff इस घुंडी के मूल्य हम कि घुंडी जो $ 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 चाल Cutoff अपनी स्थिति का पालन करेंगे! बहुत खूब!

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


जानकारी प्रदर्शित की स्थापना

फिलहाल, मूल्य प्रदर्शन दृश्य में देख रहे थे 1-1000000 के बीच एक नंबर करने के लिए सेट के रूप में प्रभाव के Cutoff आवृत्ति के संबंध में कोई मतलब नहीं है. तो हम कैसे प्रदर्शित करते हैं कि प्रदर्शन देखें अंदर प्रभाव में देख रहे थे? हम (get_engine_par_display) के साथ संयोजन के रूप में आदेश (set_knob_label) का उपयोग कर सकते हैं. मुझे समझाने की.

(set_knob_label) उसी तरह (set_text) में एक दस्ता के मूल्य प्रदर्शन बहुत बदल जाता है उसके लेबल बदलने के लिए इस्तेमाल किया है. मैं Cutoff get_engine_par_display () का उपयोग प्रभाव के वर्तमान मूल्य प्राप्त कर सकते हैं और उस के साथ हमारे knobs मूल्य फिर से लिखना. कैसे heres.


(set_knob_label) दो मापदंडों है.


set_knob_label ( , )

चर UI तत्व हम अर्थात् $ myControl बदलना चाहते हो जाएगा.


set_knob_label ($ myControl, )


पाठ Cutoff पैरामीटर बाहर प्रदर्शन मूल्य होगा.

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


हम इस का उपयोग कर (get_engine_par_display) मिलता है. प्रारूप क्या हम set_engine_par () में इस्तेमाल करने के लिए समान है.


get_engine_par_disp ( , , , )


जो समूह 1 में cutoff के लिए, 1 स्लॉट है ...


get_engine_par_disp ($ ENGINE_PAR_CUTOFF, 0, 0 -1)


कोड का यह हिस्सा में चला जाता है


Example Code 4


अब जब मैं नियंत्रण चाल मैं प्रभाव अंदर Cutoff के मूल्य मिलता है.

The knob controls the Cutoff


तो अच्छा thats! लेकिन मैं एक समस्या है! जब मैं लागू (इस कोशिश!) फिर मारा या एक पूर्व निर्धारित स्क्रिप्ट लोड या साधन मैं मूल्य देखने के लिए और मेरे नियंत्रण 0 से रीसेट है न! पुनः लोड थे!

सबसे पहले जब मैंने स्क्रिप्ट इनिशियलाइज़ सभी मैं क्या करने की जरूरत है में init कॉलबैक पर मेरे set_knob_label () की नकल Cutoff के मूल्य देखने के लिए.

Code Example 5


अब मैं initialization मूल्य पर देख.

The value appears on initialization.


लेकिन मेरे नियंत्रण अभी भी 0 से रीसेट किया जा रहा है! हम एक और चर (make_persistent) नामक आदेश का उपयोग हालांकि इस को हल कर सकते हैं.


सेटिंग्स छड़ी

make_persistent ( ) स्क्रिप्ट में एक चर के मूल्य को जमा करता है तो यह जब स्क्रिप्ट initialized है वापस बुलाया जा सकता है. इस मामले में हम $ myControl के मूल्य की दुकान की जरूरत है.


यह जोड़कर किया जाता है ...


make_persistent ($ myControl)


init कॉलबैक पर बाहर.

Code Example 6


मेरा सेटिंग जब मैं लागू मारा बरकरार रखा है.

The setting is retained


यह चर सेटिंग स्क्रिप्ट के अंदर संग्रहित किया जाएगा जब आप:

  • एक पूर्व निर्धारित के रूप में एक स्क्रिप्ट सहेजें.
  • साधन या मल्टी सहेजें.
  • अपने मेजबान काला कौवा परियोजना को बचाने.


अंतिम रूप

अंतिम चरण के लिए हमारे नियंत्रण के लिए सही मूल्य इकाई जोड़ने के लिए है. के रूप में cutoff हर्ट्ज में प्रदर्शित किया जाता है, नियंत्रित करने के लिए कि जोड़ें.


हम set_knob_unit () के साथ करते हैं. यह दो मापदंडों है.


set_knob_unit ( , )


चर $ myControl है.


set_knob_unit ($ myControl, )


इकाई एक इकाई में निर्मित चर का उपयोग करते हुए इस मामले में $ KNOB_UNIT_HZ में सेट कर दिया जाता है.


set_knob_unit ($ myControl, KNOB_UNIT_HZ $)


सहित DB, एमएस,% सप्टक, और semitone के लिए इन लोगों में से कुछ कर रहे हैं. हम init कॉलबैक पर इस जोड़ें.

Code Example 7


Init कॉलबैक पर इस जोड़ना हमें दे.

A shiny working custom UI Control for our Filter Cutoff!


हमारे फ़िल्टर cutoff के लिए एक चमकदार काम कस्टम UI नियंत्रण!


निष्कर्ष

तो यह इस श्रृंखला के लिए thats! मुझे आशा है कि 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!