مقدمه ای بر برنامه نویسی در 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 خطاب شده است. تمام این پارامترها را به یک آدرس، این فرم از متغیرهای ساخته شده است در آمده است. شما می دانید یکی از این به عنوان آنها تمام بزرگ (به عنوان مثال ENGINE_PAR_BITS دلار) است.

در این بخش به خوبی می شود با استفاده از یک انتخاب متنوع از دستورات و متغیر را به کنترل رابط ما یک لینک به یک پارامتر در داخل KONTAKT، از آن برخی از اطلاعات مفید نمایش می دهد و همچنین حفظ تنظیمات خود را هنگامی که دستگاه در آن ذخیره شده و پر شده است. این فقط یک شاهد برای نگاه کردن، اما تکنیک های قابل اجرا به هر UI کنترل شما ایجاد KONTAKT. درواقع شروع!


موتور دستورات پارامتر

در بخش 2، ما در کنار یک اثر با استفاده از MIDI توجه داشته باشید. قرار بود برای انجام کاری مشابه، اما با کنترل کاربر ایجاد است. برای انجام این کار استفاده از set_engine_par () است که یکی از دستورات پارامتر موتور (نگاه کنید به کتابچه راهنمای مرجع KSP). آنهایی که مفید دیگر در این گروه عبارتند از: get_engine_par () و get_engine_par_display ().

این اجازه می دهد تا شما را به مجموعه و بازیابی مقدار یک پارامتر در داخل KONTAKT، می گویند قطع برای اثر فیلتر. پس به شما اجازه می دهد تا فقط ایجاد یک کنترل با استفاده از چیزی است که ما در بخش گذشته را یاد گرفت. همچنین مشاهده عملکرد.

Code Example 1


سلام مجموعه ای از قطعنامه دستگیره کنترل به 1000000 است که دقت تصویر کامل پارامترهای KONTAKT. آن مهم برای تعیین این مقدار اگر شما می خواهید برای پوشش طیف وسیعی از ارزش پارامترها.

بار 4 قطب LP فیلتر را به شکاف 1، از گروه اثرات قرار دادن 1. شما ممکن است بخواهید یک نمونه به KONTAKT بار، بنابراین شما می توانید اثر شنیدن.


لینک کردن کنترل

را به این کار، ما باید به جای set_engine_par ما () دستور داخل یک پاسخ به تماس های خاص به نام در ui_control. مثل این به نظر می رسد.

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. 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-1،000،000. پس چگونه ما نمایش دیدن در اثر داخل مشاهده عملکرد؟ ما می توانیم با استفاده از دستور set_knob_label () در رابطه با get_engine_par_display () انجام دهد. اجازه بدهید توضیح دهم.

set_knob_label () استفاده می شود برای تغییر صفحه نمایش ارزش یک دستگیره بسیار در set_text به همان شیوه () استفاده می شود برای تغییر برچسب آن. من می توانم ارزش فعلی از اثر قطع با استفاده از get_engine_par_display () و ارزش خود بازنویسی دستگیره با آن. اینجا چگونه.


set_knob_label () دارای دو پارامتر است.


set_knob_label ( ، )

این متغیر خواهد بود عنصر UI ما می خواهیم برای تغییر یعنی دلار myControl.


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


پس سلام خوب! اما من یک مشکل! وقتی که من درخواست (سعی کنید این!) دوباره بارگذاری اسکریپت از پیش تعیین شده و یا بازنگری ابزار من اصلا ارزش و کنترل تنظیم مجدد به 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


تنظیمات من این است که باقی می ماند وقتی که من درخواست شده است.

The setting is retained


این تنظیمات متغیر خواهد شد در داخل اسکریپت ذخیره می شود زمانی که شما:

  • ذخیره یک اسکریپت به عنوان یک پیش تعیین شده است.
  • ذخیره ساز یا چند.
  • ذخیره پروژه DAW میزبان خود را.


لمس نهایی

گام نهایی این است که اضافه کردن مقدار صحیح واحد کنترل ما است. همانطور که قطع شده است در هرتز نمایش داده می شود، به شما اجازه می دهد تا اضافه کنید که به کنترل.


ما این کار را با set_knob_unit (). این دو پارامتر می باشد.


set_knob_unit ( ، )


متغیر $ myControl است.


set_knob_unit ($ myControl، )


این واحد قرار است با استفاده از یکی از متغیرهای واحد ساخته شده است در، در این مورد KNOB_UNIT_HZ دلار است.


set_knob_unit ($ myControl، KNOB_UNIT_HZ دلار)


چند تن از این عزیزان از جمله DB، کارشناسی ارشد، درصد، اکتاو و نیمگام وجود دارد. این اضافه می کنیم تا در پاسخ به تماس init انجام است.

Code Example 7


افزودن به این در پاسخ به تماس init انجام می دهد.

A shiny working custom UI Control for our Filter Cutoff!


براق UI کنترل های سفارشی برای قطع فیلتر ما!


نتیجه

پس از آن سلام برای این سری! من امیدوارم که youve کردم چیزی از این و شاید موجب برخی از علاقه به برنامه نویسی در KONTAKT. انگار زیادی I havent پوشش داده شده اما آن را شروع و انگار خیلی بیشتر به یاد بگیرند که من می توانم به شما اطمینان می دهم!

تا آن زمان!


لینک های سریع

مقدمه ای بر برنامه نویسی در 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!