Pit Stop 1

Literals

123;     // int
89.5;    // float
1.5e2;   // notazione esponenziale
1e-4;  
pi;      // pi greco

$A;      // characters

'ciao';  // simboli
\ciao; 
"ciao";  // stringhe

var;     // idenificatori
rand(3);

Point;   // Classi
SinOsc   // UGen

true;    // valori speciali
false;
nil;

#[2,3,6] // literal array

Parentesi tonde

(                // delimitare blocchi di codice
12 * 13;
"ciao".postln;
rand(12);
)

12 + (5 / 8);    // ordinare l'esecuzione di espressioni

rrand(30, 46)    // passare argomenti a funzioni o Classi o UGen

f = {arg num, den; num / den};
f.value(12/32);  // passare argomenti a funzioni generiche

Variabili

a     = 344;                  // globali
~ciao = 656;

a+~ciao.postln;

(
var a = 10, b = 23, miao = 12; // locali
    (a+b).postln;
     miao                      // SC stampa sempre l'ultimo dato         
)

a+~ciao;
a+miao;

a = 0;
a = a + 1.2;  // riassegnazione	

Parentesi graffe - funzioni

(
f = {arg a, b;     // dichiaro argomenti (input)
         a = 100;  // valori di default
         b = 12;
	 var piu, meno, diviso, per; // dichiaro variabili locali
	     piu    = a + b,         // assegno le operazioni
	     meno   = a - b,
	     diviso = a / b,
	     per    = a * b;
	["somma: "++piu,             // stampa output
	 "sottrazione: "++ meno,
	 "divisione: "++ diviso,
	 "moltiplicazione: "++ per].postln
    }                      
)

f.value(2, 3);     // modifico dinamicamente
f.value(b:2, a:3); // keyword notation

//====================================================================

(
g = {|ciao miao|         // argomenti altra scrittura
      ciao / miao};
)

f.value(miao:2, ciao:3); // keyword notation

Funzioni astratte

5.reciprocal   // Reciproco
r = {|a| 1/a}; 
r.value(5);

5.squared;          // Quadrato
0.5.ampdb;          // Conversioni, etc.
-3.abs;             // Valore assoluto
25.sqrt;            // Radice quadrata (square root)
60.rand;            // Scelta pseudocasuale (tra 0 e n-1), etc.

round(1.2357, 0.1); // Approssimazione decimale
rrand(1.0, 23.5);   // Scelta pseudocasuale (tra mine e max)

13.clip(1, 10);     // Clipping
13.wrap(1, 10);     // Wrapping
13.fold(1, 10);     // Folding

//====================================================================

// Funzioni vs AbstractFunction

dup( rand(100), 5);  // a ogni esecuzione sceglie un numero pseudo-casuale e lo ripete 5 volte uguale...
dup({rand(100)}, 5); // a ogni esecuzione ripete 5 volte la funzione di scegliere un numero pseudo-casuale...

Notazioni

// Receiver notation

124.postln;                               
100.rand;    
(Env.new([0,1,0.5,0],[0.1,0.2,1])).plot;
({SinOsc.ar(543,0,0.25)}).play;                
("notazione ricevente").speak;

//====================================================================

// Functional notation

postln(124);   // stampa nella post window 
rand(100);     // sceglie un valore random tra 0 e 100
plot(Env.new([0,1,0.5,0],[0.1,0.2,1]));
play({SinOsc.ar(543,0,0.25)});
speak("notazione funzionale"); // Solo Mac