GRAMophone II roadmap
In questi ultimi due giorni mi sono ritagliato un po’ di tempo da dedicare al mio Grammy e il lavoro ha dato buoni frutti: i players dell’orchestra di GRAMophone II generano indipendentemente secondo la grammatica di Chomsky e secondo la grammatica di Lindenmayer!
Di seguito lo stato attuale del progetto:
Parser del linguaggio [100%]
grammyVM [100%]
generazione top down (Chomsky) [100%]
generazione bottom up (Lindenmayer) [100%]
implementazione macro & librerie [100%]
operatori melodici [10%]
generazione midi [0%]
Proviamo a dare in pasto a GRAMophone II l’esempio presente nel lavoro di Jon McCormack, da cui ho tratto l’idea per la mia tesi:
define do “C[,,,]”
define mi “E[,,,]”
define sol “G[,,,]” //GRAMophone II supporta le macro!
composition “Lindenmayer grammar example” of “Jon McCormack” {
grammar lindenmayer
%
player jon {
iterations 6
%
axiom->do;
do->mi;
mi->do sol do;
sol->; //produzione nulla!
}
}
l’output di debug di GRAMophone risulta:

Funziona!!! Ne dubitavate?!?
Vediamo un esempio di grammatica di Lindenmayer con contesto polifonico, un’altra delle novità di GRAMophone II:
define domaj “^C[,,,]E[,,,]G[,,,]^”
define lamin “^A[,,,]C[,,,]E[,,,]^”
composition “polyphonic context example” of “giovanni” {
grammar lindenmayer
%
player jon {
iterations 2
%
axiom->domaj;
domaj->lamin;
}
}
ed ecco il risultato:

Anche in questo caso GRAMophone genera senza problemi.
Come ultimo esempio, vediamo il caso di un’orchestra ibrida formata da due player. Il player giovanni genera con la grammatica di Chomsky mentre il player tommy con la grammatica di Lindenmayer:
composition “chomsky and lindenmayer” of “giovanni and tommy” {
%
player giovanni {
grammar chomsky
iterations 2
%
@composition->B[,,,]@composition;
}
player tommy {
grammar lindenmayer
iterations 2
%
axiom->A[,,,];
A[,,,]->C[,,,];
}
}
La stampa di debug è la seguente:

Tutto ok!!!

Questo materiale è protetto dalla Creative Commons License
Posted on April 28th, 2007 by gyofer
Filed under: projects
Leave a Reply