Kontakt: gli script (parte 5)

Nel precedente articolo abbiamo imparato ad aggiungere un oggetto di tipo UI e per la precisione una manopola, per consentire ad un utente di controllare un parametro specifico di un evento (l’altezza di una nota, la velocità, ecc.). Stiamo lavorando a degli script piuttosto semplici ma impariamo ad utilizzare un’utilissima funzione costituita dal commento. Chi è solito programmare o scrivere script sà che è importante inserire dei commenti tra le istruzioni delle varie callback in quanto non solo sono preziosi appunti durante la stesura dello script ma aiutano una persona esterna alla progettazione a capire meglio la funzionalità delle varie istruzioni. I commenti si scrivono tra parentesi graffe in quanto KSP ne ignorerà tutto il contenuto. Ecco un esempio:

{questo è un commento, KSP ignorerà tutto ciò che è contenuto in esso}

Spesso, le parentesi graffe sono utilissime per disabilitare momentaneamente delle istruzioni senza doverle cancellare. Possiamo vederne un esempio:

on note
 {play_note(60, 75, 0, -1)}
end on

In questo caso il comando play_note non verrà eseguito in quanto collocato all’interno delle parentesi graffe. Se in futuro dovesse essere riabilitato basterà eliminare le due parentesi.

Supponiamo ora di voler cambiare l’altezza di una nota suonata. Ad esempio suonando un fa dell’ottava centrale oppure un re dell’ottava precedente vogliamo che la nota ascoltata sia sempre il Do dell’ottava successiva a quella centrale e che ha come numero di nota il 72. A tal fine occorre utilizzare una procedura che legge l’evento e precisamente la sua altezza e lo associa ad un’altra altezza.
E’ possibile utilizzare il comando get_event_par() che possiede due parametri:

  • il numero ID identificativo dell’evento interessato,
  • il tipo di parametro di quell’evento che si vuole come ritorno (se trattasi di un evento nota potrebbe essere la sua altezza o la velocity).

Vediamo di capire meglio cosa sia l’ID. Ogni evento in uno script presenta un corrispondente numero identificativo in modo tale da essere univocamente individuato dal KSP. Questo numero è accessibile tramite la variabile interna $EVENT_ID pertanto per ottenere l’altezza dell’evento di nota che attiva la callback note possiamo utilizzare il comendo get_event_par impostandolo come qui di seguito:

get_event_par($EVENT_ID, $EVENT_PAR_NOTE)

La variabile interna $EVENT_PAR_NOTE comunica al KSP che il parametro che si vuole avere dall’evento, il cui ID è rappresentato dalla variabile $EVENT_ID, è l’altezza della nota.
Se invece avessimo voluto recuperare la velocity avremmo dovuto utilizzare la variabile $EVENT_PAR_VELOCITY e scrivere quindi:

get_event_par($EVENT_ID, $EVENT_PAR_VELOCITY)

Una volta recuperato il valore lo possiamo cambiare in una nuova altezza utilizzando il comando set_event_par() che si compone di tre parametri. Dovremmo scrivere quindi il seguente codice nella callback note:

on note
 set_event_par($EVENT_ID, $EVENT_PAR_NOTE, 72)
end on

Una volta cliccato su apply ogni nota suonata sarà sempre dell’altezza del Do un’ottava sopra quello centrale. Torniamo a vedere i tre parametri del nuovo comando utilizzato: il primo indica l’ID dell’evento e il secondo il tipo di parametro da cambiare. Il terzo parametro è il nuovo valore che vogliamo dare al parametro. In sostanza le due istruzioni che abbiamo usato nella callback note provvedono a modificare l’altezza della nota suonata ($EVENT_PAR_NOTE) con l’ID ($EVENT_ID) impostato a 72 (corrispondente al Do un’ottava sopra quello centrale). Potremmo usare queste nuove istruzioni per creare un traspositore relativamente alle note suonate impostando il valore di trasposizione tramite un’apposita manopola. Occorre pertanto dichiarare una manopola nella callback init e poi utilizzarla all’interno dell’istruzione set_event_par nella callback note.

on init
 declare ui_knob $trasp (-12, 12, 1)
 set_knob_defval ($trasp, 0)
 $trasp := 0
 make_persistent ($trasp)
 make_perfview
end on

on note
 {play_note($EVENT_NOTE, $EVENT_VELOCITY, 0, -1)}
 set_event_par($EVENT_ID, $EVENT_PAR_NOTE, $EVENT_NOTE + $trasp)
end on

 052 ksp

Cliccando su apply agendo sulla manopola trasp si trasporterà la nota che si sta suonando del numero di semitoni specificato.

053 ksp

In questo caso (manopola impostata sul valore 3) suonando la nota Do sentiremo un Mib (una terza minore sopra).

Parte 6

Annunci

Informazioni su silviorelandini

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

Una risposta a Kontakt: gli script (parte 5)

  1. Pingback: Kontakt: gli script (parte 4) | 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...