Introduction To Scripting in Kontakt, Teil 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!  

So in der letzten Rate haben wir ein Steuerelement in unsere Schnittstelle erscheinen. Nun, in diesem Teil würden hook up, dass die Kontrolle auf einen Parameter und machen es für uns nützlich.

Making Stuff Arbeit

Jeder Parameter, der in Kontakt automatisiert werden kann, kann von der KSP angesprochen werden. Alle diese Parameter haben eine Adresse, diese in Form der eingebauten Variablen kommen. Youll wissen, eine von ihnen als theyre Großbuchstaben (z. B. $ ENGINE_PAR_BITS).

In diesem Teil auch verwenden eine abwechslungsreiche Auswahl von Befehlen und Variablen, um unseren Anpaßsteuerung einen Link zu einem Parameter innerhalb Kontakt, geben Sie ihm ein paar nützliche Anzeige Infos und behalten auch ihre Einstellungen, wenn das Gerät gespeichert und geladen. Dies ist nur eine Kontrolle gingen zu sehen, aber die Techniken sind für jede UI-Steuerelement youll zu schaffen, in Kontakt. Lets start!


Motor Parameter Befehle

In Teil 2 haben wir umgangen ein Effekt mit einer MIDI-Note. Wollten etwas Ähnliches hier zu tun, sondern mit einem Benutzer erstellt Kontrolle. Dazu verwenden wir set_engine_par (), die eine der Motor Parameter Commands (siehe KSP Reference Manual) ist. Weitere nützliche diejenigen in dieser Gruppe gehören get_engine_par () und get_engine_par_display ().

Diese erlauben Ihnen zu setzen und rufen Sie den Wert eines Parameters im Inneren Kontakt, sagen die Cutoff für eine Filterwirkung. So können einfach eine Steuerung über das, was wir im letzten Teil gelernt. Nun auch eine Performance View.

Code Example 1


Ive die Auflösung der Drehregler bis 1000000, die die volle Auflösung für Kontakt-Parameter ist. Es ist wichtig zu setzen Sie diesen Wert, wenn Sie das gesamte Spektrum der Parameter-Wert abdecken wollen.

Legen Sie eine 4-polige LP Filter in Slot 1 der Gruppe 1 Insert-Effekte. Vielleicht möchten Sie eine Probe in Kontakt zu laden, so dass Sie den Effekt hören können.


Die Verknüpfung der Steuerung

Um diese Arbeit zu machen, müssen wir unsere set_engine_par ()-Befehl in einem speziellen Rückruf bei ui_control genannt platzieren. Es sieht so aus.

ui_control


Youll kündigen, wenn ich getroffen Übernehmen Ich erhalte eine Fehlermeldung (ich sehe eine Menge von diesen: D).

Error


Dies ist, weil wir die Klammern mit der Variablen der Steuerung wollen wir zu diesem Rückruf zuzuweisen ausfüllen müssen. In unserem Fall $ myControl. So, jetzt sieht es so aus.

Example 2


Dabei bedeutet, wenn wir diese Kontrolle übernehmen wir etwas Code innerhalb des Rückrufs speziell für diese Kontrolle ausführen können bewegen. So können ordnen diese Steuerung der Cutoff der Filter in Slot 1 der Gruppe Inserts. Wir tun dies mit set_engine_par ().


set_engine_par ( , , , , )


Also erstmal off ist der Parameter wollen wir gezielt das ist Cutoff. Dies wird mit $ ENGINE_PAR_CUTOFF getan. Dies funktioniert mit allen Filtern. Youll finden eine komplette Liste aller Effekte Parameter in der KSP Reference Manual unter Motor Parameter Variablen.


set_engine_par ($ ENGINE_PAR_CUTOFF, , , , )


Weiter ist der Wert. Wir wollen den Wert unseres UI Control Knob, dass wir die Cutoff Höhe entstanden zuweisen. Um den Wert dieser Regler auf die Cutoff senden wir Eingabe der Variablennamen für diesen Drehregler die $ myControl ist.


set_engine_par ($ ENGINE_PAR_CUTOFF, $ myControl, , , )


Als nächstes müssen wir ihm Richtungen zu den Schlitz, wo der Effekt lebt benötigen. Seine in der Gruppe 1, die der ersten Gruppe so hat eine Gruppe von 0-Index. Kontakt zählt immer von 0 für Gruppen, Zonen und Slots.


set_engine_par ($ ENGINE_PAR_CUTOFF, $ myControl, 0, , )


Der Schlitz Index des ersten Effekt wieder 0.


set_engine_par ($ ENGINE_PAR_CUTOFF, $ myControl, 0, 0, )


Der letzte Wert generisch ist für die Ausrichtung Instrument Inserts (0) oder Send Inserts (1). Da keiner von ihnen anwendbar sind wir -1.


set_engine_par ($ ENGINE_PAR_CUTOFF, $ myControl, 0, 0, -1)


Wir haben jetzt legen diese zwischen unserem ui_control Rückruf.

Code Example 3


Nun, wenn wir $ myControl bewegen Sie den Cutoff folgen seine Position! Brilliant!

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


Einstellen der Display-Information

Im Moment wurden der Wert in der Performance View sehen keinen Sinn in Bezug auf die Cutoff-Frequenz des Effekts als Satz auf eine Zahl zwischen 1-1000000. Wie können wir also zeigen, was waren in der Wirkung in der Performance View sehen? Wir können dies tun, indem Sie den Befehl set_knob_label () in Verbindung mit get_engine_par_display (). Lassen Sie mich erklären.

set_knob_label () wird verwendet, um den Wert Anzeige eines Knopfes viel ändern in der gleichen Weise SET_TEXT () wird verwendet, um das Etikett zu ändern. Ich kann den aktuellen Wert des Cutoff-Effekt mit get_engine_par_display () und schreiben unseren Reglern Wert zu übertragen. Heres how.


set_knob_label () hat zwei Parameter.


set_knob_label ( , )

Die Variable wird das UI-Element wollen wir nämlich ändern $ myControl sein.


set_knob_label ($ myControl, )


Der Text wird der angezeigte Wert aus dem Cutoff-Parameter sein.

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


Wir bekommen diese mit get_engine_par_display (). Das Format ist ähnlich dem, was wir verwendet set_engine_par ().


get_engine_par_disp ( , , , )


Was für Cutoff in der Gruppe 1, Slot 1 ...


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


Dieses Stück Code geht in die


Example Code 4


Nun, wenn ich die Kontrolle zu verschieben bekomme ich den Wert des Cutoff in der Wirkung.

The knob controls the Cutoff


Also das ist gut! Aber ich habe ein Problem! Wenn ich mich bewerben (versuchen Sie dies!) Traf erneut oder waren, um das Skript von einem Preset zu laden oder laden Sie das Instrument I dont sehen den Wert und die meiner Kontrolle wird auf 0 zurückgesetzt!

Erstens, um den Wert des Cutoff als ich das Drehbuch zu initialisieren alles, was ich tun müssen, ist Kopieren meiner set_knob_label () in die auf init Rückruf.

Code Example 5


Jetzt sehe ich den Wert bei der Initialisierung.

The value appears on initialization.


Aber meiner Kontrolle wird noch auf 0 zurückgesetzt! Wir können dies aber über eine andere Variable Befehl namens make_persistent () zu lösen.


Machen Settings-Stick

make_persistent ( ) Speichert den Wert einer Variable in dem Skript so kann es abgerufen, wenn das Skript initialisiert werden. In diesem Fall müssen wir den Wert von $ myControl speichern.


Dies geschieht, indem getan ...


make_persistent ($ myControl)


auf init Rückruf aus.

Code Example 6


Meine Einstellung bleibt beim bewerbe ich mich getroffen.

The setting is retained


Diese Variable Einstellung wird im Skript gespeichert, wenn Sie:

  • Speichern Sie ein Skript als Voreinstellung.
  • Speichern Sie das Instrument oder Multi.
  • Speichern Sie Ihre DAW-Projekt.


Final Touches

Der letzte Schritt ist, um den korrekten Wert Einheit unserer Kontrolle hinzuzufügen. Da die Cutoff in Hz angezeigt wird, können hinzufügen, dass an die Steuerung.


Wir tun dies mit set_knob_unit (). Dies hat zwei Parameter.


set_knob_unit ( , )


Die Variable ist $ myControl.


set_knob_unit ($ myControl, )


Das Gerät wird mit einem der eingebauten Unit-Variablen, in diesem Fall $ KNOB_UNIT_HZ.


set_knob_unit ($ myControl, $ KNOB_UNIT_HZ)


Es gibt ein paar von diesen ua für DB, ms,%, Oktav-und Halbton. Wir fügen dies der am init Rückruf.

Code Example 7


Addiert man diese auf die am init Rückruf uns dies.

A shiny working custom UI Control for our Filter Cutoff!


Eine glänzende arbeiten benutzerdefinierte UI Control für unsere Filter Cutoff!


Abschluss

So das wars für diese Serie! Ich hoffe, youve bekam etwas aus diesem und vielleicht seine löste ein gewisses Interesse an Scripting in Kontakt. Theres viel ich haben hier aber abgedeckt sein ein Anfang und es gibt noch viel mehr zu lernen, kann ich Ihnen versichern!

Bis dann!


Nützliche Links

Introduction To Scripting in Kontakt, Teil 1

Introduction To Scripting in Kontakt, Teil 2

Introduction To Scripting in Kontakt, Teil 3

Introduction To Scripting in Kontakt, Teil 4

Introduction To Scripting in Kontakt, Teil 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!