Introdução à criação de scripts no 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!  

A última vez que olhei para algumas declarações usando if ... else e select (). Estes ajudaram-nos a executar um script quando aconteceu algo específico, como uma nota que está sendo jogado. Se você se lembrar que nós construímos um script que vamos gatilho (ou não-bypass) alguns efeitos internos, pressionando as notas em nosso teclado MIDI.

Parte disso foi feito, visando o controle Bypass dos efeitos usando algum variáveis ​​internas, ou seja, ENGINE_PAR_EFFECT_BYPASS $ que era simplesmente uma referência a esse parâmetro. Nesta parte estavam indo para aprofundar variáveis, ambas embutidas e definidos pelo usuário.

O que é uma variável?

As variáveis ​​são, sem dúvida, a coisa mais importante em qualquer linguagem de script e que seria muito difícil de prosseguir com o resto dessas oficinas sem explicá-los mais detalhadamente.

Uma variável é um dispositivo de armazenamento que contém um pedaço de informação. A qualquer momento você pode se referir a esse pedaço de informação, fazendo referência a esse nome variáveis. Pense nisso como um atalho.

Você pode preencher uma variável com um pedaço (constante) estática de informações, como um nome, número ou um objeto. Alternativamente, você pode preenchê-lo com algo dinâmico, como o valor atual de uma alteração de parâmetros que podem ser passados ​​para outra coisa.

Existem dois principais tipos de variáveis. Built-In de Usuário e Definido. Vamos dar uma olhada!


Variáveis ​​internas

O Kontakt Scripting Language tem muitos construído em variáveis ​​que estão escritas na língua. Estes são principalmente as referências aos parâmetros acessíveis do motor Kontakt, ou seja, coisas que você pode manipular com o KSP. Aqui está um bom exemplo. O efeito Lo-Fi tem quatro parâmetros. Eu posso acessar esses usando o construído em variáveis ​​para eles. Estes são os seguintes:

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

Você vai notar que todos estes têm um determinado prefixo de US $ ENGINE_PAR_. Esse prefixo é reservado para uso Kontakt apenas, como é de US $ NI_, CONTROL_PAR_ $, $ EVENT_PAR_. Quando você vem para definir suas próprias variáveis ​​você vai querer orientar clara de usar estes.

Existem também outros tipos que guardam informações sobre as ações do usuário, como o que notas que você está jogando. Vimos um destes última vez, $ EVENT_NOTE.

Há muito o que falar aqui, mas você vai encontrar uma lista de todos construídos em constantes e variáveis ​​no final do Manual de Referência KSP. Dizer que eu vou lhe dar um exemplo.

Existe uma variável embutida chamada $ PLAYED_VOICES_INST. Isso mantém o valor de quantas vozes (notas) o instrumento atual está jogando. Se eu escrever este callback nota sobre ...

Code example 1


Eu recebo essa mensagem.

You are playing 6 notes


Youll aviso Ive adicionado um para a variável, já que tem de 0. As comercial (

Então você vai estar usando variáveis ​​internas para reunir informações sobre o que está vindo em Kontakt


Variáveis ​​de usuário Definido

Variáveis ​​de usuários são definidos por você e porque Kontakt não está familiarizado com essas variáveis ​​(ao contrário do built-in ones) o youll primeiro precisa declará-los. Declarar uma variável tem que ser feito entre o final de inicialização ... no retorno de chamada. Então o que é isso tudo?

Declarar é uma maneira de dizer, Hey Kontakt! Eu estou indo para fazer uma nova variável, então ouçam!.

Então, vamos tentar! Eu estou indo fazer uma variável normal (existem alguns outros tipos). Estes são precedidos de um $. Qualquer variável é altamente sensível a maiúsculas portanto, cuidado!


declarar $ myVariable


Então isso é bom, mas o que agora? No momento $ myVariable é vazio como eu havent dado um valor. Então, vamos dizer ...


$ MyVariable: = 2


A: = significa igual. Então, o meu código será parecido com este.


declarar $ myVariable

$ MyVariable: = 2


Agora Kontakt sabe o que significa $ myVariable. Eu também poderia escrever a mesma coisa em uma batida como esta ...


declarar $ myVariable: = 2


Onde isso é OK, em algumas circunstâncias você verá mais tarde que talvez seja necessário separar a declaração e atribuição de valores em duas partes.


Então, agora a minha variável tem um valor que eu poderia imprimir uma mensagem em um evento de nota usando.


Code example 2



Eu recebo essa mensagem.

$myVariable has a value of 2


Observe como eu pode usar $ myVariable dentro das aspas, sem que ela seja mostrada como 2. Isto é porque alguma coisa dentro citações é considerado texto simples.

Então, mais um exemplo usando valores dinâmicos. Desta vez eu vou encher meu $ myVariable com valor de

$ MyVariable: = $ 1 PLAYED_VOICES_INST


$ MyVariable passou a deter as informações recolhidas pelo $ PLAYED_VOICES_INST e adicione 1. Então agora eu poderia fazer isso.

Code example 3


Aviso Ive atribuído o valor de US $ myVariable dentro do callback nota sobre. Isto porque $ PLAYED_VOICES_INST só pode reunir os dados da nota quando callbacks dentro que lidam com informações da nota.

E eu tenho esse ...

You are playing 1 notes!


Agora, Ive só bateu uma nota assim: "Você está jogando uma nota!" é gramaticalmente absurdo! Então, vamos usar a nossa variável para ajudar a fazer este trabalho.

Usando um se ... else podemos descobrir quantas notas estão jogando e apresentar uma resposta relevante isso é gramaticalmente correta.

Então, vamos dizer Se $ myVariable é maior do que um, imprimir uma mensagem que expressa o plural de nota. Se não o seu em seguida, imprimir uma mensagem utilizando o singular de nota.

Colocamos $ myVariable (que agora contém o número de notas tocadas) dentro dos colchetes da declaração se. Desta forma, ele pode pesar até se a sua maior (


Nosso código será parecido com este.

Example code 4


Quando eu jogo um note que eu conseguir ....

You are playing 1 note!


quando eu jogo mais do que uma nota de eu chegar ...

You are playing 4 notes!


Sucesso!


Portanto, esperamos que você pode ver como esta variável está funcionando. Im reutilizando-lo três vezes neste script que obviamente poupa algum tempo e tamanho. Quando você escrever scripts mais complexos que você pode fazer referência a este dezenas de vezes e só tem que atribuir o valor uma vez.

Um valor variáveis ​​não tem de ser estático e não há nada para impedi-lo alterando um valor de variáveis, a qualquer momento, na verdade isso é bastante comum. Mal dar alguns exemplos em tutoriais posteriores.


Tipos de variáveis

Até agora weve tratadas variáveis ​​básicas. Existem alguns tipos diferentes de variável Kontakt cada um com seu próprio prefixo.


  • @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


Bem cobrir alguns destes em alguns tutoriais próximos.

Da próxima vez que olhar bem algumas técnicas de interface. Saber sobre variáveis ​​deve tornar o processo de criação de usuário controla muito mais fácil de entender. Até então!

Eu incluí os exemplos de código neste


Links rápidos:

Introdução ao Scripting no Kontakt, Parte 1

Introdução ao Scripting no Kontakt, Parte 2

Introdução ao Scripting no Kontakt, Parte 3

Introdução ao Scripting no Kontakt, Parte 4

Introdução ao Scripting no 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!