Provided by: gramophone2_0.8.13a-3.2_amd64 bug

NOME

       gramophone2 - GRAMophone e' un generatore algoritmico per la composizione musicale.

USO

       gramophone2 [-c|-d] sourcefile [midifile]

OPZIONI

       -c     e'  un'opzione che consente di effettuare semplicemente il controllo della sintassi
              del sorgente senza generare la musica.

       -d     e' un'opzione che consente di attivare una modalita' di debug, con stampa  a  video
              dei  valori dei parametri della composition, dei parametri dei players e delle note
              generate.

DESCRIZIONE

       In GRAMophone la generazione della musica viene realizzata tramite l'uso di  due  tipi  di
       grammatiche  formali: la grammatica regolare di Chomsky (o di tipo 3) per un approccio TOP
       DOWN alla composizione e una versione ridotta  della  grammatica  di  Lindenmayer  per  un
       approccio BOTTOM UP.

CONCETTI BASE DI GRAMophone

       GRAMophone  si  basa  in parte su un'idea di Jon McCormack, da cui riprende il concetto di
       virtual player (musicista virtuale). Il player e' associato ad  una  traccia  MIDI  ed  e'
       responsabile  per  l'interpretazione  delle  istruzioni che gli vengono date, che nel caso
       generale  significa  suonare  note  (mandare  messaggi  MIDI).  L'insieme  dei  player  in
       GRAMophone forma l'orchestra, che esegue una compositione.

       Un  qualunque  numero  di  player  puo'  essere  impiegato in una composition, anche se le
       caratteristiche dell'hardware potrebbero fissare una limitazione sul numero.

       Generalmente ogni player suona un proprio strumento e ciascuno ha un insieme differente di
       regole.   Un  singolo  player  e' caratterizzato da un insieme di parametri comuni a tutta
       l'orchestra e/o un insieme di parametri personali.

       I parametri che caratterizzano l'orchestra sono:

              il tipo di grammatica utilizzata per la generazione (Chomsky o Lindenmayer);

              il metronomo;

              la misura;

              il numero di iterazioni per il processo delle produzioni.

       Le caratteristiche personali di ciascun player sono:

              il tipo di grammatica utilizzata per la generazione (Chomsky o Lindenmayer);

              lo strumento suonato;

              il canale MIDI a cui e' associato;

              il numero di iterazioni per il processo delle produzioni.

       Le note suonate dai player mantengono uno stato corrente che consiste di:

              ottava

              volume

              durata

              rilascio

       Queste  caratteristiche   possono   essere   controllate   parametricamente   tramite   la
       dichiarazione  da  parte  di  ciascun  player di variabili ad esse associate.  GRAMophone,
       infine, offre la possibilita' di generare musica in maniera non deterministica, sia con la
       grammatica di Chomsky sia con quella di Lindenmayer.

GUIDA A GRAMophone

       Di  seguito viene riportata la piu' semplice composizione algoritmica che si puo' generare
       con GRAMophone,  per  introdurne  i  concetti  fondamentali.  Questa  composizione  genera
       semplicemente la nota LA e viene presentata sia con il metodo di Chomsky sia con quello di
       Lindenmayer.

       composition "Give Me A" of "Schroeder" {

         //this composition generates the A note with the Chomsky grammar

         grammar chomsky
         tempo 120
         time_signature 4/4
         %
         player Schroeder {
           instrument 0
           %
           @composition->A[,,,];
         }
       }

       composition "Give Me A" of "Schroeder" {
         //this composition generates the A note with the Lindenmayer grammar
         grammar lindenmayer
         tempo 120
         time_signature 4/4
         %
         player Schroeder {
           instrument 0
           %
           axiom->A[,,,];
         }
       }

       LE PAROLE CHIAVE composition E of

       Ogni composizione algoritmica deve iniziare con la parola chiave composition, a  cui  deve
       seguire una stringa (racchiusa tra doppi apici) con il nome della composizione. Di seguito
       e' richiesta la parola chiave of, a cui deve seguire un'altra stringa con il copyright del
       brano.

       IL BLOCCO DELLA COMPOSIZIONE

       Il  blocco  della  composizione  e' delimitato dalle parentesi graffe. e' suddiviso in tre
       sezioni: una sezione per la definizione dei  parametri  della  composizione,  una  per  la
       dichiarazione  e  la  inizializzazione  delle  eventuali  variabili  globali e una sezione
       orchestra, dove si definiscono i vari player che  "suoneranno"  il  pezzo.  Le  prime  due
       sezioni sono separate dal simbolo %.

       LA PAROLA CHIAVE player

       Ciascun player si definisce tramite la parola chiave player, seguita da un identificatore.

       IL BLOCCO DEL player

       Il blocco del player e' delimitato dalle parentesi graffe ed e' diviso in tre sezioni: una
       sezione per la definizione dei parametri della traccia associata al player, una  parte  di
       dichiarazione e inizializzazione per le eventuali variabili locali del player e la sezione
       per le regole formali. Le prime due sezioni sono separate dal simbolo %.

       COMMENTI

       In GRAMophone, i commenti sono C-like: devono iniziare con la coppia di caratteri  '/*'  e
       devono  terminare  con  la coppia di caratteri '*/'. Fra l'asterisco e la barra non devono
       essere inseriti spazi. Tutto cio' che  si  trova  tra  queste  coppie  di  simboli  verra'
       ignorato  dal parser di GRAMophone.  e' possibile definire anche intere linee di commento.
       Le righe di commento iniziano con il simbolo // e terminano alla fine della riga, come nel
       caso dei due esempi iniziali.

       Sezione di definizione parametri della composition

       Qui  si  dichiarano  i  parametri  comuni a tutti i player dell'orchestra. I parametri che
       possono essere dichiarati sono:

              grammar

              resolution

              iterations

              tempo

              time_signature

       Questa sezione deve terminare con il simbolo %.

       grammar

       Questo parametro e' obbligatorio e definisce il tipo di grammatica che verra' usato per la
       generazione. Il tipo puo' essere chomsky o lindenmayer.

       resolution

       Questo  parametro  indica  il  numero  di unita' di tempo per la durata di 1/4. Se omesso,
       verra' usato il valore di default 480.

       iterations

       Questo parametro indica il numero di iterazioni per  la  generazione.  Ha  un  significato
       differente  a  seconda  del tipo di grammatica scelto, come verra' spiegato in seguito. Se
       omesso, viene utilizzato il valore di default 1.

       tempo

       Questo parametro indica il metronomo della composizione. Se omesso,  viene  utilizzato  il
       valore di default 120.

       time_signature

       Questo  parametro  indica  la  misura  della  composizione. Se omesso, viene utilizzato il
       valore di default 4/4.

       Sezione di dichiarazione variabili globali della composition

       Le variabili servono per controllare parametricamente gli attributi di una nota e  verrano
       spiegate in seguito.

       Sezione di definizione parametri del player

       Qui  si  dichiarano  i  parametri  personali e le variabili di ciascun player. I parametri
       personali che possono essere dichiarati sono:

              instrument

              channel

              iterations

       Questa sezione deve terminare con il simbolo %.

       instrument

       Questo parametro indica il tipo di strumento da far suonare al player.  Gli  strumenti  di
       GRAMophone  coincidono  con  il  set  di  strumenti  del  General MIDI. Il range di valori
       accettati va da 0 a 127; ci sono quindi 128 strumenti da cui scegliere. Di  seguito  viene
       riportata una tabella con il codice e lo strumento a cui esso fa riferimento:

              0 Piano

              1 Brite Piano

              2 HammerPiano

              3 Honkey Tonk

              4 New Tines

              5 Digital Piano

              6 Harpsichord

              7 Clavi

              8 Celesta

              9 Glocken

              10 Music Box

              11 Vibes

              12 Marimba

              13 Xylophon

              14 Tubular Bell

              15 Santur

              16 Full Organ

              17 Percussive Organ

              18 BX-3 Organ

              19 Church Organ

              20 Positive

              21 Musette

              22 Harmonica

              23 Tango

              24 Classic Guitar

              25 Acoustic Guitar

              26 Jazz Guitar

              27 Clean Guitar

              28 Mute Guitar

              29 Overdrive Guitar

              30 Distorted Guitar

              31 Harmonics

              32 Jazz Bass

              33 Deep Bass

              34 Pick Bass

              35 Fretless Bass

              36 Slap Bass 1

              37 Slap Bass 2

              38 Syntethized Bass 1

              39 Syntethized Bass 2

              40 Violin

              41 Viola

              42 Cello

              43 Contra Bass

              44 Tremolo String

              45 Pizzicato

              46 Harp

              47 Timpani

              48 Marcato

              49 Slow String

              50 Analog Pad

              51 String Pad

              52 Choir

              53 Doo Voice

              54 Voices

              55 Orchestra Hit

              56 Trumpet

              57 Trombone

              58 Tuba

              59 Mute Trumpet

              60 French Horn

              61 Brass Section

              62 Synthetized Brass 1

              63 Synthetized Brass 2

              64 Soprano Sax

              65 Alto Sax

              66 Tenor Sax

              67 Baritone Sax

              68 Sweet Oboe

              69 English Horn

              70 Bassoon Oboe

              71 Clarinet

              72 Piccolo

              73 Flute

              74 Recorder

              75 Pan Flute

              76 Bottle

              77 Shakhukuhachi

              78 Whistle

              79 Ocarina

              80 Square Lead

              81 Saw Lead

              82 Caliope Lead

              83 Chiff Lead

              84 Charang Lead

              85 Air Chorus

              86 Rezzo4ths

              87 Bass & Lead

              88 Fantasia

              89 Warm Pad

              90 Poly Synth Pad

              91 Ghost Pad

              92 Bowed Pad

              93 Metal Pad

              94 Halo Pad

              95 Sweep Pad

              96 Ice Rain

              97 Soundtrack

              98 Crystal

              99 Atmosphere

              100 Brightness

              101 Goblin

              102 Echo Drop

              103 Star Theme

              104 Sitar

              105 Banjo

              106 Shamisen

              107 Koto

              108 Kalimba

              109 Scotland

              110 Fiddle

              111 Shanai

              112 Metal Bell

              113 Agogo

              114 Steel Drums

              115 Wood Blok

              116 Taiko Drum

              117 Melodic Tom

              118 Synth Tom

              119 Reverse Cymbal

              120 Fret Noise

              121 Noise Chiff

              122 Seashore

              123 Birds

              124 Telephone

              125 Helicopter

              126 Stadium!!

              127 Gunshot

       Se il parametro instrument viene omesso, viene utilizzato il valore di default 0.

       channel

       Questo parametro indica quale canale Midi associare al player. I canali possibili sono 16.
       Il canale 10 e' speciale ed e' riservato alle percussioni. Se omesso, viene  assegnato  il
       valore di default 1.

       iterations

       Questo  parametro  indica  il  numero  di iterazioni per la generazione. Ha un significato
       differente a seconda del tipo di grammatica scelto, come verra' spiegato in seguito. Se il
       parametro  iterations  e'  presente  anche  nella  parte  dichiarativa  della composition,
       quest'ultimo verra' ignorato.

       Sezione di dichiarazione variabili locali del player

       Le variabili servono per controllare parametricamente gli attributi di una nota e  verrano
       spiegate in seguito.

       COME SI SCRIVONO LE NOTE IN GRAMophone

       Le note in GRAMophone sono la prima categoria di simboli terminali in GRAMophone.

       GRAMophone usa la notazione inglese per il nome delle note:

              la nota LA e' A;

              la nota SI e' B;

              la nota DO e' C;

              la nota RE e' D;

              la nota MI e' E;

              la nota FA e' F;

              la nota SOL e' G;

       I nomi delle note devono essere scritti obbligatoriamente in maiuscolo.  I simboli bemolle
       e diesis sono rappresentati rispettivamente dal carattere 'b' minuscolo e '#'; essi  vanno
       scritti di seguito senza spazi al nome della nota: A#, Gb, eccetera.

       ATTRIBUTI DELLE NOTE

       Le  note  sono caratterizzate da quattro attributi: l'ottava, l'intensita', la durata e il
       rilascio. In GRAMophone questi quattro attributi  sono  chiamati  rispettivamente  octave,
       velocity,  duration  e  release.  L'attributo octave varia da -2 a 8, mentre gli attributi
       velocity e release variano da 0 a 127. Se la nota viene scritta  senza  specificare  alcun
       attributo,  vengono utilizzati i valori di default: 3 per l'ottava,  64 per l'intensita' e
       il rilascio, il valore di default corrente della resolution (semiminima)  per  la  durata.
       Nell'esempio  "Give  me  A"  nel  corpo  della produzione e' scritto semplicemente A[,,,].
       Questo vuol dire che viene generata una nota LA suonata alla terza ottava, della durata di
       1/4 e con un'intensita' ed un rilascio pari a 64.

       DEFINIRE GLI ATTRIBUTI DI UNA NOTA

       Per  definire  gli  attributi  di  una nota, questi vanno scritti all'interno di parentesi
       quadre che seguono senza spazi il nome della nota. Ciascuna nota  puo'  avere  al  massimo
       quattro attributi e puo' essere definito solo un attributo per ciascun tipo.

       L'ordine con cui vanno definiti gli attributi di diverso tipo e' il seguente:

              ottava

              intensita'

              durata

              rilascio

       Se  non  vengono  definiti  tutti  e  tre  i tipi di attributo, per quelli mancati vengono
       utilizzati i valori di default.

       Esempi di note con attributi sono i seguenti:

              C[2, 50+60/2, 240*4,] - suona un Do alla seconda ottava, con un'intensita'  di  80,
              la  durata  di  960  (minima  con  resolution impostata a 480) ed un rilascio di 64
              (valore di default);

              Db[4,,,] - suona un RE bemolle alla quarta ottava, usando i valori di  default  per
              la velocity, la duration e la release;

              F#[,,,] - usa i valori di default per tutti gli attributi;

       Esempi errati sono i seguenti:

              Db[3, 127, 960, 64, x] - troppi attributi (x e' una variabile).

       PAUSE

       Le  pause sono un'altra categoria dei simboli terminali di GRAMophone.  Si indicano con la
       lettera R e accettano solo il tipo  di  attributo  duration.  Se  non  specificato,  viene
       utilizzato il valore di default della resolution. La definizione dell'attributo avviene in
       maniera analoga alle note.

       Esempi di pause sono i seguenti:

              R[480/2] - una pausa che dura 240 (il tempo di una croma con resolution a 480);

              R[] - usa il valore di default per l'attributo di tipo duration.

       ACCORDI

       Gli accordi sono l'ultima categoria di simboli terminali usati da GRAMophone.  Un  accordo
       e'  una serie di note suonate simultaneamente. In GRAMophone le note suonate in un accordo
       sono racchiuse tra due simboli '^'.

       Esempi di accordi sono i seguenti:

              ^C[,,,]E[,,,]G[,,,]^ - suona un accordo di DO maggiore,  utilizzando  i  valori  di
              default per ciascuna nota.

              ^A[2,80,240,]C[2,,240,]E[2,,240,]^  - suona un accordo di LA minore della durata di
              1/8, con tutte le note suonate alla seconda ottava con un rilascio di 64 (valore di
              default),  con  la  prima  nota  dell'accordo  suonata  ad un'intensita' di 80 e le
              restanti due ad un'intensita' di 64 (valore di default).

       RUOLO DI R NEGLI ACCORDI COMPLESSI

       Non sempre le note in un accordo hanno la stessa durata. Ad esempio puo' capitare  che  in
       una  battuta,  mentre  suona  una nota C[2,,1920,] della durata di 4/4, il musicista debba
       contemporaneamente suonare quattro note  della  durata  di  una  semiminima  ciascuna  nel
       seguente  ordine: C[,,,], E[,,,], G[,,,], Bb[,,,]. All'interno dell'accordo quindi bisogna
       trovare un modo per dire a GRAMophone che le note  C[2,,1920,] e C[,,,] devono  cominciare
       a  suonare nello stesso istante, che E[,,,] deve iniziare a suonare dopo una pausa di 1/4,
       G[,,,] dopo 2/4 e Bb[,,,] dopo 3/4. In GRAMophone questo si scrive nella seguente maniera:

       ^C[2,,1920,]C[,,,]R[]E[,,,]R[960]G[,,,]R[1440]Bb[,,,]^

       Cioe' davanti a ciascuna nota dell'accordo si puo' definire una pausa che  rappresenta  il
       tempo che bisogna aspettare prima che la nota inizi a suonare.

       L'ordine  con cui si scrivono le note nell'accordo non ha importanza. L'accordo precedente
       si puo' scrivere anche come:

       ^R[]E[,,,]C[2,,1920,]R[1440]Bb[,,,]C[,,,]R[960]G[,,,]^

       IDENTIFICATORI

       Alcune entita' del linguaggio di GRAMophone, come ad esempio le variabili, le macros ed  i
       simboli  non  terminali  della  grammatica di Chomsky, devono avere dei nomi per mezzo dei
       quali possano essere identificate. Questi nomi vengono chiamati identificatori  e  vengono
       scelti  dal compositore.  Gli identificatori usati dal linguaggio di GRAMophone riprendono
       gli identificatori del linguaggio Pascal. Infatti un  identificatore  e'  formato  da  una
       lettera  seguita  da  una  sequenza  di lettere o cifre. Gli identificatori di GRAMophone,
       inoltre, devono essere obbligatoriamente scritti in minuscolo.

       Grammatica di Chomsky

       SIMBOLI NON TERMINALI

       Nella grammatica di Chomsky i simboli non terminali servono per dare una struttura  e  uno
       'stile'  alla  composizione musicale. I simboli non terminali si scrivono con un carattere
       '@' seguito senza spazi da un identificatore.  La  grammatica  di  Chomsky  utilizzata  da
       GRAMophone  e'  libera  dal contesto, quindi la testa delle produzioni puo' essere solo un
       non terminale.

       IL SIMBOLO NON TERMINALE @composition

       e' il simbolo non terminale che corrisponde a quella che sara' la composizione finale  del
       singolo player ed e' obbligatorio.

       OPERATORE DI PRODUZIONE

       e'  definito dalla sequenza di caratteri '->' e separa la testa della produzione dal corpo
       della produzione.

       CORPO DELLA PRODUZIONE

       Puo' contenere sequenze di simboli terminali (note, pause e  accordi)  e  di  simboli  non
       terminali. Ciascuna produzione deve terminare con un punto e virgola.

       OPERATORE | (OR)

       Una  produzione  puo'  essere non deterministica, cioe' presentare due o piu' possibilita'
       tra cui scegliere durante la generazione. Il corpo di una produzione non deterministica e'
       formato dalle varie possiblita' separate dall'operatore |. Ad esempio

       @non_det->A[,,,]B[,,,]@Seq1|^A[,,,]B[,,,]C[,,,]^@Seq2R[]C[,,,];

       e' una produzione non deterministica.

       SIGNIFICATO DELLE ITERAZIONI NELLA GRAMMATICA DI CHOMSKY

       Nella  grammatica  di  Chomsky  possono  capitare  produzioni  che contengono cicli, cioe'
       produzioni nel cui corpo sono presenti simboli non terminali che  fanno  riferimento  alla
       produzione che si sta processando, ad esempio:

       @Sequenza1->B[,,,]A[,,,]C[,,,]@Sequenza1;

       Per  evitare  un loop infinito durante la generazione, il simbolo non terminale @Sequenza1
       viene processato un numero di volte pari al parametro iterations.

       Grammatica di Lindenmayer

       La grammatica di Lindenmayer tratta solo simboli terminali e quella adottata da GRAMophone
       puo'  essere  libera  dal  contesto o operare in un contesto polifonico. Nella testa delle
       produzioni possono esserci quindi  singole note o accordi. Ogni produzione e' separata  da
       un punto e virgola.

       AXIOM

       e' la produzione iniziale da cui parte la generazione. e' obbligatoria.

       OPERATORE DI PRODUZIONE

       e'  definito dalla sequenza di caratteri '->' e separa la testa della produzione dal corpo
       della produzione.

       OPERATORE | (OR)

       Una produzione puo' essere non deterministica, cioe' presentare due  o  piu'  possibilita'
       tra cui scegliere durante la generazione. Il corpo di una produzione non deterministica e'
       formato dalle varie possibilita' separate dall'operatore |. Ad esempio

       A[,,,]->A[,,,]B[,,,]|C[,,,]D[,,,];

       e' una produzione non deterministica.

       SIGNIFICATO DELLE ITERAZIONI NELLA GRAMMATICA DI LINDENMAYER

       A ciascun passo vengono applicate alla stringa di note corrente tutte le produzioni  della
       grammatica  contemporaneamente.  Il  parametro  iterations  in  questo caso rappresenta il
       numero di passi da effettuare.

       Uso delle variabili

       DICHIARAZIONE E INIZIALIZZAZIONE DELLE VARIABILI

       GRAMophone e' in grado di controllare gli attributi di una nota parametricamente  mediante
       l'uso  di  variabili. Queste variabili si dichiarano nella parte dichiarativa del player e
       possono essere di tipo octave,  velocity,  duration  e  msb.  Una  variabile  si  dichiara
       scrivendo  il  tipo  seguito  da  uno  o  piu' identificatori separati da una virgola e la
       dichiarazione  dev'essere  terminata  da  un  punto  e  virgola.  Per   ogni   player   un
       identificatore puo' essere dichiarato solo una volta.

       Sono dichiarazioni corrette le seguenti:

              velocity x, y;

              octave oct, z;

              duration w;

       Sono dichiarazioni scorrette le seguenti:

              velocity x, x;

              octave z;

              duration z;

       Dopo  la  parte  dichiarativa  e  prima  della  grammatica  e'  possibile inizializzare le
       variabili dichiarate mediante l'operatore =.

       Un Esempio di dichiarazione e inizializzazione e' il seguente:

              velocity x;

              x=0;

       USARE LE VARIABILI CON LE NOTE

       Le variabili si usano nelle espressioni degli attributi della nota. GRAMophone  esegue  il
       controllo  dei  tipi  nelle  espressioni,  quindi  ad esempio non e' possibile sommare una
       variabile di tipo octave con una di tipo velocita'.

       Un esempio di nota variabile e' la seguente:

              velocity x;

              duration z, w;

              A[4,x,z+w,].

       ESEMPIO
       composition "Crescendo" of "Schroeder" {

         //this composition generates 64 A notes with a growing velocity

         grammar chomsky
         tempo 120
         time_signature 4/4
         iterations 64
         %
         player Schroeder {
           instrument 40
           %
           velocity x=0;

           @composition->[A,x=x+1,,]@composition;
         }
       }

       CONDIZIONI

       Nelle produzioni sia della grammatica di Chomsky sia della grammatica  di  Lindenmayer  e'
       possibile definire delle condizioni sulle variabili eventualmente presenti nel corpo delle
       produzioni. Se la condizione e' verificata, la produzione viene processata altrimenti  no.
       Una  condizione  si  definisce subito dopo il nome della produzione tramite il simbolo '?'
       seguito da una o piu' espressioni booleane.

       Gli operatori booleani sono:

              !         not

              &&        and

              ||        or

       Gli operatori relazionali sono:

              ==        uguale

              !=        diverso

              <         minore

              >         maggiore

              <=        minore o uguale

              >=        maggiore o uguale

       Un esempio di produzione con condizione e' la seguente:

       @battuta?x!=0->A[,x=x-10,,]@battuta;

       il suo significato e' il seguente: finche' x e' diverso  da  zero,  genera  la  produzione
       @battuta, altrimenti no.

       Discography, la libreria di GRAMophone

       GRAMophone  e'  in  grado di includere librerie esterne, che vengono chiamate discografie.
       Per includere in un file sorgente una discografia si usa  la  parola  chiave  discography,
       seguita  dal  nome  del  file  che  la  identifica. Una discography puo' essere inclusa in
       qualsiasi punto del file sorgente, purche'  il  suo  contenuto  sia  in  sintonia  con  la
       posizione del sorgente dove e' stata inserita.

       Macros

       e'  possibile  definire  macros  utilizzando  la  parola  chiave  define,  seguita  da  un
       identificatore scritto obbligatoriamente in minuscolo e da una stringa  chiusa  tra  doppi
       apici.  Le macros vanno definite obbligatoriamente all'inizio della composizione sorgente,
       prima  cioe'  della  parola  chiave  composition.  Ad  esempio,   se   vogliamo   scrivere
       semplicemente a al posto di A[,,,], bisogna definire la seguente macro:

       define a "A[,,,]"

       LA FUNZIONE repeat()

       La  funzione  repeat()  prende  come  argomento  un  valore di tipo msb ed una sequenza di
       Chomsky o Lindenmayer. Permette di ripetere la sequenza inserita per un  numero  di  volte
       pari al valore di tipo msb inserito.

       LA FUNZIONE rand()

       La funzione rand() prende come argomento un'espressione e ritorna un valore casuale minore
       del risultato dell'espressione.

       Operatori melodici di GRAMophone

       transpose()

       L'operatore transpose() prende come argomento un valore di tipo msb  ed  una  sequenza  di
       Chomsky  o Lindenmayer. Genera una sequenza in cui tutte le note della sequenza presa come
       argomento vengono trasposte di un numero di semitoni pari al valore di tipo msb inserito.

       inversion()

       L'operatore inversion() prende come argomento  una  sequenza  di  Chomsky  o  Lindenmayer.
       Genera  una  sequenza in cui gli intervalli tra la prima e le restanti note della sequenza
       presa come argomento vengono calcolati in direzione opposta.

       retrograde()

       L'operatore retrograde() prende come argomento una  sequenza  di  Chomsky  o  Lindenmayer.
       Genera una sequenza contraria a quella inserita come argomento.

AUTORE

       Giovanni Ferranti <giovanni_at_giovanniferranti_dot_it>