© 2024 Accademia Alban Berg

 

Manuale Tecnico

v. 1.0

 
| Home | MusicXII | Protocollo | Manuale | Compilatore | Moduli grafici | Contatti | Top |
 
     


I Moduli

La scrittura dei moduli riflette la semplicità del linguaggio: benché lo script possa essere anche di notevole complessità (a scelta e tempo dell'autore), l'output prevede sempre la scrittura di una serie di codici (vedi Manuale - Codici).

Ad es., un modulo che genera eventi di tipo "n" dovrà restituire sequenze costituite da:

$sequenza[]="n:canale,nota,valore,dinamica,nome";

La variabile "nome" contiene il nome della funzione generatrice, utile in sede di analisi e revisione dei contenuti (il nome della funzione può essere agevolmente ricavato dalla meta-funzione _FUNCTION_). Gli esempi del manuale sono più che sufficienti a documentare l'uso dei moduli.

La variabile $sequenza è un array autoincrementale passato al programma di compilazione.

Esaminiamo, ad es., un semplice modulo di tipo rnd: rnd-a,b. Il modulo utilizza una funzione di poche linee (function rnd ($pmt) - Nota: l'argomento dovrà avere sempre nome "pmt"):

function rnd ($pmt) {

    $par=explode(",",$pmt);
    $voci=$par[0];
    $eventi=$par[1];
    $fct= __FUNCTION__;

    $sequenza="";
    $dati=array(C,D,E,F,G,A,B);
    $ottave=array(0,1,2,3,4,5,6,7);
    $alter=array(d,b,n);
    $din=array(ppp,pp,p,mp,mf,f,ff,fff);
    $den=array(2,4,8,16,32,64);

      for ($i=1;$i<=$eventi;$i++) {
        $n1=rand (0,6); // dati
        $n2=rand (0,7); // ottave
        $n3=rand (0,2); // alter
        $n4=rand (0,7); // din
        $n5=rand (1,4); // num
        $n6=rand (0,5); // den
        $n7=rand (1,$voci); // chan

$sequenza[]="n:$n7,".$dati[$n1].$alter[$n3].$ottave[$n2].",".$n5."/".$den[$n6].",".$din[$n4].",".$fct;
    }

return $sequenza;
}

Si consideri che gli script non sono stati ancora ottimizzati, per cui molte routine potrebbero essere abbreviate e migliorate sotto tutti i punti di vista. Alla funzione viene passato l'argomento $pmt, nel nostro caso definito dalle lettere a,b. Il modulo determina la generazione di un evento sonoro multiplo casuale controllato. Il codice è costituito dal marker mod: seguito dal nome del modulo (rnd) e dal numero delle voci complessive (a) separate da un trattino (rnd-a). Separato da una virgola è indicato il numero complessivo degli eventi singoli (b). Può essere ripetuto ed inserito in qualsiasi sequenza di flusso. Il range comprende: note (C,D,E,F,G,A,B); ottave (da 0 a 7); alterazioni (d,b,n); dinamiche (ppp,pp,p,mp,mf,f,ff,fff); numeratore (da 1 a 4); denominatore (2,4,8,16,32,64).

Nel file di flusso appare l'istruzione:

mod:rnd-a,b

La funzione si limita ad espandere la richiesta trasformando la riga di comando in una serie di note (eventi tipo "n"). I parametri elaborati casualmente, su range controllato, sono quelli relativi a: note, ottave, alterazioni, dinamiche, numeratore, denominatore e canale. Va da sé che potrebbero essere scritti migliaia di moduli tipo rnd con modalità diverse di elaborazione dei dati: i due punti fermi sono esclusivamente la variabile passata (identificativa della riga della linea di flusso, denominata sempre "pmt") e la sequenza generata ($sequenza[], tipo array monodimensionale autoincrementale). I moduli possono essere generati dagli utenti: se conformi al protocollo vengono inseriti, dopo essere stati esaminati e testati, nel linguaggio (ogni modulo deve essere accompagnato dal file allegato di manuale consultando le regole di compilazione nell'apposita sezione). I moduli sono identificati dal marker "mod": il nome deve pertanto iniziare con tale marker. I file sono salvati con il prefisso "m_" ed estensione .php ( ad esempio: m_chord.php).

 

Gli Oggetti

Gli oggetti sono costituiti da sequenze di moduli. Il marker identificativo è "ogg": ad esso segue il modulo completo dei suoi parametri. I file sono salvati con prefisso "o_" ed estensione .php (ad es.: o_gruppo.php). La variabile passata avrà sempre nome "pmt"; la sequenza sarà del tipo:

$sequenza[]="mod:cpunto_d-x,y,z";

Gli oggetti possono generare eventi di notevole complessità strutturale: ciò comporta un intervento importante sia in fase di composizione (abbinamento delle geometrie e dei timbri) che, con proporzionale richiesta di impegno, in fase di esecuzione.

Trattandosi di problematiche di tipo estetico, non mi soffermo oltre sugli Oggetti: in questa sede vengono descritte esclusivamente le procedure "tecniche" e operative relative al linguaggio. Per un'ampia descrizione teorica degli oggetti si rimanda al testo "Teoria dei Sonemi" (Parte III - Cap. XIV) disponibile in → iTunes U.
 
 
 
 
 

 

35

   
| Home | MusicXII | Protocollo | Manuale | Compilatore | Moduli grafici | Contatti | Top |