Kontakt: gli script (parte 2)

Nella prima parte abbiamo visto che ogni script è costituito da una o più callback all’interno delle quali vengono inserite le istruzioni che si eseguono quando lo strumento riceve un determinato dato che attiva la callback. Abbiamo visto anche che nello script, la callback inizia con l’istruzione:

on <nome callback>

e termina sempre con l’istruzione

end on

Sempre nella prima parte abbiamo già introdotto la callback principale che è chiamata init. Al suo interno vengono definite le variabili, gli array e creati gli elementi (manopole, fader, pulsanti, ecc.) tramite i quali possiamo controllare vari parametri attraverso comandi.

Quando si ricevono messaggi MIDI di nota si possono attivare due callback ad essi associati: note e release.

La callback note viene eseguita quando si riceve un messaggio MIDI di Nota On (nota premuta).

on note

end on

Per specificare delle istruzioni nel momento in cui si rilascia la nota (messaggio di MIDI Note Off) si può utilizzare la callback release

on release

end on

Facciamo alcuni esempi.

Apriamo Kontakt e creiamo un nuovo strumento, quindi entriamo in modalità Edit e cliccliamo sul pulsante Script Editor.

019 ksp

Nel primo slot clicchiamo sul pulsante Edit per mostrare il text editor.

020 ksp

Inseriamo ora la callback note che sarà eseguita ogni volta che suoneremo una nota sulla tastiera virtuale di kontakt o su una tastiera MIDI connessa con kontakt. Per verificare l’esecuzione della callback aggiungiamo un’istruzione particolare chiamata message( ) che mostra nella barra dei messaggi di Kontakt un messaggio virgolettato specificato all’interno delle parentesi tonde. Con questo messaggio vogliamo indicare che abbiamo premuto una nota. La sequenza di istruzioni da inserire è la seguente:

on note
  message (“Hai premuto una nota”)
end on

021 ksp

Per validare lo script clicchiamo sul pulsante apply. In basso al text editor lo status ci avverte se l’operazione è andata a buon fine senza errori.

022 ksp

Proviamo a vedere se lo script appena realizzato funziona. Premete una nota qualunque (sulla tastiera virtuale o su quella MIDI connessa). Sulla barra dei messaggi (in fondo a Kontakt) dovreste visualizzare il messaggio “Hai premuto una nota”.

023 ksp

Questo messaggio rimane permanente per cui rilasciando la nota premuta continuerà ad essere visualizzato. Quello invece che vogliamo ottenere è un messaggio che compare solamente se stiamo premendo una nota. Possiamo migliorare il nostro script aggiungendo un messaggio vuoto nella callback release che si attiva quando si rilascia la nota premuta.

on release
  message (“”)
end on

Miglioriamo anche il testo del messaggio sulla nota on modificandolo con:

message (“Stai premendo una nota”)

024 ksp

Cliccate su Apply. Quando premete una nota e fintanto che questa rimane premuta, appare il messaggio “Stai premendo una nota”.

025 ksp

Non appena rilasciate il tasto relativo alla nota premuta, il precedente messaggio scompare in quanto sostituito da quello vuoto.

026 ksp

Bene, abbiamo effettuato un primo esempio per capire come una callback viene eseguita a seguito del ricevimento di uno specifico messaggio MIDI.

Continuiamo a lavorare sulla callback note con un ulteriore esempio. Supponiamo di voler conoscere il numero (MIDI) di nota che abbiamo premuto. Questo significa che il messaggio dovrà avere una parte fissa, come ad esempio, “Stai premendo una nota:” ed una parte variabile che mostrerà il numero MIDI (relativo al valore del primo data byte del messaggio di nota on) della nota premuta. A tal fine dobbiamo inserire nell’istruzione message una variabile.

Le variabili vengono utilizzate per memorizzare valori numerici o testuali, per effettuare dei calcoli matematici o concatenazioni di testo. Possono essere di due tipologie: quelle definite da Kontakt e quelle definite dall’utente. Le variabili interne si scrivono in maiuscolo, quelle dell’utente in minuscolo e per essere riconosciute nello script devono essere dichiarate all’interno della callback init utilizzando la parola chiave declare. Le variabili interne invece non hanno la dichiarazione. I nomi delle variabili possono contenere solamente numeri, caratteri e il simbolo underscore (_).

Nome di variabile interna: EVENT_NOTE

Nome di variabile definita dall’utente: nota_premuta

Per distinguere le variabili numeriche (contenenti però solamente numeri interi positivi o negativi) da quelle ti tipo testo si antepone al nome della variabile il carattere $ per le variabili numeriche e il carattere @ per quelle testuali.

$nota_premuta (è una variabile numerica definita dall’utente)

@comunicazione (è una variabile testuale definita dall’utente)

Nel prossimo articolo vedremo come utilizzare una variabile definita dall’utente.

Torniamo al nostro esempio. Per mostrare nel messaggio il numero di nota premuto possiamo utilizzare la variabile interna $EVENT_NOTE che memorizza il numero di nota appena suonata. Poichè trattasi di variabile interna non necessita di dichiarazione e pertanto possiamo inserirla direttamente all’interno del nostro messaggio.

on note
message (“Numero ultima nota suonata: “ & $EVENT_NOTE)
end on

Il simbolo & consente di collegare la variabile al messaggio inserendo il valore memorizzato in essa subito dopo i due punti.

Prima di cliccare sul pulsante apply ricordatevi di cancellare la callback release.

027 ksp

Cliccate su apply e provate a suonare il Do dell’ottava centrale. Vedrete comparire il seguente messaggio.

028 ksp

Cos’è quel numero 60? E’ noto (vedasi il seguente articolo) che il primo data byte relativo al messaggio di nota on specifica il numero di nota (nell’intervallo 0-127). Il do dell’ottava centrale, indicato spesso con la sigla C4 o C3 a seconda del riferimento che si vuole seguire (ricordo che la comunità scientifica indica l’ottava centrale con il numero 4, vedasi numerazione dell’ottava), corrisponde al valore 60 del data byte.

numerazione scientifica

Volendo possiamo anche inserire il valore della velocity della nota premuta utilizzando la variabile interna $EVENT_VELOCITY che possiamo inserire nel messaggio modificandolo ad esempio come segue:

on note
message (“Numero ultima nota suonata: “ & $EVENT_NOTE & “ con velocity: “ & $EVENT_VELOCITY)
end on

029 ksp

Notate la & inserita dopo la variabile $EVENT_NOTE necessaria per concatenare le due stringhe di testo e lo spazio tra la doppia apice e la parola con (nella seconda stringa di testo) per evitare che il testo “con” sia attaccato al numero di nota. Cliccate sul pulsante apply e premete nuovamente il do centrale. Come possiamo osservare è comparsa anche il valore della velocity.

030 ksp

Terza parte

Annunci

Informazioni su silviorelandini

sound designer, docente di tecnologie musicali, direttore iitm
Questa voce è stata pubblicata in Campionamento, Corsi, Software, Sound Designing, Tecnologie Musicali e contrassegnata con , , , . Contrassegna il permalink.

2 risposte a Kontakt: gli script (parte 2)

  1. Pingback: Kontakt: gli script (parte 3) | tecnologiamusicale

  2. Pingback: Kontakt: gli script (parte 1) | tecnologiamusicale

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...