Kontakt: gli script (parte 15)

Utilizzare un array di testo per personalizzare i valori di una manopola da mostrare nella sua label

In moltissimi casi si utilizzano manopole che invece di mostrare il classico intervallo numerico di valori sarebbe più opportuno mostrare gli effettivi valori che aiutano l’utente ad intervenire nella scelta. Prendiamo come esempio la realizzazione di una manopola che mostra il nome delle note e l’ottava di appartenenza (ad esempio C3, E5, G7, ecc. ecc.). Per prima cosa creiamo un nuovo strumento ed entriamo nello script editor del primo slot dove cominciamo a inserire le note istruzioni. All’uopo possiamo utilizzare un editor specifico sviluppato da Nils Liberg e scaricabile al seguente link.

01

Dichiariamo un array di testo dedicato al nome delle note. Ricordiamo che l’array di testo utilizza il simbolo ! prima del nome dell’array.

02

Chiaramente dobbiamo indicare non solo il nome della nota ma anche il numero dell’ottava. Sappiamo che le note midi in totale sono 128 pertanto dichiariamo anche un array di testo pari a 128 valori.

03

Dichiariamo anche una variabile contatore che ci occorrerà poi per associare il nome corretto MIDI della nota sulla base del valore numerico che daremo alla manopola che dichiareremo a breve.

Schermata 2015-05-12 alle 18.00.53

Creiamo un ciclo while che consente di associare il nome della nota e dell’ottava sulla base del numero di nota MIDI. A tal fine occorre definire un’espressione. Supponiamo ad esempio di voler impostare la nota 72 corrispondente all’altezza C4. Per trovare il nome della nota occorre utilizzare l’espressione $count mod 12 dove l’operatore mod corrisponde al modulo. Nella stessa linea di codice utilizzeremo il carattere & (già visto in precedenza) per unire l’espressione che ci darà il numero di ottava ovvero ($count/12)-2). E così 72 mod 12 ci darà il valore 0 corrispondente a C e l’operazione ((72/12)-2) darà il valore 4 dell’ottava (notiamo che il valore di sottrazione -2 tiene conto del fatto che esistono le ottave negative -1 e -2. Praticamente il concetto è che 72 mod 12 sottrae a 72 il valore 12 in maniera ciclica fintanto che il risultato produce un numero intero positivo inferiore a 12 (primo ciclo: 72-12=60, secondo ciclo 60-12=48, terzo ciclo: 48-12=36, quarto ciclo: 36-12=24, quinto ciclo 24-12=12, sesto ciclo 12-12=0, stop).

l’istruzione ciclica while deve essere pertanto così costruita ed inserita dopo la dichiarazione dell’array di testo !NomeNote[128].

Schermata 2015-05-12 alle 18.07.56

Subito dopo il ciclo while dichiariamo ora la manopola Nota che mostra il nome delle note MIDI e assegnamo il valore di default pari a 60 corrispondente all’altezza C3. Questo tipo di manopola è molto utile quando viene inserita ad esempio negli step sequencer consentendo all’utente di scegliere direttamente il nome della nota anziché doverlo calcolare dal suo valore MIDI.

Schermata 2015-05-12 alle 18.11.20

Schermata 2015-05-12 alle 18.12.12

Associamo ora il nome della nota e il numero di ottava all’etichetta della manopola invece di mostrare il numero di nota MIDI. Utilizziamo le istruzioni set_knob_label, read_persistent_var (utilizzata per caricare un valore memorizzato manualmente all’interno della callback on init) e in più la callback on ui_control relativamente alla manopola creata che viene eseguita ogni volta che un utente cambia l’elemento UI corrispondente (nel nostro caso la manopola stessa). Viene eseguita quando un elemento di controllo cambia il suo stato (ad esempio dal valore 60 al valore 61).

Schermata 2015-05-12 alle 18.15.54

Ora la manopola mostrerà nella sua etichetta il nome della nota e della sua ottava anzichè il numero di nota MIDI.

Schermata 2015-05-12 alle 18.16.51

Annunci

Informazioni su silviorelandini

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

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...