Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
\melody = \relative c {in cui si inserisce la musica a partire dalla chiave musicale, la tonalità
e poi tutte le note. }
\score {<>}
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 {
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:
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)
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.
Durata note:
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
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
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,
legatura note ~
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:
Dinamica:
Testo
c1^”espr” a_”legato”
\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 { d4 a8 } c2
\grace { a32[ b] } e2 c2
\appoggiatura b16 a2 c2
\acciaccatura e16 c2
Spartito:
\relative c” {
Testo e musica:
\break c”
\column { “Fagotti”
c”1
{ <> }
Terzine:
\times 2/3 { c8 d e }
\times 2/3 { c c c }
\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.
\relative c” {
\tempo 4=50
Più mosso:
CORONA:
c2\fermata
b2\fermata
Nascondere le note:
c4 d4
\hideNotes e4 f4
\unHideNotes g4 a
Crescendo: c\ a a\!
Accordi:
\chordmode { c:dim a:maj7 }
Da capo o D.C.:
Indice generale0
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:
\version "..."
nel presente corso abbiamo utilizzato la versione 2.18.2, che andrà inserita fra i due
caratteri di citazione <”> .
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.
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.
Per fare ciò, integriamo il codice precedentemente immesso con queste ulteriori
istruzioni:
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.
Lezione 2
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.
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.
Si noti che la variabile, liberamente definibile nel nome, non ammette però caratteri di tipo
numerico.
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.
A questo punto, sotto la riga contenente la versione – solamente per una questione di ordine
– inseriamo questa variabile:
%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:
%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
}
\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.
\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,>.
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
}
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.
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:
\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.
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:
%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
}
\layout { }
indent = value
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:
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:
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.
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.
%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:
%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>.
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.
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
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:
%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:
.........
.........
.........
%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:
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.
\language ="italiano"
Le altezze andranno riportate scrivendo quali argomenti i nomi delle note in italiano: <do>,
<re>, <mi> ecc.
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.
%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>.
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.
\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.
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
Sarà necessario, quale azione preliminare, creare all’interno della nostra cartella di lavoro
un nuovo file di LilyPond, che chiameremo primolily_score.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.
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
la quale – come abbiamo già avuto modo di sperimentare – dichiara l’apertura di ogni singolo
nuovo pentagramma.
\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:
%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:
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.
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.
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:
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 #'
\new StaffGroup
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