Chuck 101 – Lezione 2: Tipi di dati e variabili

Con la prima lezione abbiamo cominciato ad avventurarci nel fantastico mondo di ChucK; ora è arrivato il momento di definire un paio di concetti fondamentali per sviluppare le nostre future applicazioni musicali: tipologie di dati e variabili.

Tipi di dati

La maggior parte dei dati che ci troveremo a gestire all’interno di ChucK sono numeri. Quando si programma si incontrano principalmente due categorie di numeri: integerfloating points. Nel primo gruppo rientrano tutti i numeri senza decimali, nel secondo quelli che invece li hanno.

1 – 45 – 3945 – 20395 sono tutti numeri di tipo integer.

1.2 – 2.3495 – 294056.1 – 394.12 sono, invece, dei float (abbreviazione di floating points).

Esempio 1: Integer

In questo programma in ChucK, opportunamente commentato, vediamo come creare una variabile chiamata «a» a cui assegnamo un valore integer pari a 4. Infine, stampiamo a schermo la nostra variabile:

/*
* Chuck 101 - Lezione 2
* Tipi di dati e variabili
*/
// Esempio Integer
// Definiamo una variabile 'a' come integer;
int a;
// Assegnamo alla nostra variabile un valore numerico
4 => a;
// Scriviamo il valore di a
<<< a >>>;

Se avete fretta c’è un metodo più veloce per assegnare un valore direttamente a una variabile; possiamo sostituire la definizione della variabile e l’assegnazione nel precedente programma con il seguente codice:

/*
* Chuck 101 - Lezione 2
* Tipi di dati e variabili
*/
// Esempio Integer
// Definiamo una variabile 'a' come integer;
int a;
// Assegnamo alla nostra variabile un valore numerico
4 => int a;
// Scriviamo il valore di a
<<< a >>>;

Operazioni matematiche

Ora che abbiamo imparato ad assegnare numeri a delle variabili, possiamo sbizzarrirci con le operazioni matematiche;

Provate a scrivere nel vostro programma:

// Definiamo una variabile 'a' come integer;
4 => int a;
// Moltiplichiamo per 4 la nostra variabile
5*a => a;
// Scriviamo il valore di a
<<< a >>>;

Se tutto è stato scritto correttamente,  nella virtual machine dovreste leggere:  20 : (int)

Anche in questo caso possiamo ricorrere alla seguente scorciatoia per velocizzare la programmazione:

// Definiamo una variabile 'a' come integer;
4 => int a;
// Moltiplichiamo per 4 la nostra variabile
5*=> a;
// Scriviamo il valore di a
<<< a >>>;

Esempio 2: Floating Points

Utilizziamo ora una variabile ti tipo floating points (quindi con dei numeri decimali) all’interno di un programma “musicale”.

/*
* Chuck 101 - Lezione 2
* Tipi di dati e variabili
*/
SinOsc sine => dac;

// Middle C (in Hz)
261.626 => float myFrequency;
// Volume as a variable
0.6 => float myVolume;

// Imposto la frequenza
myFrequency => sine.freq;
// Imposto il volume
myVolume => sine.gain;

// Imposto la durata a 1 secondo.
1::second => now;

Questo piccolo programma riprende in parte quanto fatto la prima lezione ma, anziché assegnare dei valori direttamente alla frequenza e al volume, abbiamo assegnato i valori numeri a delle variabili; così facendo, come vedremo nelle prossime lezioni, potremo modificare i valori con l’avanzare del tempo nel programma.

Per chi se lo stesse chiedendo, il valore 261.626 non è casuale ma è quello riportato in questa tabella e indica, come riportato nel commento, l’esatta frequenza del do centrale nel pianoforte.

Altri tipi di dati

Abbiamo visto variabili di tipo numerico che, come già detto in precedenza, saranno quelle che useremo maggiormente. In ChucK, però, possiamo definire anche altri tipi di variabili:  char (un singolo carattere, es: “a”, “b”, “z”, …), string (una stringa di caratteri, es: “hello”, “ciao”, “cartella/fileaudio.wav”), dur (per definire la durata, es: 1::second) e, infine, time (definisce la durata in sample).

Compiti a casa

Nella prossima lezione, analizzeremo nel dettaglio le variabili temporali e la gestione del tempo in ChucK. Nel frattempo, con le nozioni apprese oggi, provate a sperimentare con suoni, variabili e funzioni matematiche per modificare la frequenza assegnata al vostro oscillatore.