Introducción a Guiones en Kontakt, Parte 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!  

Así, en el último tramo hemos hecho un control aparecen en nuestra interfaz. Bueno, en esta parte se va a conectar ese control a un parámetro y que sea útil para nosotros.

Hacer que los Stuff

Cada parámetro que se puede automatizar en Kontakt pueden ser abordadas por la KSP. Todos estos parámetros tienen una dirección, estos vienen en la forma de las variables incorporados. Youll conocer uno de estos como ayúdales todo en mayúsculas (por ejemplo, $ ENGINE_PAR_BITS).

En esta parte también se utiliza una variada selección de comandos y variables para dar a nuestro control de interfaz de un enlace a un parámetro dentro de Kontakt, le dan algo de información útil y de visualización también conservan su configuración cuando el instrumento se guarda y se carga. Este es sólo uno de control se va a ver, pero las técnicas son aplicables a todos los interminables IU crear el control en Kontakt. Vamos a empezar!


Comandos de parámetros del motor

En la parte 2, se omite un efecto mediante una nota MIDI. ¿Se va a hacer algo similar aquí, pero con un control de usuario creado. Para ello usamos set_engine_par (), que es uno de los comandos de parámetros del motor (ver KSP Manual de Referencia). Otros los útiles de este grupo incluyen get_engine_par () y get_engine_par_display ().

Estos le permiten establecer y recuperar el valor de un parámetro dentro de Kontakt, dicen que el límite para un efecto de filtro. Así que vamos a crear sólo un control utilizando lo que aprendimos en la última parte. Bueno también hacer una Vista de rendimiento.

Code Example 1


Ive establecer la resolución de la perilla de control a 1000000, que es la máxima resolución interna de los parámetros de Kontakt. Es importante establecer este valor si desea cubrir todo el rango del valor de los parámetros.

Cargar un 4-Pole LP filtro en la ranura 1 de los efectos de inserción del grupo 1. Es posible que desee cargar una muestra en Kontakt para que pueda escuchar el efecto.


Enlazando control

Para que esto funcione, tenemos que poner nuestra set_engine_par () comando dentro de una devolución de llamada especial llamado en ui_control. Se parece a esto.

ui_control


Youll aviso si golpeo Aplicar me sale un error (veo un montón de ellos: D).

Error


Esto se debe a que tenemos que llenar los soportes con la variable del control que desea asignar a esta devolución de llamada. En nuestro caso $ myControl. Así que ahora se ve así.

Example 2


Hacer esto significa que cada vez que mueva este control podemos ejecutar algún código dentro de la devolución de llamada específica a este control. Así que vamos a asignar este control a la corte del filtro en la ranura 1 de las inserciones del Grupo. Hacemos esto con set_engine_par ().


set_engine_par ( , , , , )


Así que primero fuera es el parámetro que queremos apuntar que es de corte. Esto se hace con $ ENGINE_PAR_CUTOFF. Esto funciona con todos los filtros. Usted encontrará una lista completa de todos los parámetros de efectos en el Manual de Referencia KSP en Variables de parámetros del motor.


set_engine_par ($ ENGINE_PAR_CUTOFF, , , , )


El siguiente es el valor. Queremos asignar el valor de nuestra perilla de control de interfaz de usuario que hemos creado con la cantidad de corte. Para enviar el valor de este mando a la corte que introducir el nombre de la variable para que el mando que es de $ myControl.


set_engine_par ($ ENGINE_PAR_CUTOFF, $ myControl, , , )


Lo siguiente que necesitamos para dar instrucciones a la ranura donde el efecto vive. Su en el Grupo 1, que es el primer grupo por lo que tiene un índice de grupo de 0. Kontakt siempre cuenta desde 0 para los grupos, las zonas y franjas horarias.


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


El índice de la ranura del primer efecto es de nuevo 0.


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


El último valor es genérico para la orientación Inserta Instrumento (0) Enviar o Encartes (1). Dado que ninguno de estos son aplicables usamos -1.


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


Ahora coloque esta entre nuestro callback ui_control sucesivamente.

Code Example 3


Ahora, cuando nos movemos $ myControl la Corte seguirá su posición! Brilliant!

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


Ajuste de la pantalla de información

Por el momento, el valor se ve en la vista de rendimiento no tiene sentido en relación a la frecuencia de corte del efecto como se establece en un número entre 1-1000000. ¿Cómo podemos mostrar lo que estaban viendo en el efecto dentro de la vista de rendimiento? Podemos hacer esto usando el comando set_knob_label () en conjunto con get_engine_par_display (). Me explico.

set_knob_label () se utiliza para cambiar la visualización del valor de una perilla mucho en la misma manera set_text () se utiliza para cambiar su etiqueta. Puedo obtener el valor actual del efecto de corte con get_engine_par_display () y volver a escribir nuestro valor perillas con eso. Heres cómo.


set_knob_label () tiene dos parámetros.


set_knob_label ( , )

La variable será el elemento de interfaz de usuario que queremos cambiar a saber $ myControl.


set_knob_label ($ myControl, )


El texto será el valor de la pantalla de los parámetros de corte.

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


Recibimos esta get_engine_par_display utilizando (). El formato es similar a lo que hemos utilizado en set_engine_par ().


get_engine_par_disp ( , , , )


Lo que para Cutoff en el Grupo 1, Slot 1 es ...


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


Este trozo de código entra en el


Example Code 4


Ahora, cuando mueva el control puedo obtener el valor de la frecuencia de corte dentro de la vigencia.

The knob controls the Cutoff


Así que eso es bueno! Pero tengo un problema! Cuando llegué a Aplicar (¡prueba esto!) Nuevamente o iban a cargar el script desde un preset o recargar el instrumento no veo el valor y mi control se pone a 0!

En primer lugar para ver el valor de la frecuencia de corte cuando inicializar el guión lo único que tienes que hacer es copiar mi set_knob_label () en el sobre de devolución de llamada init.

Code Example 5


Ahora veo el valor de inicialización.

The value appears on initialization.


Pero mi control está siendo puesta a 0! Podemos resolver esto, aunque utilizando otro comando variable llamada make_persistent ().


Hacer Memory Settings

make_persistent ( ) Almacena el valor de una variable en la secuencia de comandos por lo que puede ser llamado cuando la secuencia de comandos se inicializa. En este caso tenemos que guardar el valor de $ myControl.


Esto se hace mediante la adición de ...


make_persistent ($ myControl)


a Fuera de devolución de llamada init.

Code Example 6


Mi configuración se conserva cuando me golpeó en Aplicar.

The setting is retained


Este ajuste variable se almacena dentro de la secuencia de comandos cuando usted:

  • Guardar una secuencia de comandos como un preset.
  • Guarde el instrumento o Multi.
  • Guardar el proyecto DAW host.


Toques finales

El paso final es añadir la unidad de valor correcto a nuestro control. Como la frecuencia de corte se muestra en Hz, que permite añadir con el control.


Hacemos esto con set_knob_unit (). Esto tiene dos parámetros.


set_knob_unit ( , )


La variable es de $ myControl.


set_knob_unit ($ myControl, )


La unidad se ajusta con una de las variables unitarios integrados, en este caso $ KNOB_UNIT_HZ.


set_knob_unit ($ myControl, $ KNOB_UNIT_HZ)


Hay algunos de estos incluso para DB, ms,%, octava y semitono. Sumamos esto a la devolución de llamada en init.

Code Example 7


Agregando a esto la devolución de llamada en init nos diera esto.

A shiny working custom UI Control for our Filter Cutoff!


Un brillante trabajo de control de la interfaz de usuario personalizada para nuestro corte del filtro!


Conclusión

Así que eso es todo por esta serie! Espero que tu tienes algo de esto y tal vez es despertado cierto interés en scripting en Kontakt. Hay un montón no he tratado aquí, pero es un comienzo y hay mucho más por aprender les puedo asegurar!

Hasta entonces!


Enlaces

Introducción a Guiones en Kontakt, Parte 1

Introducción a Guiones en Kontakt, Parte 2

Introducción a Guiones en Kontakt, Parte 3

Introducción a Guiones en Kontakt, Parte 4

Introducción a Guiones en Kontakt, Parte 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!