مقدمة في البرمجة النصية في 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


يوول إشعار إذا أنا ضربت تطبيق أحصل على خطأ (I نرى الكثير من هذه:! 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-1000000. كيف لنا إذن أن عرض ما تم في رؤية تأثير الأداء داخل عرض؟ يمكننا القيام بذلك باستخدام الأمر set_knob_label () بالتعاون مع get_engine_par_display (). اسمحوا لي أن أشرح.

يستخدم set_knob_label () لتغيير عرض قيمة مقبض كثيرا في set_text بنفس الطريقة () يستخدم لتغيير تسميته. يمكنني الحصول على القيمة الحالية للتأثير القطع باستخدام get_engine_par_display () وإعادة كتابة لدينا المقابض قيمة في ذلك. هيريس كيف.


set_knob_label () واثنين من المعلمات.


set_knob_label ( ، )

وسوف يكون المتغير عنصر واجهة المستخدم أردنا تغيير أي $ 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


حتى thats جيدة! ولكن لدي مشكلة! عندما ضرب تطبيق (حاول هذا!) مرة أخرى أو كانت لتحميل البرنامج النصي من إعداد مسبق أو إعادة تحميل أداة 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


يتم الاحتفاظ الإعداد بلدي عندما ضرب تطبيق.

The setting is retained


سيتم تخزين هذا الإعداد متغير داخل النصي عند:

  • حفظ البرنامج النصي على هيئة إعداد مسبق.
  • حفظ الصك أو موضوع.
  • حفظ المشروع الخاص بك شعبة النهوض بالمرأة المضيفة.


لمسات نهائية

الخطوة الأخيرة هي إضافة وحدة القيمة الصحيحة لسيطرتنا. كما يتم عرض القطع في هرتز، ويتيح إضافة ذلك إلى السيطرة.


ونحن نفعل ذلك مع set_knob_unit (). هذه معلمتين.


set_knob_unit ( ، )


المتغير هو $ myControl.


set_knob_unit ($ myControl، )


تم تعيين وحدة باستخدام أحد المتغيرات وحدة مدمجة، في هذه الحالة KNOB_UNIT_HZ $.


set_knob_unit ($ myControl، $ KNOB_UNIT_HZ)


هناك عدد قليل من هذه الكواكب بما في ذلك، DB مللي، أوكتاف، ونصف النغمة٪. نضيف إلى هذا رد على الحرف الأول.

Code Example 7


إضافة هذا إلى رد الاتصال على الحرف الأول يقدم لنا هذا.

A shiny working custom UI Control for our Filter Cutoff!


A لامعة تعمل التحكم UI مخصصة لتصفية القطع لدينا!


اختتام

حتى thats عليه لهذا المسلسل! آمل حصلت يوف شيء من هذا، وربما لها أثار بعض الاهتمام في البرمجة النصية في KONTAKT. ثيريس الكثير I طعاما تغطية هنا ولكن في بداية و 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!