Sei sulla pagina 1di 42

Manuale di Lily Pond in Italiano.

Il programma è molto intuitivo, veloce e leggero.


Vediamo di comprenderne la struttura base:

La base prevede la seguente struttura:

\header {in cui si inseriscono i titoli }

\melody = \relative c {in cui si inserisce la musica a partire dalla chiave musicale, la tonalità
e poi tutte le note. }

text = \lyricmode { in cui inserire il testo }

\score {<>}

\layout {comando con il quale si impostano le varie combinazioni testo-musica }

\midi { per creare anche il file midi }

\paper per i parametri editoriali

Testo e autori.
Per immettere il titolo del brano, gli autori del testo e/o della musica, date, ecc. della
partitura, dello spartito o della parte occorre impartire i seguenti comandi:

\header {

title = \markup \center-align { “Santo” }

poet = “Testo: Jacopo Feliciani”

composer = \markup \center-align { “Musica: Jacopo Feliciani” \small “(2008)” }

texttranslator = “Text Translator” }

instrument = \markup \bold \italic “Voce e Organo”

piece = “Piece”
Piè di pagina.
Per annullare la dicitura standard del fondo pagina digitare nell’heater:

tagline = ” ”

Mentre per aggiungere una propria scritta scrivere all’interno delle virgolette:

tagline = “Trascritto con Lily Pond da Jacopo Feliciani – Copyright (2008)”

Battuta di chiusura del pentagramma: \bar “|.”

Nomi dei suoni (note): le note si indicano con i Nomi anglosassoni in minuscolo che sono c
– d – e – f – g – a – b che corrispondono alle note Do – Re – Mi – Fa – Sol – La – Si.

Le note alterate o naturali vanno sempre indicate. Per il diesis bisogna aggiungere is
subito dopo attaccato alla nota, per il bemolle es.

(Se si vogliono immettere le note con le note del proprio sistema musicale basta
aggiungere il comando: include “italiano.ly”#( set-global-staff-size 16)

di seguito a quello \relative.

Es: \relative include “italiano.ly”#( set-global-staff-size 16) global =

In questo caso si attiva la Nomenclatura italiana delle note do re mi fa sol la si. Per il diesis
in questo caso bisogna indicare con d e bemolle bisogna indicare con b.

es. dod (Do diesis) e dob (Do bemolle).

Durata note:

1 semibreve – 2 minima -4 semiminima -8 croma -16 semicroma -32 biscroma -64


semibiscroma

Es: c4 d4 e4 f4 g2 a4 b16

Se l’intervallo tra una nota e una successiva è maggiore di una quarta, allora si deve
indicare accanto alla nota con la virgola , o con l’accento ‘.

c c’

c c,

Alterazioni:
diesis bemolle doppio diesis doppio bemolle:
is1 es isis eses

Mettendo un punto esclamativo segna di nuovo un accidenti anche se non dovrebbe


essere segnato. Il punto interrogativo, invece, lo mette tra parentesi. cis! cis?

Pause: si indica con r e il numero che ne definisce il tempo oppure con s se la vogliamo
occultare.

Tonalità:
Re maggiore \key d \major a1

Do minore \key c \minor

Per la posizione di una certa nota del pentagramma si utilizzano o l’accento ‘ per innalzare
di un’ottava o la virgola, , per abbassarsi, seguita immediatamente dal numero che indica
la durata. Es. do 4 di valore minima in chiave di sol c2’ se è un do 2 avremo c2,

Legato: si ottiene mettendo tra le due note da legare il segno dell’equivalente ~ .

legatura note ~

Legatura valore di portamento: si ottengono mettendo le note da legare tra parentesi


rotonde

d4( e16) eis( a d c cis d) a( d4) a8(\( ais b e) ais2 b’2 a4 cis,\) c2~( e8 fis fis4 ~ gis2 g2)

Segni dinamici:

marcato con punto staccato con trattino diminuendo sforzando

c-. c– c-> c-^ c-+ c-_

Dinamica:

c\ff c\mf c\p c\ppc2\ c2 c2\!

Diteggiatura: La diteggiatura si ottiene mettendo attaccato subito dopo la nota un trattino –


seguito dal numero del dito da utilizzare: c-3 e-5 b-2 a-1

Testo

c1^”espr” a_”legato”

c1^\markup{ \bold espr}


c1_\markup{

\dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }

c_-^1 d^. f^4_2-> e^-_+

Unioni delle note:

c8 ais c ees d c16 b a8

a8[ ais] d[ ees r d] a b

\autoBeamOff

e8 c b4 d8. c16 a4

\autoBeamOn

a8 c b4 d8. c16 a4

\times 2/3 { f8 g a }

\times 2/3 { c r c }

\times 2/3 { f,8 g16[ a g a] }

\times 2/3 { d4 a8 } c2

\grace { a32[ b] } e2 c2

\appoggiatura b16 a2 c2

\acciaccatura e16 c2

Spartito:

\relative c” {

\new PianoStaff <> }

Testo e musica:

<> <> <>

Nome degli strumenti:


\set Staff.instrumentName = “Church organ ”

Nome abbreviato strumenti:

\set Staff.shortInstrumentName = “Organ ” c1

\break c”

Nome strumenti marcato:

\set Staff.instrumentName = \markup {

\column { “Fagotti”

\line { “in B” \smaller \flat } } }

c”1

Centrare nome strumenti:

{ <> }

Terzine:

\times 2/3 { c8 d e }

\times 2/3 { c c c }

\times 2/3 { e,8 a16[ a a a] }

\times 2/3 { e4 a8 }

Dimensioni spartito:

\layout{ #(layout-set-staff-size 6) }

Punto di valore: occorre mettere un punto dopo la durata, ad esempio c4. per il do
minima+ semiminima. Per i due punti si mettono 2 puntini ecc.

Per creare un file SVG vettoriale, modificabile con programmi vettoriali come Inkscape,
andare al prompt dei comandi nell’MS-DOS e digitare: lilypond -bsvg miofile.ly
specificando il percorso del file in cui è il file .ly da cui si vuole ottenere il file svg.

Indicazioni di tempo da scrivere sulle parti:


Molto dolce:

\relative c” {

\tempo 4=50

a4.\mpdolce d8 cis4–\glissando a | b4 bes a2

Più mosso:

\tempoMark “Poco piu mosso”

cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2

CORONA:

c2\fermata

\override Script #'padding = #3

b2\fermata

Corona normale sopra sotto

c\fermata c^\fermata c_\fermata

Nascondere le note:

c4 d4

\hideNotes e4 f4

\unHideNotes g4 a

Per unire note con un tratto si usano le parentesi quadrate. Es.: a [ c ]

Crescendo: c\ a a\!

Accordi:
\chordmode { c:dim a:maj7 }

Da capo o D.C.:

c4 \mark \markup { \musicglyph #”scripts.segno” }


c4 \mark \markup { \musicglyph #”scripts.coda” }

c4 \mark \markup { \musicglyph #”scripts.ufermata” }

ALTRO MANUALE nr: 2


Scrivere le note

Indice generale0

 Home del progetto

A. Parte 1a: Gestione dello spartito


1. Lezione 1 - Scrivere le note
2. Lezione 2 - Uso delle variabili

B. Parte 2a: Stile e output


3. Lezione 3 - Make up della partitura
4. Lezione 4 - Trasposizione & output

C. Parte 3a: Gestione della partitura


5. Lezione 5 - Sistemi multipli
6. Lezione 6 - Estrazione delle parti

D. Appendice: Script di riferimento


I. Schema 20: Trasposizione & output
II. Schema 26: Sistemi multipli
III. Schema 33: estrazione delle parti

Lezione 1

Questa prima lezione fa riferimento agli appunti relativi al primo incontro avvenuto il 22
Marzo 2018.

In primo luogo, creiamo nel nostro file system una cartella di lavoro che potremo chiamare
<Primolily>.
Apriamo un editor di testo o l’editor proprietario di LilyPond e scriviamo il nostro primo
comando, che identificherà la versione del compilatore con il quale realizzeremo il nostro
spartito musicale:

Schema 1: versione del programma

\version "..."
nel presente corso abbiamo utilizzato la versione 2.18.2, che andrà inserita fra i due
caratteri di citazione <”> .

Questa riga di codice – come da noi sperimentato nell’ambito delle esercitazioni


frontali – può essere posizionata in qualunque punto del file, poiché ciò, ai fini della
compilazione, è assolutamente ininfluente; tale istruzione, però, è necessaria alla
compilazione del codice sorgente.

Abbiamo pensato bene, quale scopo dell’esercitazione, di trascrivere in maniera


facilitata le prime sedici misure della celebre melodia dell’inno alla gioia e, per fare
ciò, cominceremo ad immettere le prime quattro misure che compongono la melodia,
utilizzando il codice seguente:

Schema 2: le altezze

\version "2.18.2"
\relative c'' {
e4 e f g | g4 f e d | c4 c d e | e4. d8 d4 r |
}

Ora, nella cartella appena creata, sarà necessario eseguire un salvataggio del
documento, attribuendo ad esso un nome seguito dall’estensione .ly – ad esempio:
<primolily.ly> – e, successivamente, darlo in pasto al compilatore mediante gli
appropriati comandi.

Nota: consultare la documentazione del programma, poiché – come osservato nel


corso delle lezioni – le procedure variano in relazione al sistema operativo per il quale
è concepito il software in uso.

Dopo la compilazione del sorgente, se la sintassi sarà corretta, a schermo dovrebbero


aprirsi due finestre.
La prima finestra sarà quella detta di log, che offre un rendiconto del successo
relativo al processo di compilazione o, se presenti, fornisce un report degli eventuali
messaggi di errore, causati da sbagli di sintassi a livello del sorgente.
Una seconda finestra – accolta dagli allievi sempre con particolare compiacimento
durante i nostri incontri – dovrebbe presentare il lettore predefinito per la lettura dei
file in formato PDF, con il risultato grafico della compilazione: nel nostro caso, le
prime quattro misure della melodia appena codificata e riportata nell’immagine qui
sotto: Wow!

Nota: rispetto all’esempio visualizzato – per ragioni che spiegheremo in seguito – il


file compilato presenterà sempre un rientro al livello del primo pentagramma della
partitura.

Nella cartella di lavoro, inoltre, assieme al file di origine sul quale stiamo operando,
sarà presente il risultato grafico della compilazione, all’interno di un documento che
avrà lo stesso nome del sorgente, ma con estensione PDF, il quale – come abbiamo
già osservato – viene aperto mediante una procedura automatica nel PDF reader
predefinito.

Nota: ogni compilazione sostituirà il file PDF senza nessuna richiesta di conferma; se
si desidera mantenere una versione del documento precedentemente compilato, sarà
necessario farne una copia in un’altra posizione o modificarne il nome.

Per concludere questa prima lezione, sarà utile dare completezza al nostro
pentagramma – un po’ scarno a dire il vero – inserendo la codifica che determinerà
l’armatura di chiave – quella di Sol per default – le indicazioni di tempo, le indicazioni
metronomiche e la doppia barra di chiusura del brano.

Impareremo, in questo specifico passaggio, anche ad inserire dei commenti


all’interno del codice; essi saranno ignorati dal compilatore del sorgente, ma
torneranno a noi molto utili quando le proporzioni del documento si espanderanno
sensibilmente.

Per fare ciò, integriamo il codice precedentemente immesso con queste ulteriori
istruzioni:

Schema 3: armatura e commenti

%Versione del programma


\version "2.18.2"
%definisce la posizione della melodia rispetto al Do3: nella circostanza il primo Mi
sarà quello sul quarto spazio del pentagramma in chiave di Sol
\relative c'' {
%Definisce la tonalità di impianto della melodia: nel nostro caso Do Maggiore.
\key c \major
%Determina la suddivisione temporale delle misure in quattro quarti
\time 4/4
%Imposta i BPM del metronomo: 120 BPM in rapporto alla nota di 1/4
\tempo 4 = 120
%Misure 1-4
e4 e f g | g4 f e d | c4 c d e | e4. d8 d4 r |
%Doppia barra conclusiva
\bar "|."
%Chiusura livello 1
}

Nota: il carattere Pipe o barra verticale <|> inserito fra le battute musicali ha la
funzione – mediante un’istruzione che analizzeremo in seguito – di contatore e
restituisce, quale risultato, il numero delle misure immesse nello spartito.

Salviamo, compiliamo e, se saremo stati attenti a non incorrere in errori, dovremo


ottenere il risultato che è visualizzato nell’immagine qui presente: doppio Wow!
Uso delle variabili

Lezione 2

Nel corso di questa esercitazione, affronteremo la definizione e l’utilizzo delle variabili in


LilyPond.

Se noi riprendessimo il codice elaborato precedentemente, potremmo integrarlo


trascrivendo la stesura completa della melodia che stiamo elaborando.
Poco male; si tratta di sedici misure e, perciò, il carico di lavoro non sarebbe poi così
importante.

Ma se dovessimo riportare mediante il codice una melodia molto più estesa, potremmo
facilitarci il compito in qualche modo?
La risposta ovviamente è positiva, poiché è proprio a questo proposito che dobbiamo
affidarci all’utilizzo delle variabili.

Riprendiamo il nostro codice sorgente e aggiorniamone il contenuto nel modo seguente:

Schema 4: definire una variabile

%versione del programma


\version "2.18.2"
%Notazione melodica
%Pattern 1
%Nome variabile
voiceonea = {
%Misure 1 - 3; 5 - 7; 13 - 15
e4 e f g | g4 f e d | c4 c d e |
%Chiusura variabile: livello 1
}

Ecco definita la prima variabile chiamata <voiceonea>; essa racchiude un pattern di tre
misure, le quali – come abbiamo osservato analizzando preliminarmente la costruzione della
melodia con gli allievi in sede di laboratorio – ricorrono per ben tre volte nell’arco del nostro
brano.

Rispetto al primo esempio analizzato in precedenza, abbiamo eliminato le righe contenenti


i riferimenti all’armatura di chiave e abbiamo racchiuso gli argomenti della variabile
medesima – le altezze e i valori delle note musicali – fra parentesi graffe <{ }>.

Si noti che la variabile, liberamente definibile nel nome, non ammette però caratteri di tipo
numerico.

Se salviamo il file e lo compiliamo, rispetto al risultato ottenuto nella lezione precedente,


osserveremo che il lettore PDF non si aprirà.
La compilazione – se non avremo commesso errori di sintassi – sarà andata sicuramente a
buon fine e la finestra di log restituirà quale output “Successo! Compilazione completata con
successo.”, ma, non essendoci un sistema strutturato, il programma non sarà in grado di
determinare la collocazione delle variabili contenenti le note all’interno della score o – più
semplicemente – sul pentagramma.
Si noti anche l’utilità, nel caso specifico, dei commenti; con un numero elevato di variabili,
infatti, i commenti ci aiuteranno ad identificare più agevolmente a cosa esse facciano
riferimento.

Prima di proseguire, soffermiamoci per un istante sulla struttura delle istruzioni e delle
variabili che abbiamo cominciato a manipolare.

Ciò che subito risulta evidente è che i comandi veri e propri, che noi utilizziamo per dire a
LilyPond cosa fare, sono preceduti dal carattere backslash <\> e possono contenere al loro
interno degli argomenti racchiusi fra parentesi graffe che, a loro volta, possono essere
rappresentati da parametri – ad esempio una sequenza di note – o da altri comandi nidificati
all’interno delle parentesi.

Infine, un dettaglio da non scordare mai, nel modo più assoluto, è che il compilatore del
sorgente è di tipo case sensitive, quindi sensibile alla distinzione fra caratteri maiuscoli e
minuscoli; ciò – soprattutto nei primi approcci con questa materia – può indurre in frequenti
errori nella sintassi.

Le variabili, al momento della definizione, non richiedono il carattere backslash <\>: lo


richiederanno – come vedremo a breve – nel momento in cui esse dovranno essere inserite
in un punto qualsiasi a livello della score, ossia all’interno del sistema musicale.

A questo punto, sotto la riga contenente la versione – solamente per una questione di ordine
– inseriamo questa variabile:

Schema 5: variabile global

%Nome variabile
global = {
%Armatura di chiave
\key c \major
%indicazione di tempo
\time 4/4
%indicazione metronomica
\tempo 4 = 120
%Chiusura variabile: livello 1
}

Abbiamo chiamato questa variabile con il nome <global>, per il semplice motivo che
abbiamo inserito al suo interno istruzioni che richiameremo in diverse circostanze nel corso
di questo studio.

Il nostro codice, in questo momento, presenta due variabili: una di esse contiene una
sequenza di note, mentre l’altra contiene le indicazioni relative all’armatura della chiave di
Sol, non indicata poiché impostata per default.
Guardiamolo nella sua struttura completa:

Schema 6: variabili global e voiceone

%versione del programma


\version "2.18.2"
%Nome variabile
global = {
%Armatura di chiave
\key c \major
%indicazione di tempo
\time 4/4
%indicazione metronomica
\tempo 4 = 120
%Chiusura variabile: livello 1
}
%***
%Notazione melodica
%Pattern 1
%Nome variabile
voiceonea = {
%Misure 1 - 3; 5 - 7; 13 - 15
e4 e f g | g4 f e d | c4 c d e |
%Chiusura variabile: livello 1
}

Appendiamo ora al nostro sorgente un’ulteriore variabile, che conterrà – finalmente – la


struttura melodica completa della prima voce: la celebre melodia dell’inno alla gioia in
versione basica.

Noteremo che la variabile presenterà un insieme di richiami alla variabile <voiceonea>,


precedentemente definita, e sequenze di suoni non inseriti nel pattern 1.

Schema 7: Richiamare le variabili

%Struttura melodica
%nome variabile
voiceone = {
%Definizione dell'altezza per il do relativo
\relative c'' {
%misure 1 - 3: chiamata alla variabile voiceonea
\voiceonea
%misura 4
e4. d8 d4 r |
%Forzatura di a capo
\break
%misure 5 - 7: chiamata alla variabile voiceonea
\voiceonea
\voiceonea
%misura 8
d4. c8 c4 r |
%Forzatura di a capo
\break
%misure 9 - 12
d4 d e c8 r | d4 e8 f e4 c8 r | d4 e8 f e4 d | c4 d g, r |
%Forzatura di a capo
\break
%Ridefinizione dell'altezza per il Do relativo
\relative c''
%misure 13 - 15: chiamata alla variabile voiceonea
\voiceonea
\voiceonea
%misura 16
d4. c8 c4 r |
%Doppia barra di chiusura
\bar "|."
%Chiusura notazione: livello 2
}
%Chiusura variabile: livello 1
}

Questa variabile – da come possiamo osservare – contiene un’istruzione

\break

la quale forza la divisione della score ogni quattro misure allo scopo di rendere più ordinata
la lettura della musica.

Notiamo, inoltre, che ad un certo punto del codice incontriamo una ridefinizione della
posizione relativa rispetto al Do4:

\relative c''

Spieghiamo brevemente che LilyPond richiede i caratteri apice <’> e virgola <,> per indicare
gli intervalli che superano rispettivamente la quinta ascendente e discendente.

Per chiarirci le idee, Do4 – Sol4, in relazione a

\relative c'' -

vanno indicati con <c g’> mentre Do4 – Sol3 vanno scritti con <c g>.
Per contro, Do4 – Fa4 vengono codificati con <c f> mentre Do4 – Fa3 si scriveranno <c f,>.

Ancora un po’ di Pazienza, pazienza e ancora pazienza!

Se compilassimo il sorgente ora – come in precedenza – otterremmo solamente – sempre


a fronte di un’esatta sintassi – il log che certifica il successo e, di conseguenza, la
correttezza del codice.

Introduciamo qui il concetto di score.


La score si configura come un insieme di istruzioni che realizzeranno di fatto la costruzione
del nostro sistema musicale, il quale potrà essere definito da un pentagramma singolo o da
un layout basato su un’intelaiatura di pentagrammi multipli.

Appendiamo in coda al nostro codice le seguenti istruzioni:

Schema 8: la score
%Definizione del sistema dei pentagrammi
\score {
%Definizione di un nuovo pentagramma
\new Staff <<
%Chiamata alle variabili global e voiceone
\global
\voiceone
>>
%Definizione del layout
\layout {
%Chiusura layout: livello 2
}
%Chiusura score: livello 1
}

Prima di passare alla compilazione, prendiamoci il tempo di osservare nuovamente il codice


nella sua totalità:

Schema 9: sorgente riassuntivo

%Versione del programma


\version "2.18.2"
%Nome variabile
global = {
%Armatura di chiave
\key c \major
%indicazione di tempo
\time 4/4
%indicazione metronomica
\tempo 4 = 120
%Chiusura variabile: livello 1
}
%***
%Notazione melodica
%Pattern 1
%Nome variabile
voiceonea = {
%Misure 1 - 3; 5 - 7; 13 - 15
e4 e f g | g4 f e d | c4 c d e |
%Chiusura variabile: livello 1
}
%Struttura melodica
%nome variabile
voiceone = {
%Definizione dell'altezza per il do relativo
\relative c'' {
%misure 1 - 3: chiamata alla variabile voiceonea
\voiceonea
%misura 4
e4. d8 d4 r |
%Forzatura di a capo
\break
%misure 5 - 7: chiamata alla variabile voiceonea
\voiceonea
%misura 8
d4. c8 c4 r |
%Forzatura di a capo
\break
%misure 9 - 12
d4 d e c8 r | d4 e8 f e4 c8 r | d4 e8 f e4 d | c4 d g, r |
%Forzatura di a capo.
\break
%Ridefinizione dell'altezza per il Do relativo
\relative c''
%misure 13 - 15: chiamata alla variabile voiceonea
\voiceonea
%misura 16
d4. c8 c4 r |
%Doppia barra di chiusura
\bar "|."
%Chiusura notazione: livello 2
}
%Chiusura variabile: livello 1
}
%***
%Definizione del sistema dei pentagrammi
\score {
%Definizione di un nuovo pentagramma
\new Staff <<
%Chiamata alle variabili global e voiceone
\global
\voiceone
>>
%Definizione del layout
\layout{
%Chiusura layout: livello 2
}
%Chiusura score: livello 1
}
Compiliamo - impazienti che non siamo altro - e godiamoci il risultato... Bravissimi!
Make up della partitura

Lezione 3

Questa terza lezione fa riferimento alla prima parte degli appunti relativi al nostro terzo
incontro, avvenuto il 5 Aprile 2018.

Dedicheremo un po’ di tempo ad alcuni aspetti di carattere grafico, relativi al lavoro da noi
fino a qui prodotto.

In primo luogo, dovremo occuparci dell’intestazione, poiché mancano, ad esempio, –


dettaglio non trascurabile – le indicazioni del titolo e dell’autore della composizione che
stiamo indegnamente ricostruendo.

Riprendiamo il nostro sorgente e, dopo la riga che contiene la versione del programma e
prima della variabile <global>, appendiamo il codice riportato di seguito, poi salviamo,
compiliamo e guardiamo il risultato:

Schema 10: intestazione del brano

%Intestazione della composizione


\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
Relativamente a questo codice non c’è molto da spiegare: i commenti dovrebbero essere
più che esaustivi.
Il comando che definisce l’intestazione:

\header { }

riceve gli argomenti del titolo, dell’autore della composizione e di un fondo pagina che, se
non specificato, riporterà automaticamente un riferimento al nome del programma;
all’interno delle due virgolette <”> sarà possibile immettere liberamente qualunque stringa
si desideri far comparire in fondo alla stesura della musica.
Per lasciare questo spazio vuoto, sarà sufficiente fare come riportato nell’esempio appena
descritto, non immettendo cioè nessun carattere fra le virgolette.

Potremmo invece, per esempio, personalizzare i riferimenti al programma scrivendo, quale


argomento della variabile:

tagline = "Scritto con LilyPond"

Occupiamoci ora delle legature di frase, che non compaiono ancora all’interno del nostro
pentagramma.
Per indicare le legature di frase e di valore, sarà sufficiente utilizzare le parentesi tonde
aperte e chiuse <( )> ad inizio e fine legatura in questo modo:

Schema 11: legature di frase

%Notazione melodica
%Pattern 1
%Nome variabile
voiceonea = {
%Misure 1 - 3; 5 - 7; 13 - 15
e4 e( f g) | g4( f e d) | c4 c( d e) |
%Chiusura variabile: livello 1
}
%Struttura melodica
%nome variabile
voiceone = {
%Definizione dell'altezza per il do relativo
\relative c'' {
%misure 1 - 3: chiamata alla variabile voiceonea
\voiceonea
%misura 4
e4.( d8) d4 r |
%Forzatura di a capo
\break
%misure 5 - 7: chiamata alla variabile voiceonea
\voiceonea
\voiceonea
%misura 8
d4.( c8) c4 r |
%Forzatura di a capo
\break
%misure 9 - 12
d4 d( e c8) r | d4( e8 f e4 c8) r | d4( e8 f e4 d) | c4( d g,) r |
%Forzatura di a capo
\break
%Ridefinizione dell'altezza per il Do relativo
\relative c''
%misure 13 - 15: chiamata alla variabile voiceonea
\voiceonea
\voiceonea
%misura 16
d4.( c8) c4 r |
%Doppia barra di chiusura
\bar "|."
%Chiusura notazione: livello 2
}
%Chiusura variabile: livello 1
}

Salvare, ricompilare il sorgente e confrontare.


Pensando di dare – in prospettiva – a questo lavoro una struttura più complessa e basata
su un sistema di pentagrammi multipli, sarà opportuno etichettare con un nome – il nome di
uno strumento, ad esempio – ogni singolo pentagramma.
Per trasformare questo spartito in una partitura potremo, per il momento, implementare il
pentagramma che contiene le variabili <global> e <voiceone>, modificando il codice a livello
della score nel modo seguente:

Schema 12: Staff label

%Definizione del sistema dei pentagrammi


\score {
%Definizione di un nuovo pentagramma
\new Staff <<
%Etichetta per il rigo
\set Staff.instrumentName="Vl"
%Chiamata alle variabili global e voiceone
\global
\voiceone
>>
%Definizione del layout
\layout{
%Chiusura layout: livello 2
}
%Chiusura score: livello 1
}

Abbiamo utilizzato l’etichetta <Vl> quale abbreviazione di Violin, ipotizzando di destinare la


variabile <voiceone> a quello specifico strumento.
Ricompilando il sorgente, dovremo ottenere il seguente risultato:
Nota: come già osservato, gli esempi visualizzati in queste pagine non corrispondono
esattamente alle impostazioni grafiche prodotte da LilyPond nei files PDF, poiché esso, a
livello del primo rigo, imposta per default un rientro automatico; questa scelta ha lo scopo di
lasciare un ragionevole margine per la denominazione del rigo in oggetto.
Per modificare questa impostazione, a livello della score, all’interno delle parentesi del
costrutto:

\layout { }

sarà sufficiente scrivere quale argomento:

indent = value

dove value è rappresentato da un numero.


supponendo di voler eliminare il rientro, ad esempio, sarà sufficiente impostare questo
parametro nel modo seguente:

indent=0

Avvertenza: come già detto in precedenza, l’interprete è di natura key sensitive, quindi è
necessario prestare attenzione alla sintassi dei comandi; se analizziamo l’ultima istruzione
scritta, osserveremo che la parola <Staff> si caratterizza per la <S> maiuscola e che la
parola <instrumentName> si distingue per la <N> di <Name>, la quale richiede il carattere
maiuscolo, pena il mancato successo nella compilazione del sorgente.

Giunti a questo punto, completiamo il nostro make up dando ancora un ritocchino stilistico
di natura estetica al nostro lavoro, aggiornando – senza porci troppe domande – la score
come nel prossimo esempio:

Schema 13: grafica e layout

%Definizione del sistema dei pentagrammi


\score {
%Definizione di un nuovo pentagramma
\new Staff <<
%Etichetta per il rigo
\set Staff.instrumentName="Vl"
%Chiamata alle variabili global e voiceone
\global
\voiceone
>>
%Definizione del layout
\layout{
\context {
\Score
proportionalNotationDuration = #(ly:make-moment 1 8)
%Chiusura context: livello 3
}
%Chiusura layout: livello 2
}
%Chiusura score: livello 1
}

A proposito delle istruzioni appena immesse, sarà sufficiente sapere che esse si occupano
della distribuzione degli oggetti grafici all’interno del sistema dei pentagrammi.

Prima di procedere oltre e di esaurire questo argomento, diamo uno sguardo alla
composizione dello script fino a qui assieme, pazientemente, elaborato:

Schema 14: sorgente riassuntivo

%Versione del programma


\version "2.18.2"
%***
%Intestazione della composizione
\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
%***
%lista delle variabili
%Nome variabile
global = {
%Armatura di chiave
\key c \major
%indicazione di tempo
\time 4/4
%indicazione metronomica
\tempo 4 = 120
%Chiusura variabile: livello 1
}
%***
%Notazione melodica
%Pattern 1
%Nome variabile
voiceonea = {
%Misure 1 - 3; 5 - 7; 13 - 15
e4 e( f g) | g4( f e d) | c4 c( d e) |
%Chiusura variabile: livello 1
}
%Struttura melodica
%nome variabile
voiceone = {
%Definizione dell'altezza per il do relativo
\relative c'' {
%misure 1 - 3: chiamata alla variabile voiceonea
\voiceonea
%misura 4
e4.( d8) d4 r |
%Forzatura di a capo
\break
%misure 5 - 7: chiamata alla variabile voiceonea
\voiceonea
%misura 8
d4.( c8) c4 r |
%Forzatura di a capo
\break
%misure 9 - 12
d4 d( e c8) r | d4( e8 f e4 c8) r | d4( e8 f e4 d) | c4( d g,) r |
%Forzatura di a capo
\break
%Ridefinizione dell'altezza per il Do relativo
\relative c''
%misure 13 - 15: chiamata alla variabile voiceonea
\voiceonea
%misura 16
d4.( c8) c4 r |
%Doppia barra di chiusura
\bar "|."
%Chiusura notazione: livello 2
}
%Chiusura variabile: livello 1
}
%***
%Definizione del sistema dei pentagrammi
\score {
%Definizione di un nuovo pentagramma
\new Staff <<
%Etichetta per il rigo
\set Staff.instrumentName="Vl"
%Chiamata alle variabili global e voiceone
\global
\voiceone
>>
%Definizione del layout
\layout{
\context {
\Score
proportionalNotationDuration = #(ly:make-moment 1 8)
%Chiusura context: livello 3
}
%Chiusura layout: livello 2
}
%Chiusura score: livello 1
}

Concludiamo questa lezione salvando il file e compilando con l’auspicio di non aver
commesso errori, per poter rimanere a bocca aperta di fronte allo stupefacente risultato.

-
Trasposizione e output

Lezione 4

Questa quarta lezione fa riferimento alla seconda parte degli appunti relativi al nostro terzo
incontro, avvenuto il 5 Aprile 2018.

In questa lezione tratteremo due argomenti: la trasposizione del brano da una tonalità ad
un’altra e la creazione di un midi file, destinato al semplice ascolto o ad ulteriori
rielaborazioni.
Originariamente, il brano sul quale abbiamo lavorato fin qui suonerebe nella tonalità di Re
maggiore, anche se noi – per semplicità – lo abbiamo riscritto nella tonalità di Do maggiore.
Per riportarlo ai suoi antichi splendori, però, non sarà necessario riscrivere tutta la melodia.
Allo scopo, sarà infatti sufficiente creare due nuove variabili in fondo alla lista di quelle già
presenti e modificarne una fra quelle precedentemente costruite.

In primo luogo, modifichiamo la variabile <global>, eliminando la riga contenente l’armatura


di chiave con il relativo commento.

Schema 15: rivedere la var. global

%versione del programma


\version "2.18.1"
%Nome variabile
global = {
%indicazione di tempo
\time 4/4
%indicazione metronomica
\tempo 4 = 120
%Chiusura variabile: livello 1
}

La prima delle due nuove variabili la chiameremo <partonec>; in questo modo ci sarà facile
sapere che essa, al suo interno, conterrà i richiami alla melodia presente nella <voiceone>.
La lettera <c>, posta alla fine della stringa, ci ricorderà che questa variabile altro non farà,
se non riprodurre quanto abbiamo finora già elaborato e visualizzato; avremo, quindi, la
possibilità – all’occorrenza e senza troppe complicazioni – di ottenere la nostra melodia in
chiave di Do maggiore, semplicemente sostituendo la variabile <voiceone> con la variabile
<partonec> a livello della score.

Compilando il sorgente, otterremo un risultato perfettamente sovrapponibile al precedente,


avendo però effettuato un passaggio in più.

Schema 16: Variabile partonec

%nome variabile
partonec = {
%Armatura di chiave
\key c \major
%Chiamata alla variabile voiceone
\voiceone
%Chiusura variabile: livello 1
}

Definiamo ora la variabile <partoned> come nell’esempio riportato sotto, avendo la premura
– prima di azzardarci a compilare – di richiamarne correttamente il nome a livello della score:

Schema 17: trasposizione melodica

%Trasposizione
%nome variabile
partoned = \transpose c d {
%Armatura di chiave
\key d \major
%Chiamata e incremento di un tono della variabile voiceone
\voiceone
%Chiusura transpose e variabile: livello 1
}

Come per la variabile precedente, risulterà chiaro l’ausilio mnemonico riferito alla parte di
violino contenuta nella <voiceone> che, in questo caso, in virtù dell’istruzione

\transpose c d

sarà trasposta nella tonalità di Re maggiore, come ricordato dalla lettera <d> posta al
termine della stringa <partoned>.

Analizzando il funzionamento di ciò che abbiamo scritto, ci accorgiamo che la variabile


<voiceone> diventa un argomento passato alle variabili che ad essa effettueranno la
chiamata; nella circostanza, le variabili <partonec> e <partoned> riceveranno gli argomenti
della variabile <voiceone> e, in base alle istruzioni che esse contengono al proprio interno,
passeranno alla score la melodia in chiave di Do maggiore (nel caso di <partonec>) o di Re
maggiore (nel caso di <partoned>.

Ora occupiamoci della generazione di un midi file, ordinando a LilyPond – attraverso


un’istruzione estremamente semplice – di effettuare una ridirezione dell’output verso un file
con estensione <.midi>.

Schema 18: midi output

%Definizione del sistema dei pentagrammi


\score {
%Definizione di un nuovo pentagramma
\new Staff <<
%Etichetta del rigo
\set Staff.instrumentName = "Vl"
%Chiamata alle variabili global e partonec
\global
\partoned
>>
%Definizione del layout
\layout{
\context {
\Score
proportionalNotationDuration = #(ly:make-moment 1 8)
%Chiusura context: livello 3
}
%Chiusura layout: livello 2
}
%Definizione del midi output
\midi {
%Chiusura midi output: livello 2
}
%Chiusura score: livello 1
}

Nota: alcuni lettori di midi file non considerano questa estensione; talvolta è perciò
necessario modificarla manualmente, eliminando l’ultimo carattere e trasformandola quindi
in <.mid>>

Potremo ora compilare e ritrovare nella nostra cartella di lavoro un terzo file, contenente al
suo interno la codifica midi pronta per l’ascolto o per la manipolazione da effettuarsi con gli
appropriati software, ma pazientiamo ancora un istante.

Come ultima fatica, infatti, possiamo ulteriormente raffinare il nostro output, chiedendo al
compilatore di essere così gentile da proporci un ascolto mediante lo strumento midi
appropriato, poiché, per il nostro esempio, noi desideriamo avvalerci di un violino.
Non definendo nessuno strumento a livello della score, il programma che interpreterà il
nostro file dovrebbe selezionare dalla libreria degli strumenti il primo della lista,
generalmente l’acoustic grand piano.

Schema 19: nuovo midi instrument

%Definizione del sistema dei pentagrammi


\score {
%Definizione di un nuovo pentagramma
\new Staff <<
%Etichetta del rigo
\set Staff.instrumentName = "Vl"
%strumento midi
\set Staff.midiInstrument = "violin"
%Chiamata alle variabili global e partonec
\global
\partoned
>>
%Definizione del layout
\layout{
\context {
\Score
proportionalNotationDuration = #(ly:make-moment 1 8)
%Chiusura context: livello 3
}
%Chiusura layout: livello 2
}
%Definizione del midi output
\midi {
%Chiusura midi output: livello 2
}
%Chiusura score: livello 1
}

Nota: all’interno del manuale di riferimento “LilyPond notation”, è disponibile la tabella con
tutta la denominazione degli strumenti.
Compiliamo, controlliamo che la partitura risulti effettivamente nella tonalità di Re maggiore
e – prima di passare agli approfondimenti… – Ascoltiamo – se ne abbiamo la possibilità – il
nostro midi file… Wow!

Rimandiamo al sorgente completo dello script per il confronto con la codifica, del quale
anticipiamo il risultato grafico qui sotto.

Lezione 5

Questo primo approfondimento ci guiderà nella definizione di una partitura basata su di un


sistema a due pentagrammi.
Per fare ciò, abbiamo scritto un piccolo contrappunto che faremo eseguire a un violoncello,
il quale dialogherà con la melodia già esistente e affidata al violino; la struttura melodica non
è bella quanto avremmo voluto, risulterà però funzionale in relazione al lavoro che stiamo
svolgendo.

Giocheremo – se così si può dire – a “Completa il codice”; questo ci darà modo di verificare
le competenze acquisite nel poco tempo avuto a nostra disposizione.

Definiamo, in primo luogo, una variabile che chiameremo voicetwoa, lasciandoci istruire dai
commenti presenti nello schema; posizioniamo la nuova variabile in coda alla lista delle
variabili e, all’interno di essa, immettiamo la melodia seguente:

Schema 21: pattern 2

%pattern2
%nome variabile
.........
%misure 1 - 2; 5 - 6; 13 - 14
c4( b a g8 f) | e8( f g4) r8 g,( a b) |
%Chiusura variabile: livello 1
.........
Di seguito, creiamo una variabile simile chiamata <voicetwob>, corredandone la struttura
con i commenti appropriati, scrivendo al suo interno la musica seguente:

Schema 22: pattern3

.........
.........
.........
%misura 9; 10; 11
g8 b'( a g) c( e, a, d) |
.........
.........

Definiamo nello stesso modo una terza variabile, che chiameremo <voicetwo>, la quale
conterrà la struttura melodica per la seconda voce, e completiamone il codice seguendo le
indicazioni fornite dai commenti riportati nello schema sottostante:

Schema 23: Seconda voce

%struttura melodica per la seconda voce


%Nome variabile
.........
%Definizione dell'altezza per il do relativo
.........
%misure 1 - 2: chiamata alla variabile voicetwoa
.........
%misure 3 - 4
c4( a' f d) | g,4 g'8(fis) g( a b g) |
%forzatura di a capo
.........
%misure 5 - 6: chiamata alla variabile voicetwoa
.........
%misure 7 - 8
c4( a f d) | g8( b a g) c( e d c) |
%forzatura di a capo
.........
%misure 9 - 11: chiamata alla variabile voicetwob
........
%Ridefinizione dell'altezza per il do relativo
\relative c
%Chiamata alla variabile voicetwob
.........
%Ridefinizione dell'altezza per il Do relativo
.........
%Chiamata alla variabile voicetwob
.........
%misura 12
g8( fis e fis) g, b'( a g) |
%forzatura di a capo
.........
%misure 13 - 14: chiamata alla variabile voicetwoa
.........
%misure 15 - 16
c4( a f d) | g8( b a g) c4 r |
%doppia barra di chiusura
.........
%Chiusura notazione: livello 2
.........
%Chiusura variabile: livello 1
.........

Nota: la stringa <is>, posta dopo l’espressione dell’altezza – nel nostro caso <f> che
corrisponde al Fa – rappresenta l’alterazione del diesis; per rendere una nota con
l’alterazione del bemolle, andrà utilizzata, dopo di essa, la stringa <es>: <bes> per indicare
il Si bemolle.

Osservazione: LilyPond è strutturalmente rigido per quanto riguarda l’ordine degli elementi
che costituiscono gli attributi di un suono: il primo carattere definisce sempre la nota;
seguono le eventuali alterazioni, la direzione – se necessaria – ascendente o discendente,
il valore – se necessario – e le legatture di frase.

A proposito delle alterazioni, esse vanno sempre indicate, indipendentemente dall’armatura


di chiave: nella tonalità di Re maggiore, il Fa diesis e il Do diesis andranno perciò sempre
scritti <fis> e <cis>.

Chiariamo, allo scopo di fornire un ulteriore elemento di conoscenza, che la nomenclatura


utilizzata per esprimere le altezze è quella olandese, rappresentata dalle lettere minuscole
dalla <a> = La alla <g> = Sol, <r> = pausa; esiste un’istruzione – scomoda dal nostro punto
di vista – che ammette forme di input in diverse lingue fra le quali l’italiano.
Per esprimere i valori delle altezze in italiano, si utilizzerà questo comando nella forma
seguente:

\language ="italiano"
Le altezze andranno riportate scrivendo quali argomenti i nomi delle note in italiano: <do>,
<re>, <mi> ecc.

Le alterazioni andranno indicate nel modo seguente:


<sold> per Sol diesis e <solb> per Sol bemolle.

Creiamo ora - come per la prima voce - le variabili <parttwoc> e <parttwod>, tenendo
presente che le chiavi di lettura per il violoncello potranno essere di tenore o di basso: noi,
per il nostro esempio, faremo riferimento alla chiave di basso.

Schema 24: Determinare la chiave

%nome variabile
.........
%Definizione della chiave di Fa
\clef bass
%Armatura di chiave = Do maggiore
.........
%Chiamata alla variabile voicetwo
.........
%Chiusura variabile: livello 1
.........
%Trasposizione
%Nome variabile
........
%Definizione della chiave di FA
.........
%Armatura di chiave = Re maggiore
.........
%Chiamata e incremento di un tono della variabile voicetwo
.........
%Chiusura variabile: livello 1
.........

Ora, a livello della score, definiamo un nuovo Staff posizionandolo sotto quello già esistente,
etichettiamolo con la stringa <Cl> e definiamo l'istruzione dedicata allo strumento midi in
modo che - a livello del midi output - setti lo strumento <cello>; richiamiamo le variabili
<global> e <parttwod>.

Schema 25: Layout e output

%Definizione del sistema dei pentagrammi


\score {
%Graffa di unione dei pentagrammi
\new StaffGroup <<
%Definizione di un nuovo violino Staff
\new Staff <<
%Etichetta del rigo
\set Staff.instrumentName = "Vl"
%strumento midi
\set Staff.midiInstrument = "violin"
%Chiamata alle variabili global e partoned
\global
\partoned
>>
%Definizione di un nuovo violoncello Staff
.........
%Etichetta del rigo
.........
%strumento midi
.........
%Chiamata alle variabili global e parttwod
.........
.........
.........
>>
%Definizione del layout
\layout{
\context {
\Score
proportionalNotationDuration = #(ly:make-moment 1 8)
%Chiusura context: livello 3
.........
%Chiusura layout: livello 2
.........
%Definizione del midi output
\midi {
%Chiusura midi output: livello 2
.........
%Chiusura score: livello 1
.........

Prima di passare al ritiro del premio per il lavoro svolto, chiudiamo un argomento lasciato in
sospeso.
Inseriamo, quale ultima istruzione delle variabili contenenti le strutture melodiche
<voiceone> e <voicetwo>, un contatore di misure che ci aiuterà segnalandoci, - nel log di
compilazione, - eventuali incongruenze nel computo delle misure immesse.

Nel nostro caso, le misure sono 16 e l'istruzione da utilizzare sarà la seguente:

\barNumberCheck 17

Nota: il computo viene sempre eseguito sulle misure effettivamente immesse, più la
successiva misura vuota, potenzialmente in attesa di un input.

Se il calcolo è corretto, la finestra di log non darà informazioni; al contrario, se i conti non
dovessero tornare, invierà un report di errore.

A questo punto, dovremmo essere in grado di compilare il nostro file, guardarne la


realizzazione grafica e ascoltarne il contenuto.: Bravi!

Rimandiamo al sorgente completo dello script per il confronto con il codice, del quale
anticipiamo qui sotto il risultato grafico.
Estrazione delle parti

Lezione 6

Dedicheremo questo secondo approfondimento del nostro percorso all’estrazione di parti


singole o blocchi di parti, a partire da un sistema basato su più pentagrammi.
Per realizzare questa operazione, utilizzeremo il sorgente da noi elaborato nelle lezioni
precedenti.

Sarà necessario, quale azione preliminare, creare all’interno della nostra cartella di lavoro
un nuovo file di LilyPond, che chiameremo primolily_score.ly.

Per aiutarci nella distinzione dei documenti, ci preoccuperemo di rinominare il file


contenente il nostro script, chiamandolo primolily_music.ly.

Nota: I nomi dei files sono, ovviamente, indicativi e non soggetti a vincoli; essi, infatti, non
esercitano nessun tipo di influenza sulla compilazione dei sorgenti.

Dovremo, ahimè, scorporare e riscrivere alcune parti del codice esistente in modo che –
come suggerito dai nomi appena attribuiti ai documenti – il file primolily_music.ly contenga
solamente la lista delle variabili e il file primolily_score.ly contenga l’intestazione della
composizione e il blocco di istruzioni che definiscono la score.
Inizieremo riscrivendo o spostando porzioni di codice dal vecchio al nuovo documento;
innanzitutto, copieremo nel nuovo file l’istruzione che identifica la versione del compilatore
e, in esso, sposteremo anche il blocco di intestazione della composizione.

Importante: il numero di versione del programma dovrà corrispondere ed essere presente


in entrambi i files.

Dopo aver prudenzialmente salvato i sorgenti, ci occuperemo della trasformazione del set
di istruzioni – rintracciabili nel file primolily_music.ly – che definivano la precedente score in
una nuova variabile, che andrà a costituire, in tal modo, l’ultima variabile della lista e che
chiameremo – aggiungendo anche la riga appropriata destinata ai commenti – <music>.

Se, prima di alterarne la sintassi, osserviamo con attenzione il codice relativo al preesistente
blocco della score, riconosceremo i due Staff già definiti, i quali giacciono ordinatamente
l’uno sotto l’altro.
Nel nostro caso, gli Staff definiti sono solamente due; consideriamo, però, che in partiture
di maggior complessità (immaginiamo, ad esempio, una partitura destinata ad una
composizione per orchestra) il numero dei pentagrammi da gestire sarebbe destinato,
inevitabilmente, a moltiplicarsi in maniera esponenziale; da questa riflessione, deriva
l’importanza di cercare di comprendere a pieno i prossimi passi spiegati in questo
approfondimento.

Lasceremo, quindi, così come stanno gli Staff già creati; sposteremo o riscriveremo nel
nuovo file – avendo cura di eliminarle dalla precedente posizione – anche la riga che
determina la score, l’istruzione che imposta la graffa di unione dei pentagrammi che
compongono il sistema – con i relativi commenti – e tutte le righe del vecchio codice, a
partire dal blocco del layout, fino all’ultima parentesi graffa che conclude lo script.

Ora faremo la conoscenza con un piccolo costrutto, che andrà posizionato e replicato prima
di ciascuna delle righe contenenti l’istruzione

\new Staff <<

la quale – come abbiamo già avuto modo di sperimentare – dichiara l’apertura di ogni singolo
nuovo pentagramma.

L’istruzione che studieremo e che rappresenta la ragione principale di questo


approfondimento si chiama semplicemente

\tag

bello vero?
Il senso di tutto questo risulta essere estremamente intuitivo; attraverso la definizione e,
successivamente, l’identificazione di un tag, infatti, il compilatore – analizzando i contenuti
che etichettano ciascuno degli Staff presenti all’interno del sistema – sarà in grado di
costruire scientificamente – in relazione alle richieste espresse dagli argomenti di chiamata
che impareremo a conoscere fra poco – una score grafica e midi che potrà contenere
rispettivamente una singola parte o più parti, estratte in base a dei criteri di tipo selettivo.

Nota: Ogni Staff può essere identificato da più tag e, a differenza delle variabili, i tag
possono contenere all’interno della propria struttura anche valori di tipo numerico.
Creiamo quindi all’interno del file primolily_music.ly la nostra variabile <music>, integrando
il codice esistente nel seguente modo:

Schema 27: variabile music

%nome variabile
music= {
<<
%creazione dei tag per il violino
\tag #'violin
\tag #'score
%Definizione di un nuovo violino Staff
\new Staff <<
%Etichetta del rigo
\set Staff.instrumentName = "Vl"
%strumento midi
\set Staff.midiInstrument = "violin"
%Chiamata alle variabili global e partoned
\global
\partoned
>>
%creazione dei tag per il violoncello
\tag #'cello
\tag #'score
%Definizione di un nuovo violoncello Staff
\new Staff <<
%Etichetta del rigo
\set Staff.instrumentName = "Cl"
%strumento midi
\set Staff.midiInstrument = "cello"
%Chiamata alle variabili global e parttwod
\global
\parttwod
>>
>>
%Chiusura variabile: livello 1
}

Soffermiamoci, facendo particolare attenzione, alla struttura della nuova istruzione appena
immessa nel sorgente. Abbiamo definito un tag comune alle due parti esistenti: il tag score,
e due tag che le identifica in maniera univoca: il tag violin e il tag cello; ciò sta a significare
che saremo in grado di ottenere, come elaborazione dell’output grafico e midi – in relazione
al tipo di chiamata che decideremo di eseguire rispetto a questi tre elementi – tre possibili
risultati:

1. Un file contenente la partitura completa


2. Un documento con la parte da destinare ad un potenziale violinista
3. Un elaborato con la parte per il violoncellista
Nota: I primi due risultati saranno perfettamente sovrapponibili a quelli che avevamo già
ottenuto mediante la realizzazione e la compilazione degli schemi 26 e 14, integrati nelle
pagine “Make up della partitura” e “Sistemi multipli”.

Se dovessimo gestire una partitura più composita, articolata in sezioni di fiati, archi ecc.,
con i tag saremmo in grado di estrarre, oltre alla partitura completa, parti singole, piccole
sezioni suddivise per organico o parti selezionate in relazione a criteri specifici di tipo
personalizzato.

Se, per esempio, al fianco dei tag già immessi, inserissimo – relativamente ai nostri due
pentagrammi – un’ulteriore etichetta chiamata <archi>, saremmo in grado di ottenere
dall’interprete una score contenente – qualora fossero presenti nell’architettura della
composizione – le sezioni dei violini primi, dei violini secondi, delle viole, dei celli e dei
contrabbassi.

Certamente non riporteremmo mai l’etichetta <archi> all’interno della definizione di un


eventuale staff destinato ad una parte per tromba che, invece, potremmo etichettare con i
tag <score>, <tromba>, <fiati> e <ottoni>; in tal modo, saremmo in grado di richiamare la
parte di tromba sia singolarmente, sia nella versione integrale della partitura, sia nella
categoria dei fiati, sia nell’organico relativo alla sezione degli ottoni.

Definita la nostra variabile <music>, compileremo il sorgente il quale, essendo costituito –


in virtù delle modifiche da noi apportate al codice – solamente da variabili, restituirà come
risultato esclusivamente la finestra di log con il messaggio di avvenuta compilazione o, se
presenti, la lista degli eventuali errori di sintassi.

Importante: indipendentemente dal fatto che questo file restituisca un risultato grafico
tangibile o meno, esso andrà sempre e comunque salvato e ricompilato ad ogni
aggiornamento del codice sorgente.

Sarà possibile, a questo punto, chiudere e abbandonare il file primolily_music.ly, per


concentrarci sulla parte di script presente all’interno del documento primolily_score.ly; prima
di farlo, però, concediamoci un ultimo richiamo al discorso relativo alla meccanica delle
variabili.

A proposito della variabile music appena costituita, possiamo dire che essa riceve gli
argomenti di tutte le altre variabili riportate nella lista contenuta nel documento
primolily_music.ly. Essa, inoltre, attraverso il filtraggio delle informazioni operato al suo
interno dai tag, passa gli argomenti, selezionati e interpretati, alla score che, senza ulteriori
distrazioni, andremo immediatamente ad analizzare.

Per prima cosa, considerati gli spostamenti parziali di codice, i taglia e incolla ecc., sarà
opportuno riassumere il codice scritto nel file primolily_score.ly, il quale, dopo gli ultimi
cambiamenti effettuati, dovrebbe risultare strutturato in questo modo:

Schema 28: file della score

%versione del programma


\version "2.18.2"
%***
%Intestazione della composizione
\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
%***
%Definizione del sistema dei pentagrammi
\score {
%Graffa di unione dei pentagrammi
\new StaffGroup <<
>>
%Definizione del layout
\layout{
\context {
\Score
proportionalNotationDuration = #(ly:make-moment 1 8)
%Chiusura context: livello 3
}
%Chiusura layout: livello 2
}
%Definizione del midi output
\midi {
%Chiusura midi output: livello 2
}
%Chiusura score: livello 1
}

Completiamo questa porzione di sorgente aggiungendo le seguenti righe, in modo che lo


script assuma la configurazione sottostante:

Schema 29: include e KeepWithTag

%versione del programma


\version "2.18.2"
%Chiamata al file primolily_music
\include "primolily_music.ly"
%***
%Intestazione della composizione
\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
%***
%Definizione del sistema dei pentagrammi
\score {
%Graffa di unione dei pentagrammi
\new StaffGroup <<
%Richiama il tag selezionato
\keepWithTag #'
%Chiamata alla variabile music
\music
>>
%Definizione del layout
\layout{
\context {
\Score
proportionalNotationDuration = #(ly:make-moment 1 8)
%Chiusura context: livello 3
}
%Chiusura layout: livello 2
}
%Definizione del midi output
\midi {
%Chiusura midi output: livello 2
}
%Chiusura score: livello 1
}

Osserviamo che, sotto l’istruzione che indica la versione del compilatore, compare un
comando molto intuitivo:

\include "filename"

esso, infatti, istruisce l’interprete informandolo relativamente al nome e alla posizione del
file ospitante le variabili utili alla realizzazione del progetto grafico della musica.

Notiamo anche che la nuova morfologia sintattica che costituisce la definizione della score
richiama al suo interno la variabile music, da noi appena definita e collocata in fondo al file
primolily_music.ly, che abbiamo chiuso dopo averne manipolato i contenuti.
Ciò che è interessante, però, è osservare che, oltre alla chiamata alla variabile music e al
blocco del layout, troviamo un’istruzione che, in seguito alla compilazione e basandosi sul
confronto con i tag presenti all’interno della variabile music, restituirà un risultato coerente:
nel nostro caso – a seconda del tag che selezioneremo – la parte destinata al violino, quella
destinata al violoncello o la partitura completa costituita da un sistema a due pentagrammi
contenenti, a partire dall’alto verso il basso, la musica per violino e quella per il violoncello.

Nota: L’ordine grafico all’interno della partitura ottenuto dalla chiamata ai tag appropriati
rispetterà l’ordine posizionale alto basso dei pentagrammi contenuti – nel nostro caso – nella
variabile music.

Se, ad esempio, ponessimo lo Staff relativo alla parte di violino sotto quello destinato
al violoncello, nella costruzione di una score a due pentagrammi, esso risulterebbe
posizionato anche graficamente al di sotto del pentagramma riservato al violoncello.
Per sperimentare e apprezzare i risultati, accanto all’istruzione

\keepwithtag #'

lasciata momentaneamente priva di argomento, scriveremo la chiamata ai tag che ci


interessano nelle tre declinazioni previste dalla variabile music, come riportato negli esempi
seguenti:

Schema 30: estrarre la score

%versione del programma


\version "2.18.2"
%Chiamata al file primolily_music
\include "primolily_music.ly"
%***
%Intestazione della composizione
\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
%Definizione del sistema dei pentagrammi
\score {
%Graffa di unione dei pentagrammi
\new StaffGroup <<
%Chiamata al tag score
\keepWithTag #'score
%Chiamata alla variabile music
\music
>>
%Definizione del layout
\layout{
\context {
\Score
proportionalNotationDuration = #(ly:make-moment 1 8)
%Chiusura context: livello 3
}
%Chiusura layout: livello 2
}
%Definizione del midi output
\midi {
%Chiusura midi output: livello 2
}
%Chiusura score: livello 1
}
Schema 31: estrarre ilviolino

%versione del programma


\version "2.18.2"
%Chiamata al file primolily_music
\include "primolily_music.ly"
%***
%Intestazione della composizione
\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
%***
%Definizione del sistema dei pentagrammi
\score {
%Chiamata all tag violin
\keepWithTag #'violin
%Chiamata alla variabile music
\music
%Definizione del layout
\layout{
\context {
\Score
proportionalNotationDuration = #(ly:make-moment 1 8)
%Chiusura context: livello 3
}
%Chiusura layout: livello 2
}
%Definizione del midi output
\midi {
%Chiusura midi output: livello 2
}
%Chiusura score: livello 1
}

Nota: Nel caso dell’estrazione di una parte singola, l’istruzione

\new StaffGroup

sarà inutile e potrà essere tranquillamente omessa.

Schema 32: estrarre il violoncello

%versione del programma


\version "2.18.2"
%Chiamata al file primolily_music
\include "primolily_music.ly"
%***
%Intestazione della composizione
\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
%***
%Definizione del sistema dei pentagrammi
\score {
%Chiamata al tag cello
\keepWithTag #'cello
%Chiamata alla variabile music
\music
%Definizione del layout
\layout{
\context {
\Score
proportionalNotationDuration = #(ly:make-moment 1 8)
%Chiusura context: livello 3
}
%Chiusura layout: livello 2
}
%Definizione del midi output
\midi {
%Chiusura midi output: livello 2
}
%Chiusura score: livello 1
}

Salvando e compilando il file, otterremo – in relazione alle tre opzioni possibili – tre diversi
elaborati grafici e midi, per avere i quali non sarà necessario – come per il file precedente –
salvare e compilare il sorgente ogni qualvolta si intenderà modificare il tag che eseguirà la
chiamata ai relativi Staff definiti all’interno della variabile music.
Nota: per conservare la copia di ogni documento PDF, risultante da ogni successiva
compilazione – come già ricordato in occasione del nostro primo incontro -, il relativo file
PDF andrà rinominato o copiato in un’altra posizione prima di una nuova compilazione,
poiché ogni nuova generazione del PDF di destinazione sovrascriverà le precedenti
versioni.
Gli stessi criteri valgono nella gestione dei midi file.

Per concludere l’esposizione di questo argomento, proveremo a creare tre distinti documenti
PDF basati sulla chiamata ai rispettivi tag da noi definiti nella variabile music contenuta nel
file primolily_music.ly; chiameremo i documenti risultanti dalle successive tre compilazioni
con i seguenti nomi:

1. innolgioialscore.pdf
2. innolgioialviolin.pdf
3. innolgioialcello.pdf

Il primo documento dovrà contenere l’elaborazione grafica della partitura completa, il


secondo file dovrà ospitare la parte in chiave di Sol per violino, mentre all’interno del terzo
elaborato dovrà trovare posto la parte in chiave di Fa, destinata al violoncello.

Rimandiamo al sorgente completo degli script riferiti ai file <primolili_music.ly> e


<primolily_score.ly> per un confronto. Abbiamo già anticipato qui sopra le riproduzioni
grafiche risultanti dalla reinterpretazione del codice sorgente.