| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Working with input files
| 3.3.1 Inclusione di file LilyPond | ||
| 3.3.2 Edizioni diverse da un unico sorgente | ||
| 3.3.3 Caratteri speciali |
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Including LilyPond files
Se un progetto è grande e complesso, conviene suddividerlo in file separati. Per citare un altro file si usa
\include "altrofile.ly" |
La riga \include "altrofile.ly" equivale a incollare i contenuti
di ‘altrofile.ly’ nel file corrente nel punto in cui appare il
comando \include. Per esempio, in un progetto complesso si
possono scrivere file separati per ogni parte strumentale e creare
un file per l’“intera partitura” che raccoglie i file dei singoli
strumenti. Di norma il file incluso definisce una serie di variabili
che poi diventano disponibili nel file della partitura completa. Le
sezioni contrassegnate con delle etichette nei file inclusi possono
essere usate in varie parti di una partitura, vedi
Edizioni diverse da un unico sorgente.
I file nella directory di lavoro corrente possono essere citati indicando
semplicemente il nome del file dopo il comando \include. I file in altre
posizioni possono essere inclusi sia con un percorso assoluto che con un
percorso relativo (ma come separatore delle directory occorre usare la barra, o
slash, come in UNIX, piuttosto che la barra inversa, o backslash, come in
DOS/Windows). Per esempio, se ‘cose.ly’ si trova una directory prima
della directory di lavoro corrente, usare
\include "../cose.ly" |
oppure se le parti orchestrali incluse si trovano tutte in una sottodirectory chiamata ‘parti’ all’interno della directory corrente, usare
\include "parti/VI.ly" \include "parti/VII.ly" … etc |
I file che devono essere inclusi possono contenere essi stessi delle
dichiarazioni \include. Per impostazione predefinita, queste
dichiarazioni \include di secondo livello non sono interpretate
finché non vengono portate nel file principale, dunque i nomi dei file
che specificano devono essere tutti relativi alla directory del file
principale, non alla directory del file incluso. Tuttavia tale comportamento
può essere cambiato globalmente tramite l’opzione ‘-drelative-includes’
da linea di comando (oppure agggiungendo #(ly:set-option 'relative-includes #t)
in cima al file di input principale).
Quando relative-includes viene impostato su #t, il percorso di
ogni comando \include sarà considerato relativo al file che contiene
quel comando. Questo comportamento è raccomandato e diventerà il comportamento
predefinito in una versione futura di lilypond.
È possibile includere sia file relativi alla directory principale sia file
relativi a qualche altra directory impostando relative-includes su
#t o #f nei punti giusti dei file. Per esempio, se è stata
creata una libreria generale, libA, che usa altri file inclusi dal file
di base di quella libreria, tali dichiarazioni \include dovranno
essere precedute da #(ly:set-option 'relative-includes #t) per poter
essere interpretate correttamente quando riportate nel file .ly
principale:
libA/ libA.ly A1.ly A2.ly … |
quindi il file di base, libA.ly, conterrà
#(ly:set-option 'relative-includes #t) \include "A1.ly" \include "A2.ly" … % ritorna alle impostazioni predefinite #(ly:set-option 'relative-includes #f) |
Qualsiasi file ‘.ly’ può quindi includere l’intera libreria semplicemente con
\include "~/libA/libA.ly" |
Si possono ideare strutture di file più complesse facendo dei cambi nei punti giusti.
È possibile includere dei file anche da una directory che si trova in un percorso di ricerca specificato come opzione quando si lancia LilyPond da linea di comando. I file inclusi possono allora essere specificati usando soltanto il loro nome. Per esempio, per compilare con questo metodo il file ‘principale.ly’ che include i file di una sottodirectory chiamata ‘parti’, entrare nella directory di ‘principale.ly’ e eseguire questo comando
lilypond --include=parti principale.ly |
e in principale.ly scrivere
\include "VI.ly" \include "VII.ly" … etc |
I file che devono essere inclusi in molte partiture possono essere
salvati nella directory di installazione di LilyPond ‘../ly’. La
posizione di questa directory dipende dal tipo di installazione (vedi
(learning)Altre fonti di informazione section ‘Altre fonti di informazione’ in Manuale di Apprendimento). Questi file possono quindi
essere inclusi semplicemente nominandoli in una dichiarazione \include.
Questo è il modo in cui sono inclusi i file che dipendono dalla lingua,
come ‘english.ly’.
LilyPond include un certo numero di file quando si lancia il
programma. Queste inclusioni non sono evidenti all’utente, ma i
file possono essere identificati eseguendo lilypond --verbose dalla
linea di comando. Così si vedrà un elenco di percorsi e file che LilyPond
usa, insieme a tante altre informazioni. I più importanti di questi file
sono trattati in
(learning)Altre fonti di informazione section ‘Altre fonti di informazione’ in Manuale di Apprendimento. Tali file possono
essere modificati, ma le modifiche saranno perse quando si installa una
nuova versione di LilyPond.
Alcuni semplici esempi d’uso di \include si trovano in
(learning)Partiture e parti section ‘Partiture e parti’ in Manuale di Apprendimento.
Manuale di apprendimento: (learning)Altre fonti di informazione section ‘Altre fonti di informazione’ in Manuale di Apprendimento, (learning)Partiture e parti section ‘Partiture e parti’ in Manuale di Apprendimento.
Se a un file incluso viene assegnato un nome identico a uno dei file di installazione di LilyPond, quest’ultimo ha la precedenza.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Different editions from one source
Esistono vari metodi per generare versioni diverse di una partitura dalla stessa sorgente di musica. Le variabili sono forse le più utili per combinare lunghe sezioni musicali e/o note. Le etichette (tag) sono più utili per selezionare una sezione da varie sezioni brevi alternative e possono essere usate anche per unire insieme dei brani in punti diversi.
Qualsiasi metodo venga usato, la separazione delle note dalla struttura della partitura permetterà di cambiare la struttura lasciando le note intatte.
| Uso delle variabili | ||
| Uso delle etichette | ||
| Impostazioni globali |
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Using variables
Se le sezioni musicali sono definite in variabili, possono essere riutilizzate in varie parti della partitura, come è stato spiegato in (learning)Organizzare i brani con le variabili section ‘Organizzare i brani con le variabili’ in Manuale di Apprendimento. Per esempio, una partitura vocale a cappella spesso comprende, ai fini delle prove, una riduzione per pianoforte delle parti, identiche alla musica vocale, dunque la musica deve essere inserita una volta sola. La musica definita in due variabili può essere combinata in un rigo, come è spiegato in Combinazione automatica delle parti. Ecco un esempio:
sopranoMusic = \relative { a'4 b c b8( a) } altoMusic = \relative { e'4 e e f } tenorMusic = \relative { c'4 b e d8( c) } bassMusic = \relative { a4 gis a d, } allLyrics = \lyricmode { King of glo -- ry } << \new Staff = "Soprano" \sopranoMusic \new Lyrics \allLyrics \new Staff = "Alto" \altoMusic \new Lyrics \allLyrics \new Staff = "Tenore" { \clef "treble_8" \tenorMusic } \new Lyrics \allLyrics \new Staff = "Basso" { \clef "bass" \bassMusic } \new Lyrics \allLyrics \new PianoStaff << \new Staff = "Destra" { \partCombine \sopranoMusic \altoMusic } \new Staff = "Sinistra" { \clef "bass" \partCombine \tenorMusic \bassMusic } >> >>
Partiture separate che mostrino soltanto le parti vocali o soltanto quelle per pianoforte possono essere prodotte semplicemente cambiando le dichiarazioni della struttura, lasciando la notazione musicale intatta.
Nel caso di partiture lunghe, conviene mettere le definizioni delle variabili in file separati da includere, vedi Inclusione di file LilyPond.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Using tags
Il comando \tag #'parteA contrassegna un’espressione
musicale col nome parteA.
Le espressioni contrassegnate in questo modo possono essere incluse o
rimosse in base al loro nome successivamente, usando
\keepWithTag #'nome oppure
\removeWithTag #'nome. Il risultato dell’applicazione di
questi filtri alla musica etichettata è il seguente:
| Filtro | Risultato |
|---|---|
Musica etichettata preceduta da \keepWithTag #'nome o
\keepWithTag #'(nome1 nome2…) | Viene inclusa la musica non etichettata e quella etichettata con uno dei nomi specificati; la musica etichettata con un nome etichetta diverso viene esclusa. |
Musica etichettata preceduta da \removeWithTag #'nome o
\removeWithTag #'(nome1 nome2…) | Viene inclusa la musica non etichettata e quella non etichettata con uno dei nomi specificati; la musica etichettata con uno dei nomi specificati viene esclusa. |
Musica etichettata non preceduta da \keepWithTag o
\removeWithTag | Viene inclusa tutta la musica etichettata e non etichettata. |
Gli argomenti dei comandi \tag, \keepWithTag e
\removeWithTag devono essere un simbolo o una lista di
simboli (come #'score o #'(violinoI violinoII),
seguiti da un’espressione musicale. Se e solo se i simboli
sono identificatori LilyPond validi (solo caratteri alfabetici, nessun
numero, trattino o trattino basso) che non possono essere confusi con
le note, si può omettere il #' e, come scorciatoia, una lista di
simboli può usare il punto come separatore: quindi
\tag #'(violinoI violinoII) può essere riscritto come
\tag violinoI.violinoII. Lo stesso vale per
\keepWithTag e \removeWithTag.
Nell’esempio seguente, vediamo due versioni di un brano musicale, una che mostra i trilli con la notazione abituale e l’altra con i i trilli espansi esplicitamente:
musica = \relative { g'8. c32 d \tag #'trilli { d8.\trill } \tag #'espandi { \repeat unfold 3 { e32 d } } c32 d } \score { \keepWithTag #'trilli \musica } \score { \keepWithTag #'espandi \musica }
Altrimenti, talvolta è più facile escludere sezioni musicali:
musica = \relative { g'8. c32 d \tag #'trilli { d8.\trill } \tag #'espandi {\repeat unfold 3 { e32 d } } c32 d } \score { \removeWithTag #'espandi \musica } \score { \removeWithTag #'trilli \musica }
Il filtro delle etichette può essere applicato a articolazioni, testo, etc. scrivendo
-\tag #'tua-etichetta |
prima di un’articolazione. L’esempio seguente definisce una nota con un’indicazione di diteggiatura condizionale e una nota con un commento condizionale:
c1-\tag #'dito ^4 c1-\tag #'attenzione ^"Fai attenzione!" |
Varie etichette possono essere associate a delle espressioni tramite molteplici
\tag, o unendo molteplici etichette in una lista di simboli:
musica = \relative c'' { \tag #'a \tag #'entrambi { a4 a a a } \tag #'(b entrambi) { b4 b b b } } << \keepWithTag #'a \musica \keepWithTag #'b \musica \keepWithTag #'entrambi \musica >>
Si possono applicare molteplici filtri \removeWithTag a una singola
espressione musicale per togliere varie sezioni etichettate con nomi
diversi. Altrimenti si può usare un solo \removeWithTag seguito da
una lista di etichette.
musica = \relative c'' { \tag #'A { a4 a a a } \tag #'B { b4 b b b } \tag #'C { c4 c c c } \tag #'D { d4 d d d } } \new Voice { \removeWithTag #'B \removeWithTag #'C \musica \removeWithTag #'(B C) \musica }
Applicando due o più filtri \keepWithTag su una singola espressione
musicale toglieranno tutte le sezioni etichettate. Il primo filtro
toglie tutto tranne la sezione menzionata e qualsiasi filtro successivo toglie
il resto. Usando un singolo comando \keepWithTag con una lista di
varie etichette vengono rimosse soltanto le sezioni etichettate non specificate
in quella lista.
music = \relative c'' { \tag #'violinoI { a4 a a a } \tag #'violinoII { b4 b b b } \tag #'viola { c4 c c c } \tag #'cello { d4 d d d } } \new Staff { \keepWithTag #'(violinI violinII) \music }
farà apparire le etichette violinoI e violinoII ma non viola o cello.
Mentre \keepWithTag è comodo con un gruppo di alternative, la
rimozione di musica contrassegnata con etichette indipendenti è
problematico se si usano le etichette con diverse finalità. In questo
caso, è possibile dichiarare ‘gruppi’ di etichette:
\tagGroup #'(violinoI violinoII viola cello) |
dichiara che queste etichette appartengono a un gruppo.
\keepWithTag #'violinoI … |
ora mostrerà soltanto la musica contrassegnata con le etichette presenti nel
gruppo cui appartiene violinoI e verrà tolta la musica contrassegnata
con una delle altre etichette.
music = \relative { \tagGroup #'(violinoI violinoII viola cello) \tag #'violinoI { c''4^"violinI" c c c } \tag #'violinoII { a2 a } \tag #'viola { e8 e e2. } \tag #'cello { d'2 d4 d } R1^"non contrassegnato" } \new Voice { \keepWithTag #'violinoI \music }
Quando si usa il comando \keepWithTag, sono visibili solo le etichette
provenienti dai gruppi cui appartengono le etichette specificate dopo il comando.
Talvolta si ha necessità di combinare insieme della musica in un punto preciso
di un’espressione musicale esistente. \pushToTag e \appendToTag
permettono di aggiungere materiale prima o dopo gli elementi di un costrutto
musicale esistente. Non tutti i costrutti musicali hanno elementi, ma nel caso
di musica sequenziale e simultanea si può esserne sicuri:
music = { \tag #'qui { \tag #'qui <<c''>> } } { \pushToTag #'qui c' \pushToTag #'qui e' \pushToTag #'qui g' \music \appendToTag #'qui c' \appendToTag #'qui e' \appendToTag #'qui g' \music }
Entrambi i comandi prendono tre argomenti: un’etichetta, il materiale da combinare ad ogni occorenza dell’etichetta e l’espressione contrassegnata.
Manuale di apprendimento: (learning)Organizzare i brani con le variabili section ‘Organizzare i brani con le variabili’ in Manuale di Apprendimento.
Guida alla notazione: Combinazione automatica delle parti, Inclusione di file LilyPond.
Se si usa \relative prima di un’espressione musicale ottenuta
filtrando la musica con \keepWithTag o \removeWithTag,
i rapporti di ottava potrebbero cambiare, perché verranno considerate
solo le altezze rimaste nell’espressione filtrata. Per evitare questo
rischio, usare \relative prima di \keepWithTag o
\removeWithTag, in modo che \relative agisca su tutte
le altezze prima del filtro.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Using global settings
È possibile includere impostazioni globali da un altro file:
lilypond -dinclude-settings=MIE_IMPOSTAZIONI.ly MIA_PARTITURA.ly |
Gruppi di impostazioni come dimensioni del foglio e tipo di carattere possono essere salvati in file separati. Ciò permette di ottenere diverse edizioni dalla stessa partitura o di applicare delle impostazioni tipiche a molte partiture, semplicemente indicando il relativo file delle impostazioni.
Questa tecnica è la stessa usata per i fogli di stile, trattati in (learning)Fogli di stile section ‘Fogli di stile’ in Manuale di Apprendimento.
Manuale di apprendimento: (learning)Organizzare i brani con le variabili section ‘Organizzare i brani con le variabili’ in Manuale di Apprendimento, (learning)Fogli di stile section ‘Fogli di stile’ in Manuale di Apprendimento.
Guida alla notazione: Inclusione di file LilyPond.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Special characters
| Codifica del testo | ||
| Unicode | ||
| Alias ASCII |
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Text encoding
LilyPond usa il repertorio di caratteri definito dall’Unicode Consortium e dalla ISO/IEC 10646. Questo sistema di codifica definisce un nome e un numero univoci per gli insiemi di caratteri utilizzati in tutte le lingue moderne e anche in molte altre. Unicode può essere implementato in varie codifiche diverse. LilyPond usa la codifica UTF-8 (UTF sta per Unicode Transformation Format) che rappresenta tutti i comuni caratteri latini con un byte, e gli altri caratteri con un formato di lunghezza variabile fino a quattro byte.
L’aspetto grafico dei caratteri è determinato dai glifi definiti nei tipi di carattere disponibili - un tipo di carattere definisce la mappatura tra un sottoinsieme dei numeri Unicode e i glifi. LilyPond usa la libreria Pango per rappresentare e formattare i testi multilingua.
LilyPond non esegue alcuna conversione della codifica dell’input. Ciò significa che qualsiasi testo, sia esso un titolo, un testo vocale o un’istruzione musicale contenente caratteri non-ASCII, deve essere codificato in UTF-8. Il modo più semplice per inserire tale testo è usare un editor che sappia riconoscere la codifica Unicode e salvare il file con la codifica UTF-8. La maggior parte dei moderni editor supporta la codifica UTF-8, per esempio vim, Emacs, jEdit e Gedit. Tutti i sistemi MS Windows successivi a NT usano Unicode come codifica dei caratteri nativa, quindi perfino Notepad può modificare e salvare un file in formato UTF-8. Un’alternativa più efficiente per Windows è BabelPad.
Se un file di input LilyPond contenente un caratter non-ASCII non viene salvato in formato UTF-8, apparirà il seguente messaggio di errore:
FT_Get_Glyph_Name () error: invalid argument |
Ecco un esempio che mostra del testo cirillico, ebraico e portoghese:
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
Per inserire un singolo carattere per il quale è noto il codice Unicode ma
che non è disponibile nell’editor in uso, usare \char ##xhhhh o
\char #dddd dentro un blocco \markup, dove hhhh è il
codice esadecimale del carattere richiesto e dddd è il valore
decimale corrispondente. Gli zero iniziali possono essere omessi, ma di
norma nella rappresentazione esadecimale si specificano tutti e quattro
i caratteri. (Fare attenzione al fatto che la codifica UTF-8 del codice
non deve essere usata dopo \char, perché le codifiche UTF-8
contengono bit extra che indicano il numero di ottetti.) Le tabelle dei
codici Unicode e un indice dei nomi dei caratteri col proprio codice
esadecimale sono disponibili sul sito dell’Unicode Consortium,
http://www.unicode.org/.
Per esempio, \char ##x03BE e \char #958 corrispondono
entambi al carattere Unicode U+03BE, che ha il nome Unicode
“Greek Small Letter Xi”.
Qualsiasi codice Unicode può essere inserito in questo modo e se tutti i caratteri speciali sono inseriti in questo formato non è necessario salvare il file di input in formato UTF-8. Ovviamente, un tipo di carattere contenente tutti questi caratteri codificati deve essere installato e disponibile per LilyPond.
L’esempio seguente mostra valori esadecimali Unicode inseriti in quattro posti diversi: come numero di chiamata, come articolazione, nel testo vocale e come testo separato sotto il brano:
\score { \relative { c''1 \mark \markup { \char ##x03EE } c1_\markup { \tiny { \char ##x03B1 " a " \char ##x03C9 } } } \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } } } \markup { "Copyright 2008--2020" \char ##x00A9 }
Per inserire il segno del copyright nell’apposito campo usare:
\header {
copyright = \markup { \char ##x00A9 "2008" }
}
|
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof ASCII aliases
È possibile includere una lista di alias ASCII per i caratteri speciali:
\paper { #(include-special-characters) } \markup "&flqq; – &OE;uvre incomplète… &frqq;" \score { \new Staff { \repeat unfold 9 a'4 } \addlyrics { Fun -- ziona an -- che nel~tes -- to: –_&OE;… } } \markup \column { "La sostituzione può essere disabilitata:" "– &OE; …" \override #'(replacement-alist . ()) "– &OE; …" }
Si possono creare i propri alias, sia globalmente:
\paper { #(add-text-replacements! '(("100" . "hundred") ("dpi" . "dots per inch"))) } \markup "A 100 dpi."
che localmente:
\markup \replace #'(("100" . "hundred") ("dpi" . "dots per inch")) "A 100 dpi."
Guida alla notazione: Elenco dei caratteri speciali.
File installati: ‘ly/text-replacements.ly’.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] |
This document was generated by gub on Luglio 13, 2020 using texi2html 1.82.
Altre lingue: English, català, deutsch, español, français, 日本語.
A proposito della selezione automatica della lingua.