Introducción a los scripts en Kontakt, Parte 3

In this 5 Part MPVHub Series, Toby Pitman explores the wonderful world of scripting in Native Instruments' Kontakt sampler. Part 3 goes deeper into variables. Read the next part on The Hub tomorrow!  

La última vez que miró a algunas declaraciones de if ... else y select (). Estos nos ayudó a ejecutar un script específico cuando algo pasó, como una nota que se está reproduciendo. Si te acuerdas de que hemos construido una secuencia de comandos que nos permiten gatillo (o un-bypass) algunos efectos internos pulsando notas en nuestro teclado MIDI.

Parte de esto se hizo apuntando el control de bypass de los efectos usando algunas variables integradas, es decir, $ ENGINE_PAR_EFFECT_BYPASS que era simplemente una referencia a ese parámetro. En esta parte se va a profundizar en las variables, tanto incorporadas y definidas por el usuario.

¿Qué es una variable?

Las variables son sin duda lo más importante en cualquier lenguaje de programación, y sería muy difícil continuar con el resto de estos talleres sin explicarlos con más detalle.

Una variable es un dispositivo de almacenamiento que contiene un elemento de información. En cualquier momento puede consultar esa información haciendo referencia a que el nombre de las variables. Piense en ello como un acceso directo.

Usted puede llenar una variable con una estática (constante) pieza de información como el nombre, número o un objeto. Alternativamente, usted puede llenar con algo dinámico, como el valor actual de un parámetro de cambio que se puede pasar a otra cosa.

Hay dos tipos principales de variable. Built-In y definido por el usuario. Vamos a echar un vistazo!


Variables integradas

El lenguaje de secuencias de comandos Kontakt ha construido muchas de las variables que están escritas en el lenguaje. Se trata principalmente de las referencias a los parámetros accesibles del motor Kontakt, es decir, cosas que se pueden manipular con el KSP. Aquí está un buen ejemplo. El efecto Lo-Fi tiene cuatro parámetros. Puedo acceder a ellos mediante el uso de la incorporada en las variables para ellos. Estos son:

  • $ENGINE_PAR_BITS
  • $ENGINE_PAR_FREQUENCY
  • $ENGINE_PAR_NOISELEVEL
  • $ENGINE_PAR_NOISECOLOR

Youll aviso de que todos ellos tienen un determinado prefijo de $ ENGINE_PAR_. Este prefijo está reservado para uso Kontakt sólo, como son NI_ $, $ CONTROL_PAR_, $ EVENT_PAR_. Cuando se llega a definir sus propias variables usted querrá alejarse de la utilización de los mismos.

También hay otros tipos que contienen información acerca de las acciones del usuario, como las notas que estás jugando. Vimos una de ellas la última vez, $ EVENT_NOTE.

Hay demasiados para cubrir aquí, pero usted encontrará una lista de todos construidos en las constantes y variables al final del Manual de Referencia KSP. Decir que la enfermedad te daré un ejemplo.

Hay una variable incorporada llamada $ PLAYED_VOICES_INST. Esto es el valor de la cantidad de voces (notas) el instrumento actual se está reproduciendo. Si escribo esta nota de devolución de llamada en ...

Code example 1


Me sale este mensaje.

You are playing 6 notes


Youll aviso Ive añadido uno a la variable, ya que cuenta de 0. Los símbolos de unión (

Así youll sea utilizando una función de las variables para obtener información sobre lo que viene en Kontakt


Variables definidas por el usuario

Las variables de usuario son definidos por usted y porque Kontakt no está familiarizado con estas variables (a diferencia de los que ya vienen) primero Youll necesidad de declararlos. Declarar una variable que hay que hacer entre su inicio en ... final sobre devolución de llamada. Así que ¿cuál se trata?

Declarar es una manera de decir: Hey Kontakt! Voy a hacer una nueva variable, por lo escuchen!.

Así que vamos a intentarlo! Voy a hacer que una variable normal (hay otros tipos pocas). Estos son precedidos con un $. Cualquier variable es altamente sensible a mayúsculas así que ten cuidado!


declarar $ myVariable


Y eso es bueno, pero ¿ahora qué? Por el momento es $ myVariable vacío No he dado un valor. Así que digamos ...


$ MyVariable: = 2


El: = significa igual. Así que mi código se verá así.


declarar $ myVariable

$ MyVariable: = 2


Ahora Kontakt sabe lo que significa $ myvariable. También podría escribir lo mismo de un golpe como este ...


declarar $ myVariable: = 2


Cuando esto está bien en algunas circunstancias el youll más adelante que podemos necesitar para separar la declaración y asignación de valores en dos partes.


Así que ahora mi variable tiene un valor que podría imprimir un mensaje en un evento de nota mediante.


Code example 2



Me sale este mensaje.

$myVariable has a value of 2


Observe cómo puedo usar $ myVariable dentro de las comillas sin ella aparece como 2. Esto se debe a nada en las citas se considera texto sin formato.

Por lo tanto, un ejemplo más, usando valores dinámicos. Esta vez Ill llenar mis $ myVariable con el valor de

$ MyVariable: = $ 1 PLAYED_VOICES_INST


$ MyVariable ahora tendrá la información recogida por $ PLAYED_VOICES_INST y suma 1. Así que ahora yo podía hacer esto.

Code example 3


Aviso Ive le asigna el valor a $ myVariable el interior de la nota sobre la devolución de llamada. Esto se debe a $ PLAYED_VOICES_INST sólo puede recoger los datos de la nota cuando devoluciones de llamada en el interior que tienen que ver con la nota informativa.

Y me da esto ...

You are playing 1 notes!


Ahora, Ive sólo golpeó una nota tan "Está jugando 1 notas!" es gramaticalmente un disparate! Así que vamos a utilizar nuestra variable para ayudar a hacer este trabajo.

Usando una instrucción if ... else podemos averiguar cuántas notas están jugando y mostrar una respuesta pertinente eso es gramaticalmente correcta.

Así que digamos que $ myVariable Si es mayor que uno, muestra un mensaje que expresa el plural de nota. Si no es su continuación, imprimir el mensaje usando el singular de la nota.

Ponemos $ myVariable (que ahora contiene el número de notas que se tocan) dentro de los paréntesis de la instrucción if. De esta manera se puede pesar hasta si su mayor (


Nuestro código se verá así.

Example code 4


Cuando toco una nota de recibo ....

You are playing 1 note!


cuando juego más de una nota me sale ...

You are playing 4 notes!


Éxito!


Así que espero que pueda ver cómo esta variable está funcionando. Im que volver a utilizar tres veces en este guión que, obviamente, guarda un poco de tiempo y tamaño. Al escribir scripts más complejos que podrían hacer referencia a esta decenas de veces y sólo tiene que asignar el valor de una sola vez.

Un valor de variables no tiene por qué ser estática y no hay nada que impida que el cambio de un valor de la variable en cualquier momento, de hecho es bastante común. Ill dar algunos ejemplos de tutoriales posteriores.


Tipos de variables

Hasta ahora weve tratado con variables básicas. Hay unos pocos tipos diferentes de variables en Kontakt cada uno con su propio prefijo.


  • @myText = A String Variable. Holds “Text information”
  • const $myVariable = Sets a constant value e.g. 12
  • polyphonic $myVariable = Holds a value for each polyphonic event.
  • %myArray[] = Holds multiple values in a list
  • !myArray[] = Holds multiple text strings in a list


Bueno cubrir algunos de estos en algunos tutoriales que vienen.

La próxima vez que mire bien algunas técnicas de interfaz. Saber acerca de las variables debe hacer el proceso de creación de controles de usuario mucho más fácil de entender. Hasta entonces!

He incluido los ejemplos de código de este


Enlaces rápidos:

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

Want to join the discussion?

Create an account or login to get started!