Introduzione allo scripting in 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!  

L'ultima volta che abbiamo preso in considerazione alcune dichiarazioni con if ... else e select (). Questi ci ha aiutato a eseguire uno script quando specifico è successo qualcosa, come una nota in fase di riproduzione. Se vi ricordate abbiamo costruito uno script che ci permette di trigger (o non-bypass) alcuni effetti interni premendo le note sulla nostra tastiera MIDI.

Parte di questo è stato fatto prendendo di mira il controllo bypass degli effetti utilizzando alcuni built-in variabili, vale a dire $ ENGINE_PAR_EFFECT_BYPASS che era semplicemente un riferimento a tale parametro. In questa parte stavano per approfondire le variabili, sia built-in e definiti dall'utente.

Che cosa è una variabile?

Le variabili sono senza dubbio la cosa più importante in ogni linguaggio di scripting e sarebbe molto difficile procedere con il resto di questi workshop senza spiegare in dettaglio.

Una variabile è un dispositivo di memorizzazione che contiene un pezzo di informazione. In qualsiasi momento si può fare riferimento a quel pezzo di informazione facendo riferimento quel nome variabili. Pensate a come una scorciatoia.

È possibile riempire una variabile con uno statico (costante) pezzo di informazione come un numero di un nome o di un oggetto. In alternativa è possibile riempire con qualcosa di dinamico, come il valore corrente di un parametro mutevole, che può quindi essere passato ad altro.

Ci sono due tipi principali di variabile. Built-In e Definito dall'utente. Consente di avere uno sguardo!


Built-in variabili

Il linguaggio di scripting Kontakt ha molte costruito in variabili che sono scritte nella lingua. Si tratta principalmente di riferimenti ai parametri accessibili del motore Kontakt, vale a dire cose che si possono manipolare con la KSP. Heres un buon esempio. Il Lo-Fi effetto dispone di quattro parametri. Posso accedere ai metodi, utilizzando il built in variabili per loro. Questi sono:

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

Youll notare che tutti questi hanno un prefisso certa $ ENGINE_PAR_. Questo prefisso viene riservato all'utilizzo Kontakt solo, come sono $ NI_, CONTROL_PAR_ $, $ EVENT_PAR_. Quando si arriva a definire le proprie variabili youll vuole evitare di usare questi.

Ci sono anche altri tipi che contengono informazioni sulle azioni degli utenti, come ciò che le note si sta giocando. Abbiamo visto uno di questi l'ultima volta, $ EVENT_NOTE.

Ci sono troppi per coprire qui, ma youll trovare un elenco di tutte costruite in costanti e variabili alla fine del Manuale di riferimento KSP. Dire che Ill fare un esempio.

Vi è un built-in variabile denominata $ PLAYED_VOICES_INST. Questo contiene il valore del numero di voci (note) l'attuale strumento è in riproduzione. Se scrivo questo callback sulla nota ...

Code example 1


Ricevo questo messaggio.

You are playing 6 notes


Youll preavviso Ive aggiunto uno alla variabile come conta da 0. I commerciali (

Così youll utilizzare built-in variabili per raccogliere informazioni su ciò che sta per entrare in Kontakt


Variabili definite dall'utente

Le variabili utente sono definite da voi e perché Kontakt non ha familiarità con queste variabili (a differenza del built-in quelli) youll necessario prima di dichiararli. La dichiarazione di una variabile deve essere fatto tra il ... su init termina il callback. Così che cosa si tratta?

Dichiarare è un modo di dire, Hey Kontakt! Im andando a fare una nuova variabile, quindi ascoltate!.

Quindi, consente di provare! Im andando a fare una normale variabile (ci sono alcuni altri tipi). Questi sono preceduti da un $. Ogni variabile è molto maiuscole e minuscole quindi state attenti!


dichiarare $ myVariable


Questo vuol dire buono, ma adesso? Al momento $ myVariable è vuoto come io havent dato un valore. Allora supponiamo ...


$ MyVariable: = 2


I: = significa uguale. Quindi, il mio codice sarà simile a questa.


dichiarare $ myVariable

$ MyVariable: = 2


Ora Kontakt sa cosa significa $ myVariable. Potrei anche scrivere la stessa cosa in un colpo come questo ...


dichiarare $ myVariable: = 2


Se questo va bene in alcune circostanze youll vedere in seguito che potremmo avere bisogno di separare la dichiarazione e l'assegnazione di valori in due parti.


Così ora la mia variabile ha un valore che può stampare un messaggio su un evento di nota utilizzando.


Code example 2



Ricevo questo messaggio.

$myVariable has a value of 2


Notate come posso usare $ myVariable all'interno delle virgolette senza di essa appare come 2. Questo perché qualsiasi cosa all'interno citazioni è considerato testo normale.

Quindi, un altro esempio utilizzando i valori dinamici. Questa volta Ill riempire la mia $ myVariable con il valore di

$ MyVariable: = $ 1 PLAYED_VOICES_INST


$ MyVariable ora contenere le informazioni raccolte da $ PLAYED_VOICES_INST e aggiungere 1. Così ora ho potuto fare questo.

Code example 3


Avviso Ive assegnato il valore di $ myVariable all'interno della richiamata nota. Questo perché $ PLAYED_VOICES_INST può solo raccogliere i dati di nota, quando all'interno di callback che si occupano di informazioni note.

E ho questa ...

You are playing 1 notes!


Ora, Ive ha colpito solo una nota così "Stai giocando 1 note!" grammaticalmente è una sciocchezza! Quindi cerchiamo di utilizzare la nostra variabile per contribuire a rendere questo lavoro.

L'utilizzo di un if ... else possiamo scoprire quante note stanno giocando e visualizzare una risposta pertinente questo è grammaticalmente corretto.

Allora supponiamo Se $ myVariable è maggiore di uno, stampare un messaggio che esprime il plurale di nota. Se non lo stampare un messaggio utilizzando il singolare di nota.

Abbiamo messo $ myVariable (che detiene ora il numero di note suonate) all'interno delle parentesi dell'istruzione if. In questo modo si può valutare se la sua maggiore (


Il nostro codice sarà simile a questa.

Example code 4


Quando suono una nota ho ....

You are playing 1 note!


quando gioco più di una nota ho ...

You are playing 4 notes!


Successo!


Quindi spero che si può vedere come questa variabile è in funzione. Im è il riutilizzo tre volte in questo script che consente di risparmiare, ovviamente, un po 'di tempo e la dimensione. Quando la scrittura di script più complessi si potrebbe fare riferimento a questo decine di volte e solo per assegnare il valore una volta.

Il valore delle variabili non deve essere statico e non c'è nulla che impedisca la modifica di un valore delle variabili in qualsiasi momento, in realtà questo è abbastanza comune. Ill dare alcuni esempi in tutorial successivi.


Tipi di variabili

Finora weve trattate variabili di base. Ci sono alcuni tipi differenti di variabili in Kontakt ognuno con il suo proprio prefisso.


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


Beh coprire alcuni di questi in alcuni tutorial a venire.

La prossima volta ben guardare alcune tecniche di interfaccia. Conoscere le variabili dovrebbe rendere il processo di creazione di controlli utente molto più facile da capire. Fino ad allora!

Ho incluso gli esempi di codice in questo


Collegamenti rapidi:

Introduzione allo scripting in Kontakt, parte 1

Introduzione Per 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


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!