Введение в сценарии в 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. Все эти параметры имеют адреса, они приходят в виде встроенных переменных. Вы будете знать один из них, как Theyre все прописные (например, $ ENGINE_PAR_BITS).

В этой части также использовать разнообразный выбор команды и переменные, чтобы дать нашим интерфейс управления ссылка на параметр в Kontakt, дать ему некоторые полезные информационный дисплей, а также сохранить свои настройки, когда инструмент сохранения и загрузки. Это лишь один из контрольных будем смотреть на, но эти методы применимы к каждому управления пользовательского интерфейса вы будете создавать в Kontakt. Давайте начнем!


Команды параметров двигателя

В части 2, мы обошли эффекта с помощью MIDI ноты. Собирались сделать нечто подобное здесь, но с пользователем, созданным управления. Для этого мы используем set_engine_par (), которая является одной из команд параметров двигателя (см. KSP Reference Manual). Другие полезные в эту группу включают get_engine_par () и get_engine_par_display ().

Это позволит вам установить и получить значение параметра внутри Kontakt, скажем среза для фильтра эффект. Так что давайте просто создать элемент управления с помощью того, что мы узнали в последней части. Ну и сделать Performance View.

Code Example 1


Ive установить разрешение ручку управления до 1000000 которой является полное внутреннее разрешение для параметров Kontakt. Важно, чтобы установить это значение, если вы хотите, чтобы охватить весь диапазон значения параметров.

Загрузите 4-полюсный LP фильтр в слот 1 группы 1 эффект вставки. Вы можете загрузить образец в Kontakt так что вы можете услышать эффект.


Образцы управления

Чтобы сделать эту работу, мы должны разместить нашу set_engine_par () команды в специальный обратный призвал ui_control. Выглядит это примерно так.

ui_control


Вы будете уведомления, если я ударил Применить я получаю ошибку (я вижу много таких: D).

Error


Это потому, что мы должны заполнить кронштейнов с переменной управления мы хотим назначить на эту обратного вызова. В нашем случае $ MyControl. Так что теперь это выглядит так.

Example 2


Делая это означает, что всякий раз, когда мы перейдем этот контроль можно запустить код внутри функции обратного вызова, характерные для данного элемента управления. Так позволяет назначить этот элемент управления для среза фильтра в Slot 1 группы вкладышами. Мы делаем это с set_engine_par ().


set_engine_par ( , , , , )


Так Прежде всего это параметр, который мы хотим цель, которая является Cutoff. Это делается с $ ENGINE_PAR_CUTOFF. Это работает со всеми фильтрами. Вы будете находить полный список всех параметров эффектов в 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 будет следовать своей позиции! Brilliant!

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


Настройка отображения информации

На данный момент, стоимость видели в исполнении View не имеет никакого смысла в связи с частотой среза эффект, как множество ее в ряд между 1-1000000. Так как же нам показать то, что видели в действии внутри Performance View? Мы можем сделать это с помощью команды set_knob_label () в сочетании с get_engine_par_display (). Позвольте мне объяснить.

set_knob_label () используется для изменения значения отображения ручку во многом таким же способом set_text () используется для изменения его этикетке. Я могу получить текущее значение Cutoff эффект, используя 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, Slot 1 является ...


get_engine_par_disp ($ ENGINE_PAR_CUTOFF, 0, 0, -1)


Этот кусок кода, переходит в


Example Code 4


Теперь, когда я переместить элемент управления я получаю значение Cutoff внутрь эффект.

The knob controls the Cutoff


Так вот хорошо! Но у меня есть проблема! Когда я попала Применить (попробуй это!) Еще раз или были, чтобы загрузить скрипт из предустановленных или перезагрузить прибор я не вижу ценность и моего контроля сбрасывается в 0!

Во-первых, чтобы увидеть значение Cutoff, когда я инициализации сценария все, что нужно сделать, это скопировать мое 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


Эта переменная настройки будут храниться внутри сценария, когда вы:

  • Сохраните сценарий как предустановку.
  • Сохранить инструмента или Multi.
  • Сохранить принимающей DAW проекта.


Последние штрихи

Последним шагом является добавление правильного стоимости единицы к нашим контролем. Как Cutoff отображается в Гц, позволяющий добавить, что с контролем.


Мы делаем это с 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!


Блестящие рабочие пользовательский интерфейс управления для нашей Filter Cutoff!


Заключение

Так вот он для этой серии! Я надеюсь, что Youve получил что-то из этого и, возможно, ее вызвала некоторый интерес в сценарии в Kontakt. 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!