KONTAKT SCRIPTING TUTORIAL – SECONDA PARTE

Written by Antonio Antetomaso on . Posted in Software, Tutorial

Ben ritrovati. In questa seconda puntata inizieremo a realizzare qualcosa di un po’ più serio con il nostro ambiente di scripting Kontakt e, precisamente, realizzeremo uno script che consente di attivare/inibire uno o più effetti opportunamente inseriti all’interno del nostro strumento rispettivamente alla pressione e al rilascio di un tasto. Tale esempio è studiato per spiegare altri aspetti della programmazione Kontatk naturalmente e verrà, come di consueto, reso disponibile per il download.

Di Antonio Antetomaso

Iniziamo da un concetto alla base di qualunque linguaggio di programmazione, le istruzioni. Esse istruiscono Kontakt sulle azioni da intraprendere al verificarsi di determinati eventi. Nella scorsa puntata avevamo visto un primo esempio, costituito dall’istruzione “message()” che provoca la stampa di un messaggio nella barra di stato del campionatore.

Quest’ultimo offre un set di istruzioni abbastanza variegato e ciascuna di esse prende in ingresso (tra parentesi) uno o più parametri. Nel caso dell’istruzione “message” essa prende in ingresso il messaggio da stampare, naturalmente.

Un’altra istruzione che analizzeremo è l’istruzione condizionale che determina l’esecuzione di una o più azioni in base al verificarsi o meno di una certa condizione. La sintassi è:

if (condizione)

 

istruzione 1

istruzione 2

.

.

.

istruzione n

end if

 

La condizione è tipicamente espressa mediante un’espressione di uguaglianza che deve essere più o meno verificata.

Consideriamo il seguente esempio:

Abbastanza semplice da capire, verifichiamo se stiamo suonando il C3 e, in tal caso stampiamo un messaggio come quello riportato in figura. Poniamo un attimo l’accento sulla condizione: if ($EVENT_NOTE=60). In essa stiamo verificando l’uguaglianza tra il valore contenuto in una variabile standard di Kontakt con il valore 60.

La variabile è EVENT_NOTE e il suo valore è prelevato con il simbolo $. Si, lo so che non abbiamo ancora parlato delle variabili…lo faremo a brevissimo, per il momento, ci basti sapere che una variabile indica una zona di memoria che può assumere un determinato valore e che tale valore può essere assegnato dal programmatore esplicitamente, può essere il risultato di una elaborazione o può essere assegnato (come nel caso in oggetto) dall’interprete di Kontakt stesso al verificarsi di certi eventi.

Torniamo a parlare dell’istruzione if: tale costrutto può essere completato con l’istruzione else ad indicare un set di istruzioni che deve essere eseguito se la condizione specificata tra parentesi non è verificata, in questo modo:

if (condizione)

 

istruzione 1

istruzione 2

.

.

.

istruzione n

 

else

 

istruzione n+1

istruzione n+2

.

.

.

end if

 

Completiamo l’esempio di sopra inserendo un’istruzione che verrà eseguita se stiamo suonando una nota diversa dal C3

E se volessimo intraprendere azioni diverse sulla base di più di una condizione che si verifica? Si può fare naturalmente, utilizzando il costrutto select. Questa la sintassi:

select (VARIABILE)

case VALORE 1

Istruzione 1

Istruzione 2

.

.

case VALORE 2

.

.

end select

Complichiamo ulteriormente l’esempio in questione utilizzando un altro tab:

In questo caso, notiamo come i due script vengono eseguiti simultaneamente. Se premiamo il C3 o il C#3 verrà eseguito il secondo script, in tutti gli altri casi il primo. In merito ai valori che determinano l’esecuzione o meno di un determinato set di istruzioni, per essi è possibile specificare anche un range in questo modo:

Non dimentichiamo di “appianare” il tutto con la funzione “on release” in cui andiamo a controllare che nel range da 0 a 127 non stiamo suonando nulla (dato che ne abbiamo parlato nella prima puntata, ve lo lascio per esercizio anche se la codifica è banale e comunque trovate tutto nel sample a corredo dell’articolo). Arrivati a questo punto abbiamo i mattoncini di base per iniziare a programmare qualcosa di interessante (almeno spero): programmeremo uno script che alla pressione di una nota genera un evento che effettua il triggering di un effetto.

Presto presto, apriamo un nuovo strumento Kontakt ed inseriamo tre effetti (click su “Insert effects”): un distorsore, un lo-fi e un phaser. Poniamo infine i tre effetti in bypass, così:

Ora che abbiamo aggiunto i nostri effetti, iniziamo a giocarci un po’ tenendo presente che qualunque oggetto nativo di Kontakt è reso accessibile in ambiente di scripting e di esso possono essere manipolati i parametri. Ed è appunto quello che ci accingiamo a fare con i nostri tre effetti, andando ad utilizzare una funzione molto utilizzata dai programmatori Kontakt, set_engine_par(,,,,) che riceve in ingresso i seguenti parametri:

  1. Primo parametro: il nome del parametro (perdonate il gioco di parole) di cui vogliamo impostare il valore. Il manuale di Kontakt fornisce la lista documentata di tutti i parametri messi a disposizione del programmatore dall’ambiente di scripting;
  2. Secondo parametro: il valore da impostare;
  3. Terzo parametro: il numero del gruppo di effetti se applicabile, -1 altrimenti;
  4. Quarto parametro: il numero dello slot nel quale è inserito l’effetto, partendo da 0
  5. Quinto parametro: un flag che indica se si tratta di un effetto Insert o Send. 1 nel primo caso, 0 nel secondo.
Nel nostro caso dobbiamo disattivare il bypass di un effetto, quindi….sfoglia tu che sfoglio io…il parametro che fa al caso nostro è $ENGINE_PAR_EFFECT_BYPASS. Il valore da passare è 0 per effetto on, 1 per effetto in bypass. Dato che noi vogliamo attivare l’effetto alla pressione di una nota passeremo 0 come valore. Andiamo avanti, passiamo -1 come terzo parametro  in quanto gli effetti sono a livello di strumento e non hanno gruppo. In merito al quarto parametro avremo 0 per la distorsione (primo slot), 1 per il lo-fi e 2 per il phaser. Infine, trattandosi di effetti in insert, passeremo 0 al quinto e ultimo parametro.
Decidiamo di attivare un singolo effetto alla pressione di una determinata nota e di disattivarlo al rilascio della medesima nota. Detto ciò e considerati gli esempi precedenti, se due più due fa quattro il frammento di codice è presto scritto:
Se proviamo a suonare le note C3,C#3 e D3 vedremo che il relativo effetto viene attivato alla pressione e inibito al rilascio. E’ possibile anche premere simultaneamente più tasti per attivare altrettanto simultaneamente i rispettivi effetti.
Chiudiamo con una piccola chicca, impostiamo il titolo del nostro script al caricamento dello strumento.
on init
set_script_title(“EFX Trigger”)
end on
Proviamo a salvare il nostro script come preset dello strumento dalla funzione “Preset–>Save preset”. Lo script verrà salvato come preset di Kontakt con il titolo che gli abbiamo assegnato. Gli esempi codificati sono disponibili qui per il download.
Per questa seconda puntata è tutto. Nella prossima parleremo della creazione di interfacce, stay tuned.

Trackback from your site.

Leave a comment

Inserisci il numero mancante: *