X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fit%2Flearning%2Ffundamental.itely;fp=Documentation%2Fit%2Flearning%2Ffundamental.itely;h=9f1e17502cc6a1e250bc13ea0733b5bf43227d87;hb=e90f0536f9be39ada0bef0aeb0d275dec3b2fb5b;hp=0000000000000000000000000000000000000000;hpb=a8c9e8a7ca320ab0df5fd32e717fd62cd7635ce6;p=lilypond.git diff --git a/Documentation/it/learning/fundamental.itely b/Documentation/it/learning/fundamental.itely new file mode 100644 index 0000000000..9f1e17502c --- /dev/null +++ b/Documentation/it/learning/fundamental.itely @@ -0,0 +1,3197 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*- + +@ignore + Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48 + + When revising a translation, copy the HEAD committish of the + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. +@end ignore + +@c \version "2.14.0" + +@node Concetti fondamentali +@chapter Concetti fondamentali +@translationof Fundamental concepts + +Nel Tutorial abbiamo visto come produrre dei belli spartiti da un +semplice file di testo. Questa sezione presenta i concetti e le +tecniche richiesti per produrre partiture ugualmente belle, ma +più complesse. + +@menu +* Come funzionano i file di input di LilyPond:: +* Le voci contengono la musica:: +* Contesti e incisori:: +* Estendere i modelli:: +@end menu + + +@node Come funzionano i file di input di LilyPond +@section Come funzionano i file di input di LilyPond +@translationof How LilyPond input files work + +Il formato di input di LilyPond ha una struttura piuttosto libera, che dà +agli utenti esperti una grande flessibilità nell'organizzare i file come +preferiscono. Ma questa flessibilità può creare confusione nei nuovi +utenti. Questa sezione spiegherà in parte questa struttura, ma +sorvolerà su alcuni dettagli in favore della semplicità. Per una +descrizione completa del formato di input, si veda @ruser{File structure}. + +@menu +* Introduzione alla struttura di un file di LilyPond:: +* La partitura è una (singola) espressione musicale composta:: +* Annidare le espressioni musicali:: +* Sul non annidamento di parentesi e legature di valore:: +@end menu + +@node Introduzione alla struttura di un file di LilyPond +@subsection Introduzione alla struttura di un file di LilyPond +@translationof Introduction to the LilyPond file structure + +@cindex formato di input +@cindex struttura del file + +Un esempio basilare di un file di input di LilyPond è + +@example +\version @w{"@version{}"} + +\header @{ @} + +\score @{ + @var{...espressione musicale composta...} % tutta la musica va qui! + \layout @{ @} + \midi @{ @} +@} +@end example + +@noindent +Ci sono molte varianti a questo modello di base, ma questo esempio +serve da utile punto di partenza. + +@funindex \book +@funindex book +@funindex \score +@funindex score +@cindex book (libro) +@cindex score (partitura) +@cindex libro +@cindex partitura + +Finora nessuno degli esempi che abbiamo visto ha usato il comando +@code{\score@{@}}. Questo si spiega col fatto che LilyPond, quando +elabora un input semplice, aggiunge automaticamente gli altri comandi +necessari. LilyPond tratta un input come questo: + +@example +\relative c'' @{ + c4 a d c +@} +@end example + +@noindent +come forma abbreviata per questo: + +@example +\book @{ + \score @{ + \new Staff @{ + \new Voice @{ + \relative c'' @{ + c4 a b c + @} + @} + @} + \layout @{ @} + @} +@} +@end example + +In altre parole, se l'input contiene un'espressione musicale singola, +LilyPond interpreterà il file come se l'espressione musicale +fosse racchiusa dentro i comandi mostrati sopra. + +@cindex contesti impliciti +@cindex contesti, impliciti + +@strong{Attenzione!} Molti esempi nella documentazione di LilyPond +ometteranno i comandi @code{\new Staff} e @code{\new Voice}, +lasciando che questi siano creati implicitamente. Per gli esempi +semplici questo metodo funziona bene, ma per quelli più complessi, soprattutto +quando vengono usati ulteriori comandi, la creazione implicita dei contesti +può dare risultati inattesi, ad esempio creando dei righi non voluti. +Il modo per creare i contesti esplicitamente è spiegato in +@ref{Contexts and engravers}. + +@warning{Quando si inseriscono più di poche linee di musica, si consiglia +di creare sempre esplicitamente i righi e le voci.} + +Ora però torniamo al primo esempio ed esaminiamo il comando +@code{\score}, lasciando gli altri comandi secondo l'impostazione predefinita. + +Un blocco @code{\score} deve sempre contenere una sola espressione musicale, +e questa deve trovarsi subito dopo il comando @code{\score}. +Ricorda che un'espressione musicale può essere qualsiasi cosa, da una +singola nota a una grande espressione composta come + +@example +@{ + \new StaffGroup << + @var{...inserisci qui l'intera opera di Wagner...} + >> +@} +@end example + +@noindent +Tutto quanto è compreso in @code{@{ ... @}} costituisce un'unica +espressione musicale. + +Come abbiamo detto prima, il blocco @code{\score} può contenere altri +elementi, come ad esempio + +@example +\score @{ + @{ c'4 a b c' @} + \header @{ @} + \layout @{ @} + \midi @{ @} +@} +@end example + +@funindex \header +@funindex header +@funindex \layout +@funindex layout +@funindex \midi +@funindex midi +@cindex header +@cindex layout +@cindex midi + +@noindent +Si noti che questi tre comandi -- @code{\header}, @code{\layout} e +@code{\midi} -- sono speciali: diversamente da molti altri comandi che +iniziano con un backslash (@code{\}), @emph{non} sono espressioni +musicali né fanno parte di alcuna espressione musicale. Dunque, possono +essere collocati dentro o fuori da un blocco @code{\score}. Di solito +questi comandi vengono posti fuori dal blocco @code{\score} -- ad esempio, +@code{\header} spesso viene messo sopra il comando @code{\score}, come mostra +l'esempio all'inizio di questa sezione. + +Altri due comandi che non hai incontrato finora sono +@code{\layout @{ @}} e @code{\midi @{@}}. Se questi appaiono come +in figura, LilyPond creerà rispettivamente un output per la stampa +e uno per il MIDI. Sono descritti dettagliatamente nella +Guida alla notazione, in @ruser{Score layout}, e +@ruser{Creating MIDI files}. + +@cindex partiture, multiple +@cindex libro, blocco implicito +@cindex implicito, blocco del libro +@funindex \book +@funindex book + +Puoi scrivere molteplici blocchi @code{\score}. Ciascuno verrà +trattato come una partitura separata, ma saranno tutti combinati in +un unico file di output. Non è necessario il comando @code{\book} +-- ne verrà creato uno automaticamente. Tuttavia, se si desiderano +file di output separati da un file @file{.ly}, allora si deve usare +il comando @code{\book} per separare le diverse sezioni: ogni blocco +@code{\book} produrrà un file di output separato. + +In breve: + +Ogni blocco @code{\book} crea un file di output separato (ovvero, un +file PDF). Se non ne hai aggiunto uno esplicitamente, LilyPond racchiude +implicitamente tutto il tuo codice di input in un blocco @code{\book}. + +Ogni blocco @code{\score} è un pezzo di musica separato all'interno di +un blocco @code{\book}. + +@cindex layout, effetto della posizione del blocco + +Ogni blocco @code{\layout} influenza il blocco @code{\score} o +@code{\book} in cui compare -- ovvero, un blocco @code{\layout} +che si trova dentro un blocco @code{\score} riguarda solo quel blocco +@code{\score}, mentre un blocco @code{\layout} che si trova fuori da un +blocco @code{\score} (e quindi in un blocco @code{\book}, esplicitamente +o implicitamente) riguraderà ogni @code{\score} in quel @code{\book}. + +Per maggiori dettagli si veda @ruser{Multiple scores in a book}. + +@cindex variabili + +Un'altra grande scorciatoia è la possibilità di definire variabili, come è +spiegato in @ref{Organizzare i brani con le variabili}). Tutti +i modelli usano questa forma + +@example +melodia = \relative c' @{ + c4 a b c +@} + +\score @{ + \melodia +@} +@end example + +Quando LilyPond esamina questo file, prende il valore di @code{melodia} (tutto +ciò che si trova dopo il segno di uguale) e lo inserisce ovunque si trovi +@code{\melodia}. Non c'è una regola specifica per i nomi -- il nome può essere +@code{melodia}, @code{globale}, @code{tempo}, @code{manodestrapiano}, o qualsiasi +altro nome. Ricordati che puoi usare quasi ogni nome che vuoi, purché esso +contenga solo caratteri alfabetici e sia diverso dai nomi dei comandi di +LilyPond. Le esatte limitazioni relative ai nomi delle variabili sono spiegate +dettagliatamente in @ruser{File structure}. + + +@seealso +Per una definizione completa del formato di input, si veda +@ruser{File structure}. + + +@node La partitura è una (singola) espressione musicale composta +@subsection La partitura è una (singola) espressione musicale composta +@translationof Score is a (single) compound musical expression + +@funindex \score +@funindex score +@cindex partitura +@cindex score +@cindex contenuto di un blocco score +@cindex score, contenuto del blocco +@cindex espressione musicale composta +@cindex composta, espressione musicale + +Abbiamo visto l'organizzazione generale dei file di input di LilyPond nella +sezione precedente, @ref{Introduzione alla struttura di un file di LilyPond}. +Ma sembra che abbiamo saltato la parte più importante: cosa dobbiamo +scrivere dopo @code{\score}? + +In realtà non l'abbiamo affatto dimenticato. Il grande mistero è, +semplicemente, che @emph{non c'è} alcun mistero. La seguente frase spiega tutto: + +@quotation +@emph{Un blocco @code{\score} deve iniziare con un'espressione musicale composta.} +@end quotation + +@noindent +Per capire cosa si intende per espressione musicale e per espressione +musicale composta, potrebbe esserti utile ripassare il tutorial, +@ref{Espressioni musicali}. In quella sezione, abbiamo visto +come costruire grandi espressioni musicali a partire da piccoli brani -- abbiamo +iniziato con le note, poi gli accordi, etc. Adesso inzieremo da una grande +espressione musicale e proseguiremo poi a spiegarne i dettagli. Per semplicità, +nel nostro esempio useremo soltanto un canto e un pianoforte. Per questa formazione +non abbiamo bisogno di @code{StaffGroup}, che non fa altro che raggruppare un insieme +di righi con una parentesi graffa a sinistra, ma abbiamo comunque bisogno dei +righi per il canto e per il pianoforte. + +@example +\score @{ + << + \new Staff = "canto" << + >> + \new PianoStaff = "pianoforte" << + >> + >> + \layout @{ @} +@} +@end example + +In questo esempio abbiamo dato dei nomi ai righi -- @qq{canto} e +@qq{pianoforte}. Non è necessario in questo caso, ma è una buona abitudine +da coltivare, perché ti permette di vedere a colpo d'occhio a cosa serve +ciascun rigo. + +Ricorda che si usano @code{<< ... >>} invece di @code{@{ ... @}} per indicare +la musica simultanea. In questo modo la parte vocale e quella di pianoforte +appaiono una sopra l'altra nello spartito. Il costrutto @code{<< ... >>} non +sarebbe necessario per il rigo del cantante nell'esempio precedente se contenesse +soltanto un'espressione musicale sequenziale, ma @code{<< ... >>} al posto delle +parentesi è necessario se la musica sul rigo deve contenere due o più espressioni +simultanee, ad esempio due voci simultanee, o una voce con del testo. Vogliamo +avere una voce con del testo, dunque ci servono le parentesi ad angolo. Aggiungeremo +la musica vera e propria in seguito; per adesso mettiamo soltanto delle semplici +note e del testo. Se hai dimenticato come aggiungere del testo, potresti voler +ripassare @code{\addlyrics} in @ref{Impostare canzoni semplici}. + +@lilypond[verbatim,quote,ragged-right] +\score { + << + \new Staff = "canto" << + \new Voice = "vocal" { c'1 } + \addlyrics { And } + >> + \new PianoStaff = "piano" << + \new Staff = "upper" { c'1 } + \new Staff = "lower" { c'1 } + >> + >> + \layout { } +} +@end lilypond + +Ora abbiamo molti più dettagli. Abbiamo il rigo del cantante: esso contiene +una @code{Voice} o voce (in LilyPond, questo termine si riferisce a un insieme +di note, non necessariamente alle note della voce -- ad esempio, un violino di +solito costituisce una voce) e del testo. Abbiamo anche il rigo del pianoforte, +che a sua volta comprende un rigo superiore (per la mano destra) e uno inferiore +(per la mano sinistra), sebbene a quest'ultimo debba ancora essere assegnata +una chiave di basso. + +A questo punto possiamo iniziare ad inserire le note. All'interno delle parentesi +graffe vicine a @code{\new Voice = "vocal"}, possiamo iniziare a scrivere + +@example +\relative c'' @{ + r4 d8\noBeam g, c4 r +@} +@end example + +Ma se facessimo così, la sezione @code{\score} diventerebbe molto lunga, e +sarebbe più difficile comprendere quel che accade. Usiamo quindi le variabili +piuttosto. Queste sono state introdotte alla fine della sezione precedente, +ricordi? Per far sì che i contenuti della variabile @code{text} siano +interpretati come testo, li facciamo precedere da @code{\lyricmode}. Come in +@code{\addlyrics}, questo comando trasforma la modalità di input in modalità +testo. Senza di esso, LilyPond cercherebbe di interpretare i contenuti come +se fossero note, e questo produrrebbe degli errori. (Sono disponibili molte +altre modalità di input, si veda @ruser{Input modes}.) + +Dunque se aggiungiamo un po' di note e una chiave di basso per la mano +sinistra, otteniamo un brano musicale vero e proprio: + +@lilypond[verbatim,quote,ragged-right] +melody = \relative c'' { r4 d8\noBeam g, c4 r } +text = \lyricmode { And God said, } +upper = \relative c'' { 2~ } +lower = \relative c { b2 e } + +\score { + << + \new Staff = "canto" << + \new Voice = "vocal" { \melody } + \addlyrics { \text } + >> + \new PianoStaff = "piano" << + \new Staff = "upper" { \upper } + \new Staff = "lower" { + \clef "bass" + \lower + } + >> + >> + \layout { } +} +@end lilypond + +Quando scrivi (o leggi) una sezione @code{\score}, prenditela comoda e stai +attento. Comincia dal livello più esterno, poi lavora su ogni livello più +piccolo. È anche molto utile essere rigorosi nell'indentare l'input -- ovvero +fare attenzione che ogni elemento di uno stesso livello presente nell'editor +di testo si trovi nella stessa posizione orizzontale. + + +@seealso +Guida alla notazione: @ruser{Structure of a score}. + + +@node Annidare le espressioni musicali +@subsection Annidare le espressioni musicali +@translationof Nesting music expressions + +@cindex righi temporanei +@cindex temporanei, righi +@cindex ossia + +Non è obbligatorio dichiarare tutti i righi fin dall'inizio; possono essere +invece introdotti temporaneamente in ogni momento. Questo è utile in +particolare per creare le sezioni ossia -- si veda @rglos{ossia}. Ecco un +semplice esempio che mostra come inserire un nuovo rigo temporaneamente, per +la durata di tre note: + +@lilypond[verbatim,quote,ragged-right] +\new Staff { + \relative g' { + r4 g8 g c4 c8 d | + e4 r8 + << + { f8 c c } + \new Staff { + f8 f c + } + >> + r4 | + } +} +@end lilypond + +@noindent +Si noti che la dimensione della chiave è la stessa di una chiave che segue un +cambio di chiave --ovvero leggermente più piccola della chiave all'inizio del +rigo. Questo è utile per le chiavi che devono essere posizionate a metà di un +rigo. + +@cindex rigo, posizionamento del + +La sezione ossia può anche essere posta sopra il rigo +nel seguente modo: + +@lilypond[verbatim,quote,ragged-right] +\new Staff = "main" { + \relative g' { + r4 g8 g c4 c8 d | + e4 r8 + << + { f8 c c } + \new Staff \with { + alignAboveContext = #"main" + } { f8 f c } + >> + r4 | + } +} +@end lilypond + +Questo esempio usa @code{\with}, che verrà spiegato in modo più +completo in seguito. È un modo per cambiare il comportamento predefinito +di un singolo rigo. In questo caso, indica che il nuovo rigo deve essere +posizionato sopra il rigo chiamato @qq{main} invece che nella posizione +predefinita, che è in basso. + + +@seealso +Gli ossia vengono spesso scritti senza armatura di chiave e senza +tempo, e solitamente hanno un font più piccolo. Richiedono ulteriori +comandi che non sono stati ancora presentati. Si veda @ref{Size of objects}, +e @ruser{Ossia staves}. + + +@node Sul non annidamento di parentesi e legature di valore +@subsection Sul non annidamento di parentesi e legature di valore +@translationof On the un-nestedness of brackets and ties + +@cindex parentesi, annidare +@cindex tipi di parentesi +@cindex parentesi, racchiudere vs. contrassegnare + +Abbiamo già incontrato vari tipi di parentesi e di costrutti che fanno +uso di parentesi mentre scrivevamo il file di input di LilyPond. Ognuna obbedisce a +diverse regole, e questo può generare confusione all'inizio. Rivediamo prima i +diversi tipi di parentesi e di costrutti in parentesi. + +@c attempt to force this onto a new page +@need 50 +@multitable @columnfractions .3 .7 +@headitem Tipo di parentesi + @tab Funzione +@item @code{@{ .. @}} + @tab Racchiude un frammento di musica sequenziale +@item @code{< .. >} + @tab Racchiude le note di un accordo +@item @code{<< .. >>} + @tab Racchiude le espressioni musicali simultanee +@item @code{( .. )} + @tab Contrassegna l'inizio e la fine di una legatura di portamento +@item @code{\( .. \)} + @tab Contrassegna l'inizio e la fine di una legatura di frase +@item @code{[ .. ]} + @tab Contrassegna l'inizio e la fine di una travatura impostata manualmente +@end multitable + +A questi dovremmo aggiungere altri costrutti che generano linee tra +e lungo le note: legature di valore (contrassegnate dal tilde, @code{~}), +i gruppi irregolari scritti in questa forma @code{\times x/y @{..@}}, e +gli abbellimenti, indicati con @code{\grace@{..@}}. + +Fuori da LilyPond, l'uso convenzionale delle parentesi esige che i diversi +tipi siano annidati adeguatamente, in questo modo, @code{<< [ @{ ( .. ) +@} ] >>}, dove le parentesi che chiudono si trovano esattamente +nell'ordine opposto alle parentesi che aprono. Questo @strong{è} un +requisito per i tre tipi di parentesi descritti dal termine @q{Racchiude} +nella tabella precedente -- devono annidarsi correttamente. Tuttavia, +i restanti costrutti in parentesi, descritti dal termine @q{Contrassegna} nella +tabella, così come le legature e i gruppi irregolari, @strong{non} devono annidarsi +correttamente con alcuna delle parentesi o dei costrutti in parentesi. Infatti +queste non sono parentesi nel senso che racchiudono qualcosa -- sono semplicemente +dei contrassegni che indicano dove qualcosa inizia e finisce. + +Quindi, ad esempio, una legatura di frase può iniziare prima di una travatura +inserita manualmente e finire prima della fine della travatura -- non +molto musicale, forse, ma possibile: + +@lilypond[quote,verbatim,ragged-right,relative=2] +g8\( a b[ c b\) a] g4 +@end lilypond + +In generale, tipi diversi di parentesi, costrutti in parentesi e segni che +riguardano gruppi irregolari, legature e abbellimenti possono essere combinati +liberamente. L'esempio seguente mostra una travatura che si estende su un +gruppo irregolare (linea 1), una legatura di portamento che si estende su +una terzina (linea 2), una travatura e una legatura di portamento che si +estendono su una terzina, una legatura di valore che attraversa due gruppi +irregolari, e una legatura di frase che si estende fuori da un gruppo +irregolare (linee 3 e 4). + +@lilypond[quote,verbatim,ragged-right,relative=1] +r16[ g \times 2/3 { r16 e'8] } +g,16( a \times 2/3 { b16 d) e } +g,8[( a \times 2/3 { b8 d) e~] } | +\times 4/5 { e32\( a, b d e } a4.\) +@end lilypond + + +@node Le voci contengono la musica +@section Le voci contengono la musica +@translationof Voices contain music + +Un cantante ha bisogno della voce per cantare, e lo stesso vale per LilyPond. +La musica vera e propria per tutti gli strumenti di una partitura è +contenuta nelle Voci -- il più importante concetto di LilyPond. + +@menu +* Sento le Voci:: +* Definire esplicitamente le voci:: +* Voci e musica vocale:: +@end menu + +@node Sento le Voci +@subsection Sento le Voci +@translationof I'm hearing Voices + +@cindex polifonia +@cindex livelli +@cindex varie voci +@cindex voci, varie +@cindex Voice (voce), contesto di +@cindex contesto Voice (voce) +@cindex musica simultanea +@cindex simultanea, musica +@cindex musica sincrona +@cindex sincrona, musica +@cindex voci vs. accordi +@cindex accordi vs. voci + +I livelli più profondi, più interni e più importanti di uno spartito di LilyPond +sono chiamati @q{Voice contexts} («Contesti della voce») o semplicemente @q{Voices} +(«Voci»). In altri programmi di notazione le voci sono chiamate talvolta @q{layers} +(«livelli»). + +Il livello o contesto della voce è l'unico che può contenere la +musica. Se un contesto della voce non è dichiarato esplicitamente, ne +viene creato uno automaticamente, come abbiamo visto all'inizio di questo +capitolo. Alcuni strumenti, come ad esempio un oboe, possono produrre una +sola nota per volta. La musica scritta per tali strumenti è monofonica e +necessita di una sola voce. Invece gli strumenti che possono produrre più +di una nota contemporaneamente, come ad esempio il pianoforte, richiederanno +spesso voci multiple per codificare le diverse note e ritmi simultanei che +sono capaci di riprodurre. + +Ovviamente, una singola voce può contenere molte note in un accordo, +dunque quando l'uso delle voci multiple è davvero necessario? Si osservi +questo esempio di quattro accordi: + +@lilypond[quote,verbatim,fragment,ragged-right,relative=1] +\key g \major +4 +@end lilypond + +Questa musica può essere espressa usando soltanto i simboli dell'accordo, +ovvero le parentesi angolari, @code{< ... >}, e una singola voce è +sufficiente. Ma cosa accadrebbe se il Fa# fosse in realtà una nota di un +ottavo seguita da un Sol di un ottavo, una nota di passaggio che porta al La? +In questo caso abbiamo due note che iniziano nello stesso momento ma hanno +durate diverse: il Re da un quarto e il Fa# da un ottavo. Come si possono scrivere +queste note? Non possono essere scritte come un accordo perché tutte le note di +un accordo devono avere la stessa durata. E non possono nemmeno essere scritte +come due note in sequenza perché devono iniziare in contemporanea. Si tratta +quindi di un caso in cui sono necessarie due voci. + +Vediamo come ottenerle nella sintassi di input di LilyPond. + +@funindex << \\ >> +@funindex \\ + +Il modo più semplice per inserire frammenti che utilizzino più di una voce +su un rigo è scrivere ogni voce come una sequenza (con @code{@{...@}}), +e poi combinarle in simultanea tramite le doppie parentesi angolari, @code{<<...>>}. +Per collocarli in voci distinte, i frammenti devono essere separati da un doppio +backslash, @code{\\}. Senza di esso, le note sarebbero inserite in un'unica +voce, e questo normalmente causerebbe degli errori. Questa tecnica è +particolarmente adatta ai brani che sono in gran parte monofonici ma +con brevi e occasionali sezioni polifoniche. + +Ecco come suddividere gli accordi precedenti in due voci e aggiungere sia +la nota di passaggio che la legatura di portamento: + +@lilypond[quote,verbatim,ragged-right,relative=2] +\key g \major +% Voice "1" Voice "2" +<< { g4 fis8( g) a4 g } \\ { d4 d d d } >> +@end lilypond + +Si noti come i gambi della seconda voce adesso siano rivolti in basso. + +Ecco un altro semplice esempio: + +@lilypond[quote,verbatim,ragged-right,relative=2] +\key d \minor +% Voice "1" Voice "2" +<< { r4 g g4. a8 } \\ { d,2 d4 g } >> | +<< { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> | +<< { a2. r4 } \\ { fis2. s4 } >> | +@end lilypond + +Non è necessario usare un costrutto con @code{<< \\ >>} in ogni +battuta. Per musiche che hanno poche note in ogni battuta questo layout +può aiutare la leggibilità del codice, ma se ci sono molte note in +ogni battuta è preferibile dividere ogni voce, così: + +@lilypond[quote,verbatim,ragged-right,relative=2] +\key d \minor +<< { + % Voice "1" + r4 g g4. a8 | + bes4 bes c bes | + a2. r4 | +} \\ { + % Voice "2" + d,2 d4 g | + g4 g g8( a) g4 | + fis2. s4 | +} >> +@end lilypond + + +@cindex voci, nome delle +@cindex voci che attraversano le parentesi +@cindex legature che attraversano le parentesi + +Questo esempio ha solo due voci, ma si potrebbe usare lo stesso +costrutto per scrivere tre o più voci aggiungendo più backslash. + +I contesti della voce hanno i nomi @code{"1"}, @code{"2"}, etc. +In ogni contesto, la direzione verticale di legature di portamento, +gambi, legature di valore, dinamica, etc., è impostata correttamente. + +@lilypond[quote,verbatim] +\new Staff \relative c' { + % Main voice + c16 d e f + % Voice "1" Voice "2" Voice "3" + << { g4 f e } \\ { r8 e4 d c8~ } >> | + << { d2 e } \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> | +} +@end lilypond + +Tutte queste voci sono separate dalla voce principale che contiene le +note e che si trova fuori dal costrutto @code{<< .. >>}, che chiameremo +il @emph{costrutto simultaneo}. Legature di portamento e di valore +possono connettere solo note che fanno parte della stessa voce, quindi +le legature non possono entrare in un costrutto simultaneo o uscirne. Viceversa, +voci parallele appartenenti a costrutti simultanei distinti sullo stesso +rigo sono la stessa voce. Anche altre caratteristiche della voce di riferimento +sono trasferite ai costrutti simultanei. Ecco lo stesso esempio, ma +con colori e teste delle note diversi per ogni voce. Si noti che i +cambiamenti in una voce non interessano le altre voci, ma persistono +sulla stessa voce in seguito. Si noti anche che le note legate possono +essere divise sulle stesse voci in due costrutti, come mostra qui la +voce con i triangoli blu. + +@lilypond[quote,verbatim] +\new Staff \relative c' { + % Main voice + c16 d e f + << % Bar 1 + { + \voiceOneStyle + g4 f e + } + \\ + { + \voiceTwoStyle + r8 e4 d c8~ + } + >> | + << % Bar 2 + % Voice 1 continues + { d2 e } + \\ + % Voice 2 continues + { c8 b16 a b8 g~ g2 } + \\ + { + \voiceThreeStyle + s4 b c2 + } + >> | +} +@end lilypond + +@funindex \voiceOneStyle +@funindex \voiceTwoStyle +@funindex \voiceThreeStyle +@funindex \voiceFourStyle +@funindex \voiceNeutralStyle + +I comandi @code{\voiceXXXStyle} sono pensati soprattutto +per documenti didattici come questo. Modificano il colore +della testa, del gambo e delle travature, e lo stile della +testa, così da rendere le voci facilmente distinguibili. +La voce uno è impostata su rombi rossi, la voce due su triangoli blu, +la voce tre su cerchi barrati verdi, e la voce quattro (non impiegata +nell'esempio) su croci magenta; @code{\voiceNeutralStyle} (anch'esso +non usato qui) riporta lo stile all'impostazione predefinita. +Vedremo in seguito come l'utente possa creare comandi simili. +Si veda @ref{Visibility and color of objects} e +@ref{Using variables for tweaks}. + +@cindex polifonia e modo relativo +@cindex modo relativo e polifonia + +La polifonia non cambia le relazioni tra le note all'interno di un +blocco @code{\relative}. L'altezza di ogni nota continua a essere calcolata +in rapporto a quella della nota che la precede, o della prima nota del +precedente accordo. Dunque, in + +@example +\relative c' @{ notaA << < notaB notaC > \\ notaD >> notaE @} +@end example + +@noindent +@code{notaB} è relativa a @code{notaA} @* +@code{notaC} è relativa a @code{notaB}, non a @code{notaA}; @* +@code{notaD} è relativa a @code{notaB}, non a @code{notaA} o a +@code{notaC}; @* +@code{notaE} è relativa a @code{notaD}, non a @code{notaA}. + +Un metodo alternativo, che potrebbe essere più chiaro se le note nelle +voci sono ampiamente separate, consiste nel porre un comando @code{\relative} +all'inizio di ogni voce: + +@example +\relative c' @{ noteA ... @} +<< + \relative c'' @{ < noteB noteC > ... @} +\\ + \relative g' @{ noteD ... @} +>> +\relative c' @{ noteE ... @} +@end example + +Analizziamo infine le voci in un brano più complesso. Queste note sono +tratte dalle prime due battute del secondo dei due Notturni op. 32 di +Chopin. Questo esempio verrà usato successivamente, in questo e nel +prossimo capitolo, per illustrare varie tecniche di notazione, quindi +per il momento ignora qualsiasi cosa del codice sottostante che ti sembra +incomprensibile e concentrati solo sulla musica e sulle voci -- le parti +più complesse saranno spiegate tutte in sezioni successive. + +@c The following should appear as music without code +@lilypond[quote,ragged-right] +\new Staff \relative c'' { + \key aes \major + << % Voice one + { c2 aes4. bes8 } + \\ % Voice two + { aes2 f4 fes } + \\ % No voice three + \\ % Voice four + { + % Ignore these for now - they are explained in Ch 4 + \once \override NoteColumn #'force-hshift = #0 + 2 + \once \override NoteColumn #'force-hshift = #0.5 + des2 + } + >> | + 1 | +} +@end lilypond + +La direzione dei gambi viene spesso usata per indicare la continuità +di due linee melodiche simultanee. In questo esempio i gambi delle note +più acute sono tutti rivolti in su mentre i gambi delle note più gravi +sono tutti rivolti in giù. Questo è il primo indizio del fatto che è +coinvolta più di una voce. + +Ma è quando note che iniziano nello stesso momento hanno durate diverse +che il ricorso a voci multiple diventa realmente indispensabile. Osserva +le note che iniziano alla terza pulsazione della prima battuta. Il La +bemolle è una nota di tre ottavi, il Fa è una semiminima e il Re bemolle +è una minima. Non possono essere scritte come un accordo perché tutte +le note di un accordo devono avere la stessa durata. Né possono essere +scritte come note in sequenza, dato che devono iniziare contemporaneamente. +Questa sezione della battuta necessita di tre voci, e la normale pratica +consiste nello scrivere l'intera battuta su tre voci, come mostrato sotto, +dove abbiamo usato diverse teste e colori per le tre voci. Ancora una volta, +il codice che sta dietro questo esempio verrà spiegato dopo, quindi +ignora quel che non capisci. + +@c The following should appear as music without code +@c The three voice styles should be defined in -init +@lilypond[quote,ragged-right] +\new Staff \relative c'' { + \key aes \major + << + { % Voice one + \voiceOneStyle + c2 aes4. bes8 + } + \\ % Voice two + { \voiceTwoStyle + aes2 f4 fes + } + \\ % No Voice three (we want stems down) + \\ % Voice four + { \voiceThreeStyle + % Ignore these for now - they are explained in Ch 4 + \once \override NoteColumn #'force-hshift = #0 + 2 + \once \override NoteColumn #'force-hshift = #0.5 + des2 + } + >> | + 1 | +} +@end lilypond + + +Proviamo a scrivere il codice di questa musica da zero. Come +vedremo, questo pone alcune difficoltà. Come abbiamo imparato, +iniziamo usando il costrutto @code{<< \\ >>} per inserire la musica +della prima battuta in tre voci: + +@lilypond[quote,verbatim,ragged-right] +\new Staff \relative c'' { + \key aes \major + << + { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { 2 des2 } + >> + 1 +} +@end lilypond + +@cindex gambo in giù +@cindex voci e direzione dei gambi +@cindex gambi e direzione delle voci +@cindex gambo in su + +La direzione dei gambi è assegnata automaticamente: le voci dispari avranno i +gambi in su e le voci pari i gambi in giù. I gambi per le voci 1 e 2 sono +giusti, ma in questo brano i gambi della voce 3 dovrebbero essere in +giù. Possiamo correggere semplicemente omettendo la voce tre e ponendo la +musica nella voce quattro. Si può fare aggiungendo semplicemente un altro +paio di @code {\\}: + +@lilypond[quote,verbatim,ragged-right] +\new Staff \relative c'' { + \key aes \major + << % Voice one + { c2 aes4. bes8 } + \\ % Voice two + { aes2 f4 fes } + \\ % Omit Voice three + \\ % Voice four + { 2 des2 } + >> | + 1 | +} +@end lilypond + +@noindent +Possiamo vedere che questo corregge la direzione del gambo, ma espone +a un problema talvolta presente con le voci multiple: i gambi delle note +in una voce possono collidere con le teste delle note di un'altra voce. Nel +disporre le note, LilyPond permette alle note o agli accordi di due diverse +voci di occupare la stessa colonna verticale della nota purché i gambi siano +in direzioni opposte, ma le note della terza e quarta voce vengono +spostate, se necessario, per evitare la collisione tra le teste. Questo +di solito funziona bene, ma in questo esempio le note della voce più bassa, +con le impostazioni predefinite, appaiono chiaramente disposte in una posizione +non ottimale. LilyPond fornisce molti modi per aggiustare la collocazione +orizzontale delle note. Per ora, non siamo ancora pronti a cercare di +correggere questo problema, dunque dovremo aspettare fino a una +prossima sezione -- si veda la proprietà @code{force-hshift} in @ref{Fixing +overlapping notation}. + + +@seealso +Guida alla notazione: @ruser{Multiple voices}. + + +@node Definire esplicitamente le voci +@subsection Definire esplicitamente le voci +@translationof Explicitly instantiating voices + +@funindex \voiceOne +@funindex voiceOne +@funindex \voiceTwo +@funindex voiceTwo +@funindex \voiceThree +@funindex voiceThree +@funindex \voiceFour +@funindex voiceFour +@funindex \oneVoice +@funindex oneVoice +@funindex \new Voice +@cindex contesti della voce, creazione dei + +I contesti della voce possono anche essere creati manualmente, +all'interno di un blocco @code{<< >>} che crea musica polifonica, usando +@code{\voiceOne} ... @code{\voiceFour} per indicare le direzioni desiderate +per gambi, legature, etc. Nelle partiture più grandi questo metodo +è più chiaro, perché fa sì che le voci possano essere separate e nominate +in modo più descrittivo. + +Nello specifico, il costrutto @code{<< \\ >>} usato nella sezione +precedente: + +@example +\new Staff @{ + \relative c' @{ + << @{ e4 f g a @} \\ @{ c,4 d e f @} >> + @} +@} +@end example + +@noindent +è equivalente a + +@example +\new Staff << + \new Voice = "1" @{ \voiceOne \relative c' @{ e4 f g a @} @} + \new Voice = "2" @{ \voiceTwo \relative c' @{ c4 d e f @} @} +>> +@end example + +Entrambi hanno come risultato + +@c The following example should not display the code +@lilypond[ragged-right,quote] +\new Staff << + \new Voice = "1" { \voiceOne \relative c' { e4 f g a } } + \new Voice = "2" { \voiceTwo \relative c' { c4 d e f } } +>> +@end lilypond + +@cindex voci, tornare alla voce singola +@cindex tornare alla voce singola + +I comandi @code{\voiceXXX} impostano le direzioni di gambi, legature di +portamento, legature di valore, articolazioni, annotazioni, punti di +aumentazione di note puntate e diteggiature. @code{\voiceOne} e @code{\voiceThree} +fanno sì che questi oggetti siano rivolti verso l'alto, mentre @code{\voiceTwo} e +@code{\voiceFour} fanno sì che puntino verso il basso. Questi comandi producono +anche uno spostamento orizzontale per ogni voce quando si crei la necessità +di evitare collisioni tra le teste. Il comando @code{\oneVoice} +riporta i valori alle normali impostazioni di una singola voce. + +Vediamo tramite alcuni semplici esempi quali effetti esattamente +@code{\oneVoice}, @code{\voiceOne} e @code{voiceTwo} hanno su +markup, legature di valore, legature di portamento, e dinamica: + +@lilypond[quote,ragged-right,verbatim] +\relative c'{ + % Default behavior or behavior after \oneVoice + c4 d8~ d e4( f | g4 a) b-> c | +} +@end lilypond + +@lilypond[quote,ragged-right,verbatim] +\relative c' { + \voiceOne + c4 d8~ d e4( f | g4 a) b-> c | + \oneVoice + c,4 d8~ d e4( f | g4 a) b-> c | +} +@end lilypond + +@lilypond[quote,ragged-right,verbatim] +\relative c' { + \voiceTwo + c4 d8~ d e4( f | g4 a) b-> c | + \oneVoice + c,4 d8~ d e4( f | g4 a) b-> c | +} +@end lilypond + +Vediamo adesso, usando l'esempio della sezione precedente, tre modi +diversi di scrivere uno stesso passo di musica polifonica, e i +rispettivi vantaggi, a seconda delle circostanze. + +Un'espressione che appare direttamente in un @code{<< >>} appartiene +alla voce principale (ma, attenzione: @strong{non} in un costrutto +@code{<< \\ >>}). Questo metodo è utile quando le altre voci entrano +mentre la voce principale sta già suonando. Ecco una versione più corretta +del nostro esempio. Le note a rombi rossi mostrano che la melodia +principale si trova ora nel contesto di una voce singola, e questo fa +sì che sia possibile disegnare una legatura di frase sopra di esse. + +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative c' { + \voiceOneStyle + % The following notes are monophonic + c16^( d e f + % Start simultaneous section of three voices + << + % Continue the main voice in parallel + { g4 f e | d2 e) | } + % Initiate second voice + \new Voice { + % Set stems, etc., down + \voiceTwo + r8 e4 d c8~ | c8 b16 a b8 g~ g2 | + } + % Initiate third voice + \new Voice { + % Set stems, etc, up + \voiceThree + s2. | s4 b c2 | + } + >> +} +@end lilypond + +@cindex annidare le espressioni musicali +@cindex annidare i costrutti simultanei +@cindex annidare le voci +@cindex voci temporanee +@cindex voci, annidare + +Sono possibili costrutti polifonici annidati più fittamente, e se una voce +appare solo brevemente questo potrebbe essere un modo più semplice +di scrivere lo spartito: + +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative c' { + c16^( d e f + << + { g4 f e | d2 e) | } + \new Voice { + \voiceTwo + r8 e4 d c8~ | + << + { c8 b16 a b8 g~ g2 | } + \new Voice { + \voiceThree + s4 b c2 | + } + >> + } + >> +} +@end lilypond + +@cindex note spaziatrici + +Questo metodo di annidare nuove voci in breve è utile quando solo piccole +parti della musica sono polifoniche, ma quando la polifonia è impiegata +largamente in tutta la parte può essere più chiaro ricorrere a voci multiple, +usando le note spaziatrici per saltare le parti in cui una delle voci è muta, +come nel seguente esempio: + +@lilypond[quote,ragged-right,verbatim] +\new Staff \relative c' << + % Initiate first voice + \new Voice { + \voiceOne + c16^( d e f g4 f e | d2 e) | + } + % Initiate second voice + \new Voice { + % Set stems, etc, down + \voiceTwo + s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 | + } + % Initiate third voice + \new Voice { + % Set stems, etc, up + \voiceThree + s1 | s4 b c2 | + } +>> +@end lilypond + +@subsubheading Note columns + +@cindex colonna delle note +@cindex collisioni di note +@cindex note, collisioni di +@cindex comandi di spostamento +@funindex \shiftOff +@funindex shiftOff +@funindex \shiftOn +@funindex shiftOn +@funindex \shiftOnn +@funindex shiftOnn +@funindex \shiftOnnn +@funindex shiftOnnn + +Le note maggiormente ravvicinate all'interno di un accordo o quelle che +compaiono nello stesso momento in voci diverse sono disposte in due, e +talvolta più, colonne, per impedire la sovrapposizione delle teste. Esse +vengono chiamate colonne delle note. Le singole colonne di ognuna delle +voci sono indipendenti, e lo scarto adottato nella voce in uso è determinato +dal distanziamento delle colonne nei casi in cui altrimenti si determinerebbe +una collisione. Si può vedere nell'esempio in basso. Nella seconda battuta +il Do della seconda voce è spostato a destra del Re nella prima voce, e +nell'ultimo accordo il Do nella terza voce è spostato anch'esso a destra +delle altre note. + +I comandi @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn}, e +@code{\shiftOff} specificano il grado con cui le note e gli accordi +della voce debbano essere spostati in caso di collisione. L'impostazione +predefinita prevede che le voci esterne (di norma le voci uno e due) +abbiano @code{\shiftOff} attivato, mentre le voci interne (terza e quarta) +abbiano @code{\shiftOn} attivato. Quando uno spostamento viene applicato, +le voci una e tre vengono spostate a destra e le voci due e quattro a sinistra. + +@code{\shiftOnn} e @code{\shiftOnnn} definiscono ulteriori livelli di +scarto che possono essere temporaneamente specificati per risolvere +le collisioni in situazioni complesse -- si veda @ref{Real music example}. + +Una colonna di note può contenere soltanto una nota (o accordo) di una +voce con gambi in su e una nota (o accordo) di una voce con gambi in +giù. Se note di due voci che hanno i gambi nella stessa direzione +sono poste nella stessa posizione ed entrambe le voci non hanno uno +spostamento specificato oppure ne hanno uno dello stesso tipo, si +produrrà il messaggio di errore @qq{Too many clashing note columns}. + + +@seealso +Guida alla notazione: @ruser{Multiple voices}. + + +@node Voci e musica vocale +@subsection Voci e musica vocale +@translationof Voices and vocals + +La musica vocale presenta una difficoltà in più: occorre combinare due +espressioni -- note e testo. + +@funindex \new Lyrics +@funindex \lyricsto +@funindex lyricsto +@funindex Lyrics +@cindex Lyrics, creazione di un contesto +@cindex testo, creazione di un contesto +@cindex testo, collegare a una voce + +Abbiamo già visto il comando @code{\addlyrics@{@}}, che ben si comporta +con le partiture semplici. Tuttavia, questa tecnica è piuttosto +limitata. Per musica più complessa, occorre introdurre il testo in +un contesto @code{Lyrics} usando @code{\new Lyrics} e collegando +esplicitamente il testo alle note con @code{\lyricsto@{@}}, tramite +il nome assegnato alla voce. + +@lilypond[quote,verbatim] +<< + \new Voice = "one" { + \relative c'' { + \autoBeamOff + \time 2/4 + c4 b8. a16 | g4. f8 | e4 d | c2 | + } + } + \new Lyrics \lyricsto "one" { + No more let | sins and | sor -- rows | grow. | + } +>> +@end lilypond + +Si noti che il testo deve essere collegato a un contesto @code{Voice}, +@emph{non} a un contesto @code{Staff}. Questo è un caso in cui è +necessario creare esplicitamente contesti @code{Staff} e @code{Voice}. + +@cindex testo e travatura +@cindex travatura e testo +@funindex \autoBeamOff +@funindex autoBeamOff + +La disposizione automatica delle travature predefinita di LilyPond funziona +bene per la musica strumentale, ma non altrettanto per la musica con testi, +dove le travature o non sono usate affatto o servono a indicare la presenza +di melismi nel testo. Nell'esempio precedente usiamo il comando +@code{\autoBeamOff} per disattivare la travatura automatica. + +@funindex \new ChoirStaff +@funindex ChoirStaff +@funindex \lyricmode +@funindex lyricmode +@cindex struttura di una partitura vocale +@cindex rigo per un coro + +Riprendiamo l'esempio precedente di Judas Maccabæus per presentare +questa tecnica più flessibile. Innanzitutto lo rimaneggiamo per +usare delle variabili per mezzo delle quali la musica e il testo +possano essere separate dalla struttura del rigo. Inseriamo anche +una parentesi ChoirStaff. Il testo deve essere introdotto da +@code{\lyricmode} per assicurare che siano interpretati come testo +invece che come musica. + +@lilypond[quote,verbatim] +global = { \key f \major \time 6/8 \partial 8 } + +SopOneMusic = \relative c'' { + c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4 +} +SopOneLyrics = \lyricmode { + Let | flee -- cy flocks the | hills a -- dorn, __ +} +SopTwoMusic = \relative c' { + r8 | r4. r4 c8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes' +} +SopTwoLyrics = \lyricmode { + Let | flee -- cy flocks the | hills a -- dorn, +} + +\score { + \new ChoirStaff << + \new Staff << + \new Voice = "SopOne" { + \global + \SopOneMusic + } + \new Lyrics \lyricsto "SopOne" { + \SopOneLyrics + } + >> + \new Staff << + \new Voice = "SopTwo" { + \global + \SopTwoMusic + } + \new Lyrics \lyricsto "SopTwo" { + \SopTwoLyrics + } + >> + >> +} +@end lilypond + +Questa è la struttura di base di tutte le partiture vocali. Si possono +aggiungere più righi, più voci in ogni rigo, più versi nei testi, e +le variabili contenenti la musica possono essere poste in file +separati se dovessero diventare troppo lunghe. + +@cindex struttura di un inno +@cindex SATB, struttura di +@cindex vocale, partitura, varie strofe +@cindex varie strofe vocali +@cindex strofe, vocali, varie + +Ecco un esempio della prima linea di un inno con quattro +strofe, impostate su SATB. In questo caso le parole per tutte e quattro +le parti sono le stesse. Si noti l'uso delle variabili per separare +la notazione musicale e le parole dalla struttura del rigo. Si veda anche +come una variabile, che abbiamo deciso di chiamare @q{keyTime}, venga usata +per avere vari comandi a disposizione all'interno dei due righi. In altri +esempi questo viene spesso chiamato @q{global}. + +@lilypond[quote,verbatim] +keyTime = { \key c \major \time 4/4 \partial 4 } + +SopMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g } +AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e } +TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 } +BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 } + +VerseOne = + \lyricmode { E -- | ter -- nal fa -- ther, | strong to save, } +VerseTwo = + \lyricmode { O | Christ, whose voice the | wa -- ters heard, } +VerseThree = + \lyricmode { O | Ho -- ly Spi -- rit, | who didst brood } +VerseFour = + \lyricmode { O | Tri -- ni -- ty of | love and pow'r } + +\score { + \new ChoirStaff << + \new Staff << + \clef "treble" + \new Voice = "Sop" { \voiceOne \keyTime \SopMusic } + \new Voice = "Alto" { \voiceTwo \AltoMusic } + \new Lyrics \lyricsto "Sop" { \VerseOne } + \new Lyrics \lyricsto "Sop" { \VerseTwo } + \new Lyrics \lyricsto "Sop" { \VerseThree } + \new Lyrics \lyricsto "Sop" { \VerseFour } + >> + \new Staff << + \clef "bass" + \new Voice = "Tenor" { \voiceOne \keyTime \TenorMusic } + \new Voice = "Bass" { \voiceTwo \BassMusic } + >> + >> +} +@end lilypond + +@seealso +Guida alla notazione: @ruser{Vocal music}. + + +@node Contesti e incisori +@section Contesti e incisori +@translationof Contexts and engravers + +I contesti e gli incisori sono stati menzionati in modo informale +nelle sezioni precedenti; ora dobbiamo approfondire +questi concetti, perché sono importanti nell'ottimizzazione +dell'output di LilyPond. + + +@menu +* I contesti:: +* Creare i contesti:: +* Gli incisori:: +* Modificare le proprietà di contesto:: +* Aggiungere e togliere gli incisori:: +@end menu + +@node I contesti +@subsection I contesti +@translationof Contexts explained + +@cindex contesti, spiegazione dei + +Quando la musica viene elaborata, molti elementi notazionali che non +compaiono esplicitamente nel file di input devono essere aggiunti +nell'output. Ad esempio, si confrontino l'input e l'output del +seguente esempio: + +@lilypond[quote,verbatim,relative=2] +cis4 cis2. | a4 a2. | +@end lilypond + +L'input è alquanto essenziale, ma nell'output sono stati aggiunti stanghette, +alterazioni, l'armatura di chiave e il tempo. Quando LilyPond @emph{interpreta} +l'input l'informazione musicale viene analizzata da sinistra a destra, proprio +come un musicista legge uno spartito. Mentre legge l'input, il programma +ricorda dove si trovano i confini della misura, e quali altezze richiedono +espliciti accidenti. Questa informazione deve essere conservata a diversi +livelli. Ad esempio, un accidente influisce solo su un singolo rigo, mentre +una stanghetta deve essere sincronizzata lungo l'intera partitura. + +All'interno di LilyPond, queste regole e pezzi di informazione sono raggruppati +nei @emph{Contesti}. Abbiamo già presentato il contesto @code{Voice}. +Altri contesti sono @code{Staff} e @code{Score}. I contesti sono strutturati +gerarchicicamente per riflettere la natura gerarchica di una partitura musicale. +Ad esempio: un contesto @code{Staff} può contenere molti contesti @code{Voice}, +e un contesto @code{Score} può contenere molti contesti @code{Staff}. + +@quotation +@sourceimage{context-example,5cm,,} +@end quotation + +Ogni contesto è responsabile di far rispettare alcune regole di notazione, +creare alcuni oggetti della notazione e conservare le proprietà +associate. Ad esempio, il contesto @code{Voice} può introdurre +un'alterazione e poi il contesto @code{Staff} mantiene la regola per +mostrare o sopprimere l'alterazione per il resto della misura. + +Un altro esempio: la sincronizzazione delle stanghette è gestita, per +impostazione predefinita, nel contesto @code{Score}. Tuttavia, in +alcune forme musicali potremmo non volere che le stanghette siano +sincronizzate -- si consideri una partitura polimetrica in 4/4 e 3/4. In +questi casi, dobbiamo modificare le impostazioni predefinite dei +contesti @code{Score} e @code{Staff}. + +Per spartiti molto semplici, i contesti vengono creati implicitamente, e +non è necessario occuparsene. Ma per brani più ampi, come qualsiasi +cosa abbia più di un rigo, devono essere creati esplicitamente per +essere sicuri di avere tutti i righi necessari, e che questi siano +nel giusto ordine. Per scrivere brani che utilizzano una +notazione speciale, di solito si modificano i contesti esistenti, o +addirittura se ne creano di completamente nuovi. + +Oltre ai contesti @code{Score,} @code{Staff} e @code{Voice} ci sono +contesti che stanno tra i livelli della partitura (score) e del +rigo (staff) per controllare i gruppi di pentagrammi, come +i contesti @code{PianoStaff} e @code{ChoirStaff}. Ci sono anche +contesti alternativi per il rigo e la voce, e contesti per il +testo, le percussioni, la tastiera, il basso continuo, etc. + +I nomi di tutti i tipi di contesto sono formati da una o più +parole, e ogni parola viene unita immediatamente alla parola +precedente senza trattini o underscore bensì con la prima lettera +maiuscola: ad esempio, @code{GregorianTranscriptionStaff}. + + +@seealso +Guida alla notazione: @ruser{Contexts explained}. + + +@node Creare i contesti +@subsection Creare i contesti +@translationof Creating contexts + +@funindex \new +@funindex new +@cindex nuovi contesti +@cindex creazione di contesti +@cindex contesti, creazione di + +In un file di input un blocco della partitura, introdotto dal comando @code{\score}, +contiene un'espressione musicale singola e una definizione di output +associata (o un blocco @code{\layout} o un blocco @code{\midi}). +Di solito si lascia che il contesto @code{Score} sia creato automaticamente +quando inizia l'interpretazione di quell'espressione musicale. + +Per le partiture che hanno una sola voce e un solo rigo, si può lasciare che +i contesti @code{Voice} e @code{Staff} siano creati automaticamente, ma per +le partiture più complesse è necessario crearli manualmente. Il comando +più semplice per farlo è @code{\new}. Viene posto prima di +un'espressione musicale, ad esempio + +@example +\new @var{tipo} @var{espressione-musicale} +@end example + +@noindent +dove @var{tipo} è il nome di un contesto (come @code{Staff} o +@code{Voice}). Questo comando crea un nuovo contesto, e inizia a +interpretare @var{espressione-musicale} all'interno di quel contesto. + +(Si noti che normalmente non è necessario il comando @code{\new Score}, +perché il fondamentale contesto di livello superiore @code{Score} viene creato +automaticamente quando l'espressione musicale all'interno del blocco @code{\score} +viene interpretata. L'unica ragione per creare un contesto @code{Score} +esplicitamente con @code{\new Score} è di inserire un blocco +@code{\with} dove si possono specificare uno o più valori delle proprietà +di contesto, predefiniti per tutto lo spartito.. Le informazioni su come +usare i blocchi @code{\with} si trovano sotto il titolo +@qq{Setting context properties with @code{\\with} } in +@ref{Modifying context properties}.) + +@warning{@bs{}@code{new Score} non dovrebbe essere usato perché il fondamentale +contesto di livello superiore @code{Score} viene creato automaticamente quando +l'espressione musicale all'interno del blocco @bs{}@code{score} viene +interpretata. I valori predefiniti delle proprietà di contesto validi per tutta +la partitura possono essere modificati nel blocco @bs{}@code{layout}. Vedi +@ref{Modifying context properties}} + +Nelle sezioni precedenti hai già visto molti esempi pratici della creazione +di nuovi contesti @code{Staff} e @code{Voice}, ma per ricordarti +come questi comandi vengano usati in pratica, ecco un esempio +di musica vera e propria: + +@lilypond[quote,verbatim,ragged-right] +\score { % start of single compound music expression + << % start of simultaneous staves section + \time 2/4 + \new Staff { % create RH staff + \clef "treble" + \key g \minor + \new Voice { % create voice for RH notes + \relative c'' { % start of RH notes + d4 ees16 c8. | + d4 ees16 c8. | + } % end of RH notes + } % end of RH voice + } % end of RH staff + \new Staff << % create LH staff; needs two simultaneous voices + \clef "bass" + \key g \minor + \new Voice { % create LH voice one + \voiceOne + \relative g { % start of LH voice one notes + g8 ees, | + g8 ees, | + } % end of LH voice one notes + } % end of LH voice one + \new Voice { % create LH voice two + \voiceTwo + \relative g { % start of LH voice two notes + g4 ees | + g4 ees | + } % end of LH voice two notes + } % end of LH voice two + >> % end of LH staff + >> % end of simultaneous staves section +} % end of single compound music expression +@end lilypond + +(Si noti che tutte le asserzioni che aprono un blocco o con delle +parentesi graffe, @code{@{}, o con delle parentesi angolari doppie, @code{<<}, +sono indentate di due spazi, e la parentesi di chiusura corrispondente +è indentata esattamente dello stesso spazio. Pur non essendo un +requisito indispensabile, seguire questa pratica ridurrà enormemente +il numero di errori da @q{parentesi spaiate}, ed è quindi fortemente +consigliato. Permette di vedere a colpo d'occhio la struttura della +musica, e qualsiasi parentesi spaiata sarà facilmente riconoscibile. +Si noti anche come il rigo LH faccia uso di parentesi angolari doppie +perché richiede due voci, mentre il rigo RH è costituito da +una singola espressione musicale compresa tra parentesi +graffe perché richiede una sola voce.) + +@cindex contesti, dare un nome +@cindex dare un nome ai contesti + +Il comando @code{\new} può anche dare un nome identificativo al +contesto per distinguerlo da altri contesti dello stesso tipo, + +@example +\new @var{tipo} = @var{id} @var{espressione-musicale} +@end example + +Si noti la distinzione tra il nome del tipo di contesto, +@code{Staff}, @code{Voice}, etc, e il nome identificativo di un +particolare esempio di quel tipo, che può essere qualsiasi sequenza di +lettere inventata dall'utente. Nel nome identificativo si possono usare +anche numeri e spazi, ma in questo caso deve essere compreso tra virgolette, +ovvero @code{\new Staff = "MioPentagramma 1" @var{espressione-musicale}}. +Il nome identificativo viene utilizzato per riportare a quel +particolare esempio di un contesto. Abbiamo visto questo utilizzo +nella sezione sul testo, si veda @ref{Voci e musica vocale}. + + +@seealso +Guida alla notazione: @ruser{Creating contexts}. + + +@node Gli incisori +@subsection Gli incisori +@translationof Engravers explained + +@cindex incisori + +Ogni segno presente nell'output di una partitura realizzata con LilyPond +è prodotto da un @code{Engraver} (incisore). Dunque c'è un incisore per +creare i righi, uno per le teste delle note, uno per i gambi, uno per le +travature, etc, etc. In totale ci sono più di 120 incisori! +Fortunatamente, per gran parte delle partiture è necessario conoscerne +pochi soltanto, e per partiture semplici non occorre conoscerne +alcuno. + +Gli incisori vivono ed operano all'interno dei Contesti. Incisori come +il @code{Metronome_mark_engraver}, la cui azione e il cui output si applicano +alla partitura nel suo complesso, operano nel contesto di livello più superiore -- il +contesto @code{Score}. + +Gli incisori @code{Clef_engraver} e @code{Key_engraver} devono invece +trovarsi in ogni contesto @code{Staff}, poiché righi diversi potrebbero +richiedere diverse chiavi e tonalità. + +Gli incisori @code{Note_heads_engraver} e @code{Stem_engraver} abitano +ogni contesto @code{Voice}, il contesto che si trova al livello più +basso di tutti. + +Ogni incisore elabora gli oggetti specifici associati alla sua funzione, e +gestisce le proprietà che a quella funzione si riferiscono. Queste proprietà, +come le proprietà associate ai contesti, possono essere modificate per +cambiare il funzionamento dell'incisore o l'aspetto di quegli elementi +nella partitura. + +Gli incisori hanno tutti dei nomi composti formati da parole che +descrivono la loro funzione. Solo la prima parola inizia con una maiuscola, +e il resto è collegato insieme con dei trattini bassi. Quindi +l'incisore @code{Staff_symbol_engraver} ha il compito di creare le linee del +pentagramma, il @code{Clef_engraver} determina e definisce il punto +di riferimento dell'altezza sul rigo disegnando il simbolo di una chiave. + +Ecco alcuni degli incisori più utilizzati insieme alla loro +funzione. Vedrai che di solito è facile indovinare la funzione a +partire dal nome, o viceversa. + +@multitable @columnfractions .3 .7 +@headitem Incisore + @tab Funzione +@item Accidental_engraver + @tab Crea le alterazioni, le alterazioni di precauzione e di cortesia +@item Beam_engraver + @tab Incide le travature +@item Clef_engraver + @tab Incide le chiavi +@item Completion_heads_engraver + @tab Separa le note che attraversano le stanghette +@c The old Dynamic_engraver is deprecated. -jm +@item New_dynamic_engraver + @tab Crea le forcelle e i testi relativi alla dinamica +@item Forbid_line_break_engraver + @tab Impedisce l'a capo se un elemento musicale è ancora attivo +@item Key_engraver + @tab Crea l'armatura di chiave +@item Metronome_mark_engraver + @tab Incide il tempo metronomico +@item Note_heads_engraver + @tab Incide le teste delle note +@item Rest_engraver + @tab Incide le pause +@item Staff_symbol_engraver + @tab Incide le cinque linee (predefinite) del pentagramma +@item Stem_engraver + @tab Crea i gambi e i tremoli su singoli gambi +@item Time_signature_engraver + @tab Crea l'indicazione di tempo +@end multitable + +@smallspace + +Vedremo in seguito come cambiare l'output di Lilypond +modificando il comportamento degli incisori. + + +@seealso +Guida al funzionamento interno: @rinternals{Engravers and Performers}. + + +@node Modificare le proprietà di contesto +@subsection Modificare le proprietà di contesto +@translationof Modifying context properties + +@cindex contesto, proprietà del +@cindex contesto, proprietà del, modificare +@cindex modificare le proprietà del contesto +@funindex \set +@funindex set +@funindex \unset +@funindex unset + +I contesti si occupano di tenere i valori di un certo numero di +@emph{proprietà} del contesto. Molte di queste possono essere cambiate +per influenzare l'interpretazione dell'input e quindi modificare +l'aspetto dell'output. Per cambiarle si usa il comando +@code{\set}. Questo assume la seguente forma + +@example +\set @emph{NomeDelContesto}.@emph{nomeDellaProprietà} = #@emph{valore} +@end example + +Dove il @emph{NomeDelContesto} è di solito @code{Score}, +@code{Staff} o @code{Voice}. Può essere omesso, e in questo +caso viene considerato il contesto attuale (solitamente @code{Voice}). + +I nomi delle proprietà del contesto consistono in parole unite +insieme e senza lineette o trattini bassi, e solo la prima +parola inizia con una lettera maiuscola. Ecco alcuni esempi +di quelle più usate comunemente. Ma ne esistono molte altre. + +@c attempt to force this onto a new page +@need 50 +@multitable @columnfractions .25 .15 .45 .15 +@headitem nomeDellaProprietà + @tab Tipo + @tab Funzione + @tab Valore di esempio +@item extraNatural + @tab Booleano + @tab Se è vero, mette i segni di bequadro prima degli accidenti + @tab @code{#t}, @code{#f} +@item currentBarNumber + @tab Intero + @tab Imposta il numero della battuta corrente + @tab @code{50} +@item doubleSlurs + @tab Booleano + @tab Se è vero, stampa le legature di portamento sia sopra che sotto le note + @tab @code{#t}, @code{#f} +@item instrumentName + @tab Testo + @tab Imposta il nome da inserire all'inizio del rigo + @tab @code{"Cello I"} +@item fontSize + @tab Reale + @tab Aumenta o riduce la dimensione del carattere + @tab @code{2.4} +@item stanza + @tab Testo + @tab Imposta il testo da stampare prima dell'inizio di una strofa + @tab @code{"2"} +@end multitable + +@noindent +mentre un Booleano è o Vero (@code{#t}) o Falso (@code{#f}), +un Intero è un numero intero positivo, un Reale è un numero +decimale positivo o negativo, e il testo è racchiuso tra +virgolette. Si noti la presenza del segno cancelletto, +(@code{#}), in due punti diversi -- come parte del valore Booleano +prima di @code{t} o @code{f}, e prima del @emph{valore} +nell'affermazione @code{\set}. Dunque quando si inserisce un valore +Booleano bisogna scrivere due cancelletti, ad esempio @code{##t}. + +@cindex proprietà che operano nei contesti +@cindex impostare le proprietà all'interno dei contesti + +Prima di poter impostare una qualsiasi di queste proprietà dobbiamo sapere +in quale contesto esse operino. Talvolta questo è ovvio, +ma talvolta può risultare complicato. Se viene specificato il +contesto sbagliato, non viene generato alcun messaggio di errore, ma l'azione +desiderata non avrà luogo. Ad esempio, la proprietà +@code{instrumentName} risiede ovviamente nel contesto @code{Staff}, poiché +è il pentagramma a dover essere nominato. +Nell'esempio seguente viene etichettato il primo pentagramma, ma non il secondo, +perché abbiamo omesso il nome del contesto. + +@lilypond[quote,verbatim,ragged-right] +<< + \new Staff \relative c'' { + \set Staff.instrumentName = #"Soprano" + c2 c + } + \new Staff \relative c' { + \set instrumentName = #"Alto" % Wrong! + d2 d + } +>> +@end lilypond + +Ricorda che il nome di contesto predefinito è @code{Voice}, dunque il +secondo comando @code{\set} imposta la proprietà @code{instrumentName} nel +contesto @code{Voice} col valore @qq{Alto}, ma dato che LilyPond non trova +tale proprietà nel contesto @code{Voice}, non ha avuto luogo +alcuna altra azione. Questo non è un errore, e nessun messaggio di +errore viene riportato nel file di log. + +Analogamente, se il nome della proprietà è stato scritto male, non viene +generato alcun messaggio di errore, e ovviamente l'azione desiderata non può essere +eseguita. Infatti, col comando @code{\set} puoi impostare qualsiasi @q{proprietà} +(anche inventata) usando qualsiasi nome che ti piaccia in qualsiasi contesto +esistente. Ma se LilyPond non conosce il nome, allora non verrà intrapresa +alcuna azione. Alcuni editor di testo che hanno uno speciale supporto per i file +di input di LilyPond presentano i nomi delle proprietà con una lista scorrevole +al passaggio del mouse, come JEdit col plugin LilyPondTool, oppure +evidenziano in modo diverso i nomi delle proprietà non conosciuti, come fa ConTEXT. +Se non usi un editor con queste funzionalità, è consigliabile controllare il nome +delle proprietà nella Guida al funzionamento interno: si veda +@rinternals{Tunable context properties}, o @rinternals{Contexts}. + +La proprietà @code{instrumentName} funzionerà soltanto se inserita nel contesto +@code{Staff}, ma alcune proprietà possono essere collocate in più di un contesto. +Ad esempio, la proprietà @code{extraNatural} è impostata di default sul +valore ##t (vero) su tutti i righi. Se viene impostata su ##f (falso) in uno +specifico contesto @code{Staff} si applica solo alle alterazioni presenti su +quel rigo. Se impostata su falso nel contesto @code{Score} si applica a tutti +i righi. + +Quindi in questo modo si disattiva il bequadro su un rigo: + +@lilypond[quote,verbatim,ragged-right] +<< + \new Staff \relative c'' { + ais2 aes + } + \new Staff \relative c'' { + \set Staff.extraNatural = ##f + ais2 aes + } +>> +@end lilypond + +@noindent +e in questo modo si disattiva in tutti i righi: + +@lilypond[quote,verbatim,ragged-right] +<< + \new Staff \relative c'' { + ais2 aes + } + \new Staff \relative c'' { + \set Score.extraNatural = ##f + ais2 aes + } +>> +@end lilypond + +Un altro esempio: se la proprietà @code{clefOctavation} viene posta +nel contesto @code{Score}, cambia immediatamente il valore +dell'ottavazione in tutti i righi presenti e imposta un nuovo +valore predefinito che sarà applicato a tutti i righi. + +Il comando opposto, @code{\unset}, di fatto rimuove la proprietà +dal contesto, e questo fa sì che molte proprietà +tornino al valore predefinito. Solitamente @code{\unset} non è +necessario dal momento che un nuovo comando @code{\set} permetterà +di ottenere quanto si desidera. + +I comandi @code{\set} e @code{\unset} possono trovarsi in qualsiasi +punto del file di input e avranno effetto dal momento in cui si +incontrano fino alla fine della partitura o finché la proprietà non +viene attivata (@code{\set}) o disattivata (@code{\unset}) di nuovo. +Proviamo a cambiare varie volte la dimensione del font, che influisce (tra +le altre cose) sulla dimensione delle teste delle note. La modifica è relativa +al valore predefinito, non all'ultimo valore impostato. + +@lilypond[quote,verbatim,ragged-right,relative=1] +c4 d +% make note heads smaller +\set fontSize = #-4 +e4 f | +% make note heads larger +\set fontSize = #2.5 +g4 a +% return to default size +\unset fontSize +b4 c | +@end lilypond + +Abbiamo visto come impostare i valori di diversi tipi di +proprietà. Si note che gli interi e i numeri sono sempre preceduti +da un segno di cancelletto, @code{#}, mentre un valore vero o falso è +specificato con @code{##t} e @code{##f}, con due cancelletti. Una proprietà testuale +dovrebbe essere racchiusa tra virgolette, come abbiamo visto prima, sebbene +vedremo in seguito che in realtà il testo può essere specificato in un +modo molto più generale usando il potente comando @code{\markup}. + +@subsubheading Impostare le proprietà di contesto con @code{\with} + +@funindex \with +@funindex with +@cindex contesto, proprietà del, impostare con \with + +Il valore predefinito delle proprietà di contesto possono essere impostate +anche nel momento in cui il contesto viene creato. Talvolta questo è un +modo più chiaro per specificare il valore della proprietà se questa deve +rimanere fissa per la durata del contesto. Un contesto creato col comando @code{\new} +può essere immediatamente seguito da un blocco @code{\with @{ .. @}} dove +vengono impostati i valori predefiniti della proprietà. Ad esempio, se vogliamo +eliminare la stampa del bequadro per l'estensione di un rigo possiamo scrivere: + +@example +\new Staff \with @{ extraNatural = ##f @} +@end example + +@noindent +così: + +@lilypond[quote,verbatim,ragged-right] +<< + \new Staff { + \relative c'' { + gis4 ges aes ais + } + } + \new Staff \with { extraNatural = ##f } { + \relative c'' { + gis4 ges aes ais + } + } +>> +@end lilypond + +Si possono ancora cambiare dinamicamente le proprietà impostate in questo modo +usando @code{\set}, mentre con @code{\unset} si possono riportare al valore +predefinito impostato nel blocco @code{\with}. + +@cindex fontSize, impostazione predefinita e impostazione manuale + +Quindi se la proprietà @code{fontSize} viene inserita in una +proposizione @code{\with}, imposta il valore predefinito +della dimensione del font. Se viene in seguito modificato con @code{\set}, +questo nuovo valore predefinito può essere recuperato col comando +@code{\unset fontSize}. + +@subsubheading Impostare le proprietà di contesto con @code{\context} + +@cindex contesto, proprietà del, impostare con \context +@funindex \context +@funindex context + +I valori delle proprietà di un contesto possono essere impostate in @emph{tutti} +i contesti di un particolare tipo, così come in tutti i contesti @code{Staff}, con un +solo comando. Il tipo di contesto viene identificato attraverso il +suo nome, come @code{Staff}, preceduto da una barra inversa (backslash): @code{\Staff}. +La dichiarazione che imposta il valore della proprietà è la stessa che +abbiamo visto nel blocco @code{\with}, introdotto prima. Viene posta in +un blocco @code{\context} all'interno di un blocco @code{\layout}. Ogni +blocco @code{\context} avrà effetto su tutti i contesti del tipo specificato +nel blocco @code{\score} o @code{\book} nel quale il blocco +@code{\layout} si trova. Ecco un esempio per mostrare la struttura: + +@lilypond[verbatim,quote] +\score { + \new Staff { + \relative c'' { + cis4 e d ces + } + } + \layout { + \context { + \Staff + extraNatural = ##t + } + } +} +@end lilypond + +@noindent +Le proprietà di contesto impostate in questo modo possono essere sovrascritte per +alcuni particolari contesti attraverso asserzioni in un blocco @code{\with}, e tramite +comandi @code{\set} incorporati nelle asserzioni musicali. + + +@seealso +Guida alla notazione: +@ruser{Changing context default settings}, +@ruser{The set command}. + +Guida al funzionamento interno: +@rinternals{Contexts}, +@rinternals{Tunable context properties}. + + +@node Aggiungere e togliere gli incisori +@subsection Aggiungere e togliere gli incisori +@translationof Adding and removing engravers + +@cindex incisori, aggiungere +@cindex aggiungere gli incisori +@cindex incisori, rimuovere +@cindex rimuovere gli incisori + +@funindex \consists +@funindex consists +@funindex \remove +@funindex remove + +Abbiamo visto che ciascuno dei contesti contiene vari incisori, ognuno +dei quali ha il compito di produrre una parte specifica dell'output, +come stanghette, righi, teste, gambi, etc.. Se un incisore +viene rimosso da un contesto, non può più produrre il suo +output. Si tratta di un metodo sbrigativo per modificare l'output, e talvolta +può essere utile. + +@subsubheading Cambiare un singolo contesto + +Per rimuovere un incisore da un singolo contesto usiamo il +comando @code{\with} posto subito dopo il comando di creazione del +contesto, come esposto nella sezione precedente. + +A titolo di esempio, ripetiamo un esempio della sezione precedente +rimuovendo le linee del rigo. Ricorda che le linee del rigo vengono +create dall'incisore @code{Staff_symbol_engraver}. + +@lilypond[quote,verbatim,ragged-right] +\new Staff \with { + \remove Staff_symbol_engraver +} +\relative c' { + c4 d + \set fontSize = #-4 % make note heads smaller + e4 f | + \set fontSize = #2.5 % make note heads larger + g4 a + \unset fontSize % return to default size + b4 c | +} +@end lilypond + +@cindex ambitus, incisore dell' + +Gli incisori possono essere aggiunti anche a contesti individuali. +Il comando per farlo è + +@code{\consists @var{Engraver_name}}, + +@noindent +posto all'interno di un blocco @code{\with}. Alcune partiture vocali hanno +un ambitus collocato all'inizio del pentagramma per indicare l'intervallo tra la nota +più grave e quella più acuta in quella parte -- si veda @rglos{ambitus}. L'ambitus +viene creato dall'incisore @code{Ambitus_engraver}, che di norma non è incluso in +alcun contesto. Se lo aggiungiamo al contesto @code{Voice}, calcola l'intervallo +di quella voce soltanto: + +@lilypond[quote,verbatim,ragged-right] +\new Staff << + \new Voice \with { + \consists Ambitus_engraver + } { + \relative c'' { + \voiceOne + c4 a b g + } + } + \new Voice { + \relative c' { + \voiceTwo + c4 e d f + } + } +>> +@end lilypond + +@noindent +ma se aggiungiamo l'incisore ambitus al contesto @code{Staff}, calcola +l'intervallo di tutte le note in tutte le voci di quel pentagramma: + +@lilypond[quote,verbatim,ragged-right] +\new Staff \with { + \consists Ambitus_engraver +} +<< + \new Voice { + \relative c'' { + \voiceOne + c4 a b g + } + } + \new Voice { + \relative c' { + \voiceTwo + c4 e d f + } + } +>> +@end lilypond + +@subsubheading Modificare tutti i contesti dello stesso tipo + +@funindex \layout +@funindex layout + +Gli esempi precedenti mostrano come rimuovere o aggiungere degli incisori +a contesti individuali. È anche possibile rimuovere o aggiungere gli +incisori per ogni contesto di un particolare tipo inserendo i comandi +nel contesto appropriato in un blocco @code{\layout}. Ad esempio, se +volessimo mostrare un ambitus per ogni pentagramma in una partitura +di quattro pentagrammi, potremmo scrivere + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new Staff { + \relative c'' { + c4 a b g + } + } + \new Staff { + \relative c' { + c4 a b g + } + } + \new Staff { + \clef "G_8" + \relative c' { + c4 a b g + } + } + \new Staff { + \clef "bass" + \relative c { + c4 a b g + } + } + >> + \layout { + \context { + \Staff + \consists Ambitus_engraver + } + } +} +@end lilypond + +@noindent +I valori delle proprietà di un contesto possono essere impostati anche +per tutti i contesti di un particolare tipo includendo il comando +@code{\set} in un blocco @code{\context} nello stesso modo. + +@seealso +Guida alla notazione: @ruser{Modifying context plug-ins}, +@ruser{Changing context default settings}. + +@knownissues +Gli incisori @code{Stem_engraver} e @code{Beam_engraver} fissano i propri +oggetti alle teste delle note. Se si elimina @code{Note_heads_engraver} +le teste delle note non vengono prodotte e di conseguenza non vengono creati +nemmeno i gambi né le travature. + + +@node Estendere i modelli +@section Estendere i modelli +@translationof Extending the templates + +Hai letto il tutorial, sai come scrivere la musica, comprendi +i concetti fondamentali. Ma come puoi ottenere i +pentagrammi che desideri? Puoi trovare molti +modelli (vedi @ref{Templates}) da cui partire. +Ma se ti serve qualcosa che non è presente lì? Continua a leggere. + +@menu +* Soprano e violoncello:: +* Partitura vocale a quattro parti SATB:: +* Scrivere una partitura da zero:: +* Ridurre l'input grazie a variabili e funzioni:: +* Partiture e parti:: +@end menu + +@node Soprano e violoncello +@subsection Soprano e violoncello +@translationof Soprano and cello + +@cindex modello, modificare +@cindex modificare i modelli + +Parti dal modello che sembra più simile a ciò che vuoi +ottenere. Diciamo che vuoi scrivere qualcosa per soprano e +violoncello. In questo caso, inizieremmo col modello @q{Note e testo} (per +la parte di soprano). + +@example +\version @w{"@version{}"} + +melodia = \relative c' @{ + \clef "treble" + \key c \major + \time 4/4 + a4 b c d +@} + +testo = \lyricmode @{ + Aaa Bee Cee Dee +@} + +\score @{ + << + \new Voice = "one" @{ + \autoBeamOff + \melodia + @} + \new Lyrics \lyricsto "one" \testo + >> + \layout @{ @} + \midi @{ @} +@} +@end example + +Ora vogliamo aggiungere una parte per violoncello. Vediamo l'esempio @q{Solo note}: + +@example +\version @w{"@version{}"} + +melodia = \relative c' @{ + \clef "treble" + \key c \major + \time 4/4 + a4 b c d +@} + +\score @{ + \new Staff \melodia + \layout @{ @} + \midi @{ @} +@} +@end example + +Non ci servono due comandi @code{\version}. Ci servirà invece la +sezione @code{melodia}. Non vogliamo due sezioni @code{\score} +-- se avessimo due @code{\score}, le due parti sarebbero separate. +Ma le vogliamo insieme, come un duetto. All'interno della sezione +@code{\score}, non ci servono due @code{\layout} o due @code{\midi}. + +Se semplicemente tagliamo e incolliamo la sezione @code{melodia}, finiremo +con l'avere due definizioni @code{melodia}. Questo non produrrebbe un +errore, ma la seconda definizione sarebbe usata per entrambe le melodie. +Dunque rinominiamole per distinguerle. Chiameremo la sezione +per il soprano @code{musicaSoprano} e la sezione per il +violoncello @code{musicaVioloncello}. Se facciamo questo, rinominiamo anche +@code{testo} in @code{testoSoprano}. Ricorda di rinominare entrambe +le occorrenze di tutti questi nomi -- sia la definizione iniziale (la +parte @code{melody = \relative c' @{ }) sia l'uso del nome (nella +sezione @code{\score}). + +Cambiamo anche il pentagramma della parte per violoncello -- +che normalmente usa la chiave di basso. Daremo anche al violoncello +delle note diverse. + +@example +\version @w{"@version{}"} + +musicaSoprano = \relative c' @{ + \clef "treble" + \key c \major + \time 4/4 + a4 b c d +@} + +testoSoprano = \lyricmode @{ + Aaa Bee Cee Dee +@} + +musicaVioloncello = \relative c @{ + \clef "bass" + \key c \major + \time 4/4 + d4 g fis8 e d4 +@} + +\score @{ + << + \new Voice = "one" @{ + \autoBeamOff + \musicaSoprano + @} + \new Lyrics \lyricsto "one" \testoSoprano + >> + \layout @{ @} + \midi @{ @} +@} +@end example + +L'aspetto è promettente, ma la parte del violoncello non apparirà nella +partitura -- perché non l'abbiamo inserita nella sezione @code{\score}. Se +vogliamo che la parte del violoncello compaia sotto quella del soprano, +dobbiamo aggiungere + +@example +\new Staff \musicaVioloncello +@end example + +@noindent +sotto la parte del soprano. Dobbiamo anche aggiungere @code{<<} e +@code{>>} intorno alla musica -- che dice a LilyPond che c'è più di +una cosa (in questo caso, due @code{Staff}) che sono +simultanei. Lo @code{\score} ora appare così: + +@c Indentation in this example is deliberately poor +@example +\score @{ + << + << + \new Voice = "one" @{ + \autoBeamOff + \musicaSoprano + @} + \new Lyrics \lyricsto "one" \testoSoprano + >> + \new Staff \musicaVioloncello + >> + \layout @{ @} + \midi @{ @} +@} +@end example + +@noindent +L'aspetto è un po' confuso; l'indentazione non è pulita. Ma si +può correggere facilmente. Ecco il template completo per soprano +e violoncello. + +@lilypond[quote,verbatim,ragged-right,addversion] +musicaSoprano = \relative c' { + \clef "treble" + \key c \major + \time 4/4 + a4 b c d +} + +testoSoprano = \lyricmode { + Aaa Bee Cee Dee +} + +musicaVioloncello = \relative c { + \clef "bass" + \key c \major + \time 4/4 + d4 g fis8 e d4 +} + +\score { + << + << + \new Voice = "one" { + \autoBeamOff + \musicaSoprano + } + \new Lyrics \lyricsto "one" \testoSoprano + >> + \new Staff \musicaVioloncello + >> + \layout { } + \midi { } +} +@end lilypond + + +@seealso +I modelli da cui partire si trovano nell'appendice @q{Modelli}, +si veda @ref{Single staff}. + + +@node Partitura vocale a quattro parti SATB +@subsection Partitura vocale a quattro parti SATB +@translationof Four-part SATB vocal score + +@cindex modelli, SATB +@cindex SATB, modelli + +Gran parte delle partiture vocali di musica scritta per coro misto a +quattro voci con accompagnamento di orchestra, come l'Eliah di Mendelssohn +o il Messiah di Handel, hanno la musica corale e le parole su quattro +righi, una per ognuna delle voci SATB, con in basso una riduzione per +pianoforte dell'accompagnamento orchestrale. Ecco un esempio tratto +dal Messiah di Handel: + +@c The following should appear as music without code +@lilypond[quote,ragged-right] +global = { \key d \major \time 4/4 } + +sopranoMusic = \relative c'' { + \clef "treble" + r4 d2 a4 | d4. d8 a2 | cis4 d cis2 | +} +sopranoWords = \lyricmode { + Wor -- thy | is the lamb | that was slain | +} + +altoMusic = \relative a' { + \clef "treble" + r4 a2 a4 | fis4. fis8 a2 | g4 fis e2 | +} +altoWords = \sopranoWords + +tenorMusic = \relative c' { + \clef "G_8" + r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 | +} +tenorWords = \sopranoWords + +bassMusic = \relative c' { + \clef "bass" + r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 | +} +bassWords = \sopranoWords + +upper = \relative a' { + \clef "treble" + \global + r4 2 4 | + 4. 8 2 | + 4 2 | +} + +lower = \relative c, { + \clef "bass" + \global + 4 2 4 | + 4. 8 2 | + 4 2 | +} + +\score { + << % combine ChoirStaff and PianoStaff in parallel + \new ChoirStaff << + \new Staff = "sopranos" << + \set Staff.instrumentName = #"Soprano" + \new Voice = "sopranos" { + \global + \sopranoMusic + } + >> + \new Lyrics \lyricsto "sopranos" { + \sopranoWords + } + \new Staff = "altos" << + \set Staff.instrumentName = #"Alto" + \new Voice = "altos" { + \global + \altoMusic + } + >> + \new Lyrics \lyricsto "altos" { \altoWords } + \new Staff = "tenors" << + \set Staff.instrumentName = #"Tenor" + \new Voice = "tenors" { + \global + \tenorMusic + } + >> + \new Lyrics \lyricsto "tenors" { \tenorWords } + \new Staff = "basses" << + \set Staff.instrumentName = #"Bass" + \new Voice = "basses" { + \global + \bassMusic + } + >> + \new Lyrics \lyricsto "basses" { + \bassWords + } + >> % end ChoirStaff + \new PianoStaff << + \set PianoStaff.instrumentName = #"Piano" + \new Staff = "upper" \upper + \new Staff = "lower" \lower + >> + >> +} +@end lilypond + +Nessun modello fornisce esattamente questo assetto. Quello più simile +è @q{Partitura vocale SATB e riduzione automatica per pianoforte} -- si veda @ref{Vocal +ensembles} -- ma abbiamo bisogno di modificare l'assetto e aggiungere +un accompagnamento per pianoforte che non sia derivato automaticamente dalle +parti vocali. Le variabili che si riferiscono alla musica e alle parole per +le parti vocali vanno bene, ma dovremo aggiungere le variabili per la +riduzione per pianoforte. + +L'ordine con cui i contesti appaiono nel ChoirStaff del modello non +corrisponde all'ordine della partitura vocale mostrata sopra. Dobbiamo +risistemarli in modo che ci siano quattro righi con le parole scritte +direttamente sotto le note di ogni parte. Tutte le voci devono +essere @code{\voiceOne}, che è l'impostazione predefinita, quindi +i comandi @code{\voiceXXX} devono essere tolti. Dobbiamo anche +specificare la chiave di tenore per i tenori. Il modo in cui il testo +viene specificato nel modello non è stato ancora esaminato quindi +dovremo usare un metodo con cui siamo già familiari. Aggiungeremo +anche i nomi per ogni rigo. + +In questo modo il nostro ChoirStaff avrà questo aspetto: + +@example +\new ChoirStaff << + \new Staff = "sopranos" << + \set Staff.instrumentName = #"Soprano" + \new Voice = "sopranos" @{ + \global + \sopranoMusic + @} + >> + \new Lyrics \lyricsto "sopranos" @{ + \sopranoWords + @} + \new Staff = "altos" << + \set Staff.instrumentName = #"Alto" + \new Voice = "altos" @{ + \global + \altoMusic + @} + >> + \new Lyrics \lyricsto "altos" @{ + \altoWords + @} + \new Staff = "tenors" << + \set Staff.instrumentName = #"Tenor" + \new Voice = "tenors" @{ + \global + \tenorMusic + @} + >> + \new Lyrics \lyricsto "tenors" @{ + \tenorWords + @} + \new Staff = "basses" << + \set Staff.instrumentName = #"Bass" + \new Voice = "basses" @{ + \global + \bassMusic + @} + >> + \new Lyrics \lyricsto "basses" @{ + \bassWords + @} +>> % end ChoirStaff +@end example + +Poi dobbiamo lavorare sulla parte per pianoforte. Questo +è facile - basta prendere la parte per pianoforte dal +modello @q{Pianoforte solista}: + +@example +\new PianoStaff << + \set PianoStaff.instrumentName = #"Piano " + \new Staff = "upper" \upper + \new Staff = "lower" \lower +>> +@end example + +e aggiungere le definizioni delle variabili @code{upper} +e @code{lower}. + +ChoirStaff e PianoStaff devono essere uniti attraverso parentesi angolari, +perché vogliamo che siano impilati uno sopra l'altro: + +@example +<< % combine ChoirStaff and PianoStaff one above the other + \new ChoirStaff << + \new Staff = "sopranos" << + \new Voice = "sopranos" @{ + \global + \sopranoMusic + @} + >> + \new Lyrics \lyricsto "sopranos" @{ + \sopranoWords + @} + \new Staff = "altos" << + \new Voice = "altos" @{ + \global + \altoMusic + @} + >> + \new Lyrics \lyricsto "altos" @{ + \altoWords + @} + \new Staff = "tenors" << + \clef "G_8" % tenor clef + \new Voice = "tenors" @{ + \global + \tenorMusic + @} + >> + \new Lyrics \lyricsto "tenors" @{ + \tenorWords + @} + \new Staff = "basses" << + \clef "bass" + \new Voice = "basses" @{ + \global + \bassMusic + @} + >> + \new Lyrics \lyricsto "basses" @{ + \bassWords + @} + >> % end ChoirStaff + + \new PianoStaff << + \set PianoStaff.instrumentName = #"Piano" + \new Staff = "upper" \upper + \new Staff = "lower" \lower + >> +>> +@end example + +Unendo tutto questo e aggiungendo la musica +per le tre battute dell'esempio precedente, otteniamo: + +@lilypond[quote,verbatim,ragged-right,addversion] +global = { \key d \major \time 4/4 } +sopranoMusic = \relative c'' { + \clef "treble" + r4 d2 a4 | d4. d8 a2 | cis4 d cis2 | +} +sopranoWords = \lyricmode { + Wor -- thy | is the lamb | that was slain | +} +altoMusic = \relative a' { + \clef "treble" + r4 a2 a4 | fis4. fis8 a2 | g4 fis fis2 | +} +altoWords = \sopranoWords +tenorMusic = \relative c' { + \clef "G_8" + r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 | +} +tenorWords = \sopranoWords +bassMusic = \relative c' { + \clef "bass" + r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 | +} +bassWords = \sopranoWords +upper = \relative a' { + \clef "treble" + \global + r4 2 4 | + 4. 8 2 | + 4 2 | +} +lower = \relative c, { + \clef "bass" + \global + 4 2 4 | + 4. 8 2 | + 4 2 | +} + +\score { + << % combine ChoirStaff and PianoStaff in parallel + \new ChoirStaff << + \new Staff = "sopranos" << + \set Staff.instrumentName = #"Soprano" + \new Voice = "sopranos" { + \global + \sopranoMusic + } + >> + \new Lyrics \lyricsto "sopranos" { + \sopranoWords + } + \new Staff = "altos" << + \set Staff.instrumentName = #"Alto" + \new Voice = "altos" { + \global + \altoMusic + } + >> + \new Lyrics \lyricsto "altos" { + \altoWords + } + \new Staff = "tenors" << + \set Staff.instrumentName = #"Tenor" + \new Voice = "tenors" { + \global + \tenorMusic + } + >> + \new Lyrics \lyricsto "tenors" { + \tenorWords + } + \new Staff = "basses" << + \set Staff.instrumentName = #"Bass" + \new Voice = "basses" { + \global + \bassMusic + } + >> + \new Lyrics \lyricsto "basses" { + \bassWords + } + >> % end ChoirStaff + + \new PianoStaff << + \set PianoStaff.instrumentName = #"Piano " + \new Staff = "upper" \upper + \new Staff = "lower" \lower + >> + >> +} +@end lilypond + + +@node Scrivere una partitura da zero +@subsection Scrivere una partitura da zero +@translationof Building a score from scratch + +@cindex template, scrivere il tuo +@cindex esempio di scrittura di una partitura +@cindex scrivere una partitura, esempio +@cindex partitura, esempio di scrittura + +Dopo aver acquisito un po' di confidenza nella scrittura del codice LilyPond, +potresti scoprire che è più facile costruire una partitura da zero +piuttosto che modificare uno dei modelli. In questo modo puoi +anche sviluppare il tuo stile per adattarlo al tipo di musica che +vuoi. Come esempio, vediamo come mettere insieme la partitura di +un preludio per organo. + +Cominciamo con una sezione d'intestazione. Qui va il titolo, il nome del +compositore, etc, poi vengono le varie definizioni, e infine il +blocco della partitura. Spieghiamo questi prima a grandi linee +e in seguito aggiungeremo i dettagli. + +Useremo le prime due battute del preludio di Bach basato +su @emph{Jesu, meine Freude}, che è scritto per organo con due +manuali e pedaliera. Puoi vedere queste due battute +in fondo a questa sezione. La parte per il manuale superiore ha due +voci, quella inferiore e la pedaliera ne hanno una. Abbiamo quindi bisogno +di quattro definizioni musicali e di una definizione per stabilire il +tempo e la tonalità: + +@example +\version @w{"@version{}"} +\header @{ + title = "Jesu, meine Freude" + composer = "J S Bach" +@} +keyTime = @{ \key c \minor \time 4/4 @} +ManualOneVoiceOneMusic = @{ s1 @} +ManualOneVoiceTwoMusic = @{ s1 @} +ManualTwoMusic = @{ s1 @} +PedalOrganMusic = @{ s1 @} + +\score @{ +@} +@end example + +Per ora abbiamo usato soltanto una nota spaziatrice, @code{s1}, +invece di musica vera e propria. La aggiungeremo in seguito. + +Ora vediamo cosa dovrebbe andare nel blocco della partitura. Mostriamo soltanto +la struttura del pentagramma che vogliamo. La musica per organo di solito viene +scritta su tre righi, uno per ogni mano e uno per i pedali. I righi della +tastiera dovrebbero essere raggruppati insieme con una graffa, dunque dobbiamo +usare PianoStaff per loro. La parte del primo manuale ha bisogno di due voci +mentre la parte per il secondo manuale di una soltanto. + +@example +\new PianoStaff << + \new Staff = "ManualOne" << + \new Voice @{ + \ManualOneVoiceOneMusic + @} + \new Voice @{ + \ManualOneVoiceTwoMusic + @} + >> % end ManualOne Staff context + \new Staff = "ManualTwo" << + \new Voice @{ + \ManualTwoMusic + @} + >> % end ManualTwo Staff context +>> % end PianoStaff context +@end example + +Poi dobbiamo aggiungere un rigo per i pedali. Questo va sotto il +PianoStaff, ma deve svolgersi simultaneamente a quest'ultimo, quindi +abbiamo bisogno delle parentesi angolari intorno ai due gruppi. Altrimenti, +verrà generato un errore nel file di log. È un errore comune che +farai prima o poi! Prova a copiare l'esempio finale alla fine di +questa sezione, togli le parentesi angolari, e compilalo per vedere +quali errori genera. + +@example +<< % PianoStaff and Pedal Staff must be simultaneous + \new PianoStaff << + \new Staff = "ManualOne" << + \new Voice @{ + \ManualOneVoiceOneMusic + @} + \new Voice @{ + \ManualOneVoiceTwoMusic + @} + >> % end ManualOne Staff context + \new Staff = "ManualTwo" << + \new Voice @{ + \ManualTwoMusic + @} + >> % end ManualTwo Staff context + >> % end PianoStaff context + \new Staff = "PedalOrgan" << + \new Voice @{ + \PedalOrganMusic + @} + >> +>> +@end example + +Non è necessario usare il costrutto simultaneo @code{<< .. >>} per il rigo del +secondo manuale e per quello della pedaliera, poiché contengono solo una +espressione musicale, ma non è male usarlo comunque; usare sempre le parentesi +angolari dopo @code{\new Staff} è una buona abitudine da coltivare nel caso ci +sia più di una voce. Per le Voci, è vero l'opposto: queste devono essere +seguite regolarmente da parentesi graffe @code{@{ .. @}} nel caso in cui la +musica sia composta da diverse variabili che devono essere eseguite +consecutivamente. + +Aggiungiamo questa struttura al blocco della partitura, e aggiustiamo +l'indentazione. Aggiungiamo anche le chiavi appropriate, controlliamo che i +gambi, le legature di portamento e quelle di valore in ogni voce del rigo +superiore puntino nella direzione giusta usando @code{\voiceOne} e +@code{\voiceTwo}, e inseriamo l'armatura di chiave e il tempo per ogni rigo +attraverso la nostra variabile predefinita, @code{\keyTime}. + +@example +\score @{ + << % PianoStaff and Pedal Staff must be simultaneous + \new PianoStaff << + \new Staff = "ManualOne" << + \keyTime % set key and time signature + \clef "treble" + \new Voice @{ + \voiceOne + \ManualOneVoiceOneMusic + @} + \new Voice @{ + \voiceTwo + \ManualOneVoiceTwoMusic + @} + >> % end ManualOne Staff context + \new Staff = "ManualTwo" << + \keyTime + \clef "bass" + \new Voice @{ + \ManualTwoMusic + @} + >> % end ManualTwo Staff context + >> % end PianoStaff context + \new Staff = "PedalOrgan" << + \keyTime + \clef "bass" + \new Voice @{ + \PedalOrganMusic + @} + >> % end PedalOrgan Staff + >> +@} % end Score context +@end example + +@cindex allungabilità dei righi +@cindex righi, allungabilità + +L'aspetto dei righi dell'organo mostrati sopra è quasi perfetto; tuttavia +c'è un piccolo difetto che non è visibile se si guarda un sistema +singolo soltanto: La distanza tra il rigo della pedaliera e il rigo della mano +sinistra dovrebbe essere all'incirca la stessa distanza tra il rigo della mano +destra e quello della mano sinistra. In particolare, l'allungabilità dei righi +in un contesto @code{PianoStaff} è limitata (in modo che la distanza tra i righi +della mano destra e sinistra non possa diventare eccessiva), e il rigo della +pedaliera dovrebbe comportarsi allo stesso modo. + +@cindex sottoproprietà +@cindex proprietà, sottoproprietà +@cindex oggetti grafici +@cindex grafici, oggetti +@cindex grob + +L'allungabilità dei righi può essere controllata con la proprietà +@code{staff-staff-spacing} dell' @q{oggetto grafico} @code{VerticalAxisGroup} +(gli oggetti grafici vengono comunemente chiamati @q{grob} nella documentazione +di lilypond) -- non preoccuparti dei dettagli in questo momento; in seguito +verrà fornita una spiegazione approfondita. I curiosi possono dare +un'occhiata a @ruser{Overview of modifying properties}. +In questo caso, vogliamo modificare soltanto la sottoproprietà +@code{allungabilità}. Di nuovo, chi è curioso può trovare i valori predefiniti +per la proprietà staff-staff-spacing nel file @file{scm/define-grobs.scm} +guardando la definizione del grob @code{VerticalAxisGroup}. Il valore dell' +@code{allungabilità} viene preso dalla definizione del contesto @code{PianoStaff} +(nel file @file{ly/engraver-init.ly}) così che i valori siano identici. + +@example +\score @{ + << % PianoStaff e Pedal Staff devono essere simultanei + \new PianoStaff << + \new Staff = "ManualOne" << + \keyTime % imposta l'armatura di chiave e il tempo + \clef "treble" + \new Voice @{ + \voiceOne + \ManualOneVoiceOneMusic + @} + \new Voice @{ + \voiceTwo + \ManualOneVoiceTwoMusic + @} + >> % fine del contesto ManualOne Staff + \new Staff = "ManualTwo" \with @{ + \override VerticalAxisGroup + #'staff-staff-spacing #'stretchability = 5 + @} << + \keyTime + \clef "bass" + \new Voice @{ + \ManualTwoMusic + @} + >> % fine del contesto ManualTwo Staff + >> % fine del contesto PianoStaff + \new Staff = "PedalOrgan" << + \keyTime + \clef "bass" + \new Voice @{ + \PedalOrganMusic + @} + >> % fine di PedalOrgan Staff + >> +@} % fine del contesto Score +@end example + +Questo completa la struttura. Qualsiasi musica per organo a tre righi +avrà una struttura simile, sebbene il numero delle voci +possa variare. Tutto ciò che resta da fare ora +è aggiungere la musica, e combinare tutte le parti insieme. + +@lilypond[quote,verbatim,ragged-right,addversion] +\header { + title = "Jesu, meine Freude" + composer = "J S Bach" +} +keyTime = { \key c \minor \time 4/4 } +ManualOneVoiceOneMusic = \relative g' { + g4 g f ees | + d2 c | +} +ManualOneVoiceTwoMusic = \relative c' { + ees16 d ees8~ ees16 f ees d c8 d~ d c~ | + c8 c4 b8 c8. g16 c b c d | +} +ManualTwoMusic = \relative c' { + c16 b c8~ c16 b c g a8 g~ g16 g aes ees | + f16 ees f d g aes g f ees d e8~ ees16 f ees d | +} +PedalOrganMusic = \relative c { + r8 c16 d ees d ees8~ ees16 a, b g c b c8 | + r16 g ees f g f g8 c,2 | +} + +\score { + << % PianoStaff and Pedal Staff must be simultaneous + \new PianoStaff << + \new Staff = "ManualOne" << + \keyTime % set key and time signature + \clef "treble" + \new Voice { + \voiceOne + \ManualOneVoiceOneMusic + } + \new Voice { + \voiceTwo + \ManualOneVoiceTwoMusic + } + >> % end ManualOne Staff context + \new Staff = "ManualTwo" \with { + \override VerticalAxisGroup + #'staff-staff-spacing #'stretchability = 5 + } << + \keyTime + \clef "bass" + \new Voice { + \ManualTwoMusic + } + >> % end ManualTwo Staff context + >> % end PianoStaff context + \new Staff = "PedalOrgan" << + \keyTime + \clef "bass" + \new Voice { + \PedalOrganMusic + } + >> % end PedalOrgan Staff context + >> +} % end Score context +@end lilypond + +@seealso +Glossario musicale: +@rglosnamed{system,sistema}. + +@node Ridurre l'input grazie a variabili e funzioni +@subsection Ridurre l'input grazie a variabili e funzioni +@translationof Saving typing with variables and functions + +@cindex variabili +@cindex variabili + +Finora hai visto questo tipo di cose: + +@lilypond[quote,verbatim,ragged-right] +hornNotes = \relative c'' { c4 b dis c } +\score { + { + \hornNotes + } +} +@end lilypond + +Potresti anche essere accorto che questo può essere utile nella musica minimalista: + +@lilypond[quote,verbatim,ragged-right] +fragmentA = \relative c'' { a4 a8. b16 } +fragmentB = \relative c'' { a8. gis16 ees4 } + +violin = \new Staff { + \fragmentA \fragmentA | + \fragmentB \fragmentA | +} + +\score { + { + \violin + } +} +@end lilypond + +Tuttavia, puoi usare queste variabili (note anche come +macro, o comandi definiti dall'utente) anche per le modifiche manuali: + +@c TODO Avoid padtext - not needed with skylining +@lilypond[quote,verbatim,ragged-right] +dolce = \markup { \italic \bold dolce } + +padText = { \once \override TextScript #'padding = #5.0 } +fthenp =_\markup { + \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p +} + +violin = \relative c'' { + \repeat volta 2 { + c4._\dolce b8 a8 g a b | + \padText + c4.^"hi there!" d8 e' f g d | + c,4.\fthenp b8 c4 c-. | + } +} + +\score { + { + \violin + } + \layout { ragged-right = ##t } +} +@end lilypond + +Chiaramente queste variabili sono utili per ridurre la quantità di +testo da scrivere. Ma vale la pena tenerle in considerazione anche se +le usi una volta sola -- perché riducono la complessità. Vediamo l'esempio +precedente senza alcuna variabile. È molto difficile da leggere, +soprattutto l'ultima linea. + +@example +violin = \relative c'' @{ + \repeat volta 2 @{ + c4._\markup @{ \italic \bold dolce @} b8 a8 g a b | + \once \override TextScript #'padding = #5.0 + c4.^"hi there!" d8 e' f g d | + c,4.\markup @{ + \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p + @} + b8 c4 c-. | + @} +@} +@end example + +@c TODO Replace the following with a better example -td +@c Skylining handles this correctly without padText + +Finora abbiamo visto la sostituzione statica -- quando LilyPond +vede @code{\padText}, lo sostituisce con quel che noi abbiamo +definito che sia (ovvero tutto ciò che sta a destra di +@code{padtext=}). + +LilyPond può gestire anche la sostituzione non statica (la puoi +immaginare come una funzione). + +@lilypond[quote,verbatim,ragged-right] +padText = +#(define-music-function + (parser location padding) + (number?) + #{ + \once \override TextScript #'padding = $padding + #}) + +\relative c''' { + c4^"piu mosso" b a b | + \padText #1.8 + c4^"piu mosso" d e f | + \padText #2.6 + c4^"piu mosso" fis a g | +} +@end lilypond + +L'uso di variabili è anche un buon modo per ridurre il lavoro quando +la sintassi di input di LilyPond cambia (vedi +@rprogram{Aggiornare i file con convert-ly}). Se si ha un'unica +definizione (come @code{\dolce}) per tutti i file di input +(vedi @ref{Style sheets}), allora se la sintassi cambia bisogna +aggiornare soltanto la singola definizione @code{\dolce}, +invece di dover modificare tutti i file @file{.ly}. + + +@node Partiture e parti +@subsection Partiture e parti +@translationof Scores and parts + +Nella musica orchestrale, tutte le note vengono stampate due volte. Una +volta nella parte per i musicisti e una volta nella partitura completa +per il direttore. Le variabili sono utili se si vuole evitare il doppio +lavoro. La musica viene inserita una volta e salvata all'interno di una +variabile. I contenuti di quella variabile vengono poi usati per generare +sia la parte che l'intera partitura. + +Conviene definire le note in un file speciale. Ad esempio, +supponiamo che il file @file{horn-music.ly} contenga la seguente parte +di un duetto per corno e fagotto + +@example +hornNotes = \relative c @{ + \time 2/4 + r4 f8 a | cis4 f | e4 d | +@} +@end example + +@noindent +Poi una parte individuale si ottiene inserendo il seguente codice in un file + +@example +\include "horn-music.ly" + +\header @{ + instrument = "Horn in F" +@} + +@{ + \transpose f c' \hornNotes +@} +@end example + +La linea + +@example +\include "horn-music.ly" +@end example + +@noindent +sostituisce i contenuti di @file{horn-music.ly} in quella posizione del +file, quindi @code{hornNotes} è definito dopo. Il comando +@code{\transpose f@tie{}c'} indica che l'argomento, ovvero +@code{\hornNotes}, deve essere trasposto di una quinta ascendente. La tonalità +@code{f} è indicata dalla nota @code{c'}, che corrisponde all'accordatura +di un normale corno francese in@tie{}Fa. La trasposizione può essere vista +nel seguente output + +@lilypond[quote,ragged-right] +\transpose f c' \relative c { + \time 2/4 + r4 f8 a | cis4 f | e4 d | +} +@end lilypond + +Nei brani di insieme, una delle voci non suona per molte +misure. Questo viene indicato da una pausa speciale, la pausa +multi-misura. Si inserisce con una @code{R} maiuscola seguita da una +durata (@code{1}@tie{}per una semibreve, @code{2}@tie{}per una minima, +etc.). Moltiplicando la durata, si possono costruire pause +più lunghe. Ad esempio, questa pausa prende 3@tie{}misure in un +tempo di 2/4 + +@example +R2*3 +@end example + +Quando la parte viene stampata, le pause multiple devono essere +condensate. Si può fare impostando una variabile run-time + +@example +\set Score.skipBars = ##t +@end example + +@noindent +Questo comando imposta la proprietà @code{skipBars} nel contesto +@code{Score} su vero (@code{##t}). Aggiungendo la pausa e questa +opzione alla musica precedente, si arriva al seguente risultato + +@lilypond[quote,ragged-right] +\transpose f c' \relative c { + \time 2/4 + \set Score.skipBars = ##t + R2*3 | + r4 f8 a | cis4 f | e4 d | +} +@end lilypond + + +Lo spartito si forma combinando tutta la musica insieme. Assumendo che +l'altra voce si trovi in @code{bassoonNotes} nel file +@file{bassoon-music.ly}, lo spartito sarà + +@example +\include "bassoon-music.ly" +\include "horn-music.ly" + +<< + \new Staff \hornNotes + \new Staff \bassoonNotes +>> +@end example + +@noindent +ovvero + +@lilypond[quote,ragged-right] +\relative c << + \new Staff { + \clef "treble" + \time 2/4 + R2*3 | + r4 f8 a | cis4 f | e4 d | + } + \new Staff { + \clef "bass" + \time 2/4 + r4 d,8 f | gis4 c | b4 bes | + a8 e f4 | g4 d | gis4 f | + } +>> +@end lilypond + +