Provided by: gramophone2_0.8.13a-3.1_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>