Così in ultima rata abbiamo fatto un controllo appaiono nella nostra interfaccia. Bene in questa parte stavano per collegare il controllo di un parametro e lo rendono utile per noi.
Rendere lavoro Stuff
Ogni parametro che può essere automatizzato in Kontakt può essere indirizzato dal KSP. Tutti questi parametri hanno un indirizzo, questi sono disponibili in forma di variabili incorporate. Youll conoscere uno di questi come theyre tutte le lettere maiuscole (ad esempio $ ENGINE_PAR_BITS).
In questa parte e utilizzare una vasta scelta di comandi e variabili di dare il nostro controllo l'interfaccia di un collegamento a un parametro all'interno di Kontakt, dare alcune informazioni utili display e anche mantenere le impostazioni quando lo strumento viene salvata e caricata. Questo è solo un controllo sono stati andando a guardare, ma le tecniche sono applicabili a ogni controllo dell'interfaccia utente youll creare in Kontakt. Consente di iniziare!
Parametri del motore Comandi
Nella parte 2, abbiamo escluso un effetto con una nota MIDI. Intenzione di fare qualcosa di simile qui, ma con un controllo utente creato. Per fare questo usiamo set_engine_par (), che è uno dei comandi dei parametri del motore (vedi KSP Manuale di riferimento). Altre quelli utili in questo gruppo includono get_engine_par () e get_engine_par_display ().
Questi consentono di impostare e recuperare il valore di un parametro all'interno di Kontakt, dicono che il taglio per un effetto di filtro. Quindi, consente di creare solo un controllo utilizzando quello che abbiamo imparato nell'ultima parte. Beh, anche fare una vista delle prestazioni.
Ive impostare la risoluzione della manopola di controllo a 1000000, che è la risoluzione interno dei parametri di Kontakt. E 'importante impostare questo valore se si desidera coprire l'intera gamma del valore dei parametri.
Caricare un 4 poli filtro LP nello slot 1 degli effetti insert Gruppo 1. Si potrebbe desiderare di caricare un campione in Kontakt in modo da poter sentire l'effetto.
Collegamento Il Controllo
Per fare questo lavoro, abbiamo bisogno di porre la nostra set_engine_par () all'interno di un comando speciale chiamato callback su ui_control. Ecco come si presenta.
Avviso Youll se ho colpito Applicare ottengo un errore (vedo un sacco di questi: D).
Questo perché abbiamo bisogno di riempire le staffe con la variabile del controllo che vogliamo assegnare al callback. Nel nostro caso $ myControl. Così ora sembra che questo.
Fare questo significa che ogni volta che ci muoviamo questo controllo è possibile eseguire del codice all'interno della callback specifico a questo controllo. Quindi, consente di assegnare questo controllo per il cutoff del filtro nello slot 1 degli inserti del Gruppo. Lo facciamo con set_engine_par ().
set_engine_par (
Quindi, prima di sconto è il parametro che vogliamo colpire, che è di taglio. Questo viene fatto con $ ENGINE_PAR_CUTOFF. Questo funziona con tutti i filtri. Youll trovare un elenco completo di tutti i parametri degli effetti nel manuale di riferimento KSP sotto Variabili di parametri del motore.
set_engine_par ($ ENGINE_PAR_CUTOFF,
La prossima è il valore. Vogliamo assegnare il valore della nostra manopola di controllo dell'interfaccia utente che abbiamo creato per l'importo di taglio. Per inviare il valore di questa manopola per il taglio che inserire il nome della variabile per quella manopola che è di $ myControl.
set_engine_par ($ ENGINE_PAR_CUTOFF, $ myControl,
Poi abbiamo bisogno di dare indicazioni per lo slot in cui l'effetto vive. Sua nel gruppo 1, che è il primo gruppo ha quindi un indice di gruppo 0. Kontakt conta sempre tra 0 e per gruppi, zone e slot.
set_engine_par ($ ENGINE_PAR_CUTOFF, $ myControl, 0,
L'indice di slot del primo effetto è ancora 0.
set_engine_par ($ ENGINE_PAR_CUTOFF, $ myControl, 0, 0,
Il generico ultimo valore è per il targeting Inserti Strumenti (0) o Inserti di invio (1). Dal momento che nessuno di questi si applicano usiamo -1.
set_engine_par ($ ENGINE_PAR_CUTOFF, $ myControl, 0, 0, -1)
Ora collocare questo tra il nostro callback ui_control su.
Ora, quando ci muoviamo $ myControl il taglio seguirà la sua posizione! Brilliant!
Impostazione delle informazioni sul display
Al momento, il valore vedevano nella vista delle prestazioni non ha senso in relazione alla frequenza di taglio del effetto come il suo insieme di un numero compreso tra 1-1000000. Quindi, come facciamo a visualizzare ciò che stavano vedendo l'effetto all'interno della vista delle prestazioni? Possiamo farlo utilizzando il comando set_knob_label () in combinato disposto con get_engine_par_display (). Mi spiego meglio.
set_knob_label () viene utilizzato per modificare la visualizzazione del valore di una manopola molto nel set_text stesso modo () viene utilizzato per cambiare l'etichetta. Posso ottenere il valore corrente degli effetti di taglio utilizzando get_engine_par_display () e riscrivere il nostro valore manopole con quello. Heres come.
set_knob_label () ha due parametri.
set_knob_label (
La variabile sarà l'elemento dell'interfaccia utente che vuole cambiare e cioè $ myControl.
set_knob_label ($ myControl,
Il testo sarà il valore display spento il parametro Cutoff.
Otteniamo questo get_engine_par_display utilizzando (). Il formato è simile a quello che abbiamo usato in set_engine_par ().
get_engine_par_disp (
Che per Cutoff nel Gruppo 1, Slot 1 è ...
get_engine_par_disp ($ ENGINE_PAR_CUTOFF, 0, 0, -1)
Questo pezzo di codice va in
Ora, quando mi muovo il controllo che ottenere il valore del taglio interno l'effetto.
Questo è così buono! Ma ho un problema! Quando mi ha colpito Applica (provare questo!) Di nuovo o erano per caricare lo script da un preset o ricaricare lo strumento I dont vedere il valore e il mio controllo è resettato a 0!
In primo luogo per vedere il valore del taglio quando ho inizializzare lo script di tutto quello che devi fare è copiare il mio set_knob_label () nella su richiamata init.
Ora vedo il valore di inizializzazione.
Ma il mio controllo è ancora in fase reimpostato a 0! Siamo in grado di risolvere questo problema se utilizzare un altro comando variabile chiamata make_persistent ().
Fai Stick Impostazioni
make_persistent (
Questo viene fatto aggiungendo ...
make_persistent ($ myControl)
Out per la richiamata init.
La mia impostazione rimane anche quando ho colpito Applica.
Questa impostazione variabile verrà memorizzato all'interno dello script quando:
- Salvare uno script come preset.
- Salvare lo strumento o Multi.
- Salvare il progetto DAW host.
Ritocchi finali
Il passo finale è quello di aggiungere l'unità corretta valore al nostro controllo. Come il Cutoff viene visualizzata in Hz, che consente di aggiungere al controllo.
Lo facciamo con set_knob_unit (). Questo ha due parametri.
set_knob_unit (
La variabile è $ myControl.
set_knob_unit ($ myControl,
L'unità è impostata utilizzando uno dei built-in variabili Unit, in questo caso $ KNOB_UNIT_HZ.
set_knob_unit ($ myControl, $ KNOB_UNIT_HZ)
Ci sono alcuni di questi compresi quelli per DB, ms,%, Octave e semitono. Ci aggiungi questo a la richiamata init.
L'aggiunta di questo al di callback init ci danno questo.
Un brillante lavoro di controllo di interfaccia utente personalizzata per il nostro taglio del filtro!
Conclusione
Questo vuol dire che per questa serie! Spero che youve ha ottenuto qualcosa di questo e forse il suo suscitato un certo interesse per lo scripting in Kontakt. Theres un sacco I havent trattato qui, ma è un inizio e c'è ancora molto da imparare vi posso assicurare!
Fino ad allora!
Quick Links
Introduzione allo scripting in Kontakt, parte 1
Introduzione allo scripting in Kontakt, parte 2
Introduzione allo scripting in Kontakt, parte 3
Introduzione allo scripting in Kontakt, parte 4
Introduzione allo scripting in Kontakt, parte 5
Discussion
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
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!
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!
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?
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!