KONTAKT SCRIPTING TUTORIAL – SECONDA PARTE
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:
- 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;
- Secondo parametro: il valore da impostare;
- Terzo parametro: il numero del gruppo di effetti se applicabile, -1 altrimenti;
- Quarto parametro: il numero dello slot nel quale è inserito l’effetto, partendo da 0
- Quinto parametro: un flag che indica se si tratta di un effetto Insert o Send. 1 nel primo caso, 0 nel secondo.
Trackback from your site.