1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
4 Translation of GIT committish: db92af51a444062c8edaef3afa36f57375b8feeb
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. For details, see the Contributors'
8 Guide, node Updating translation committishes..
13 @node Modifica dell'output
14 @chapter Modifica dell'output
15 @translationof Tweaking output
17 Questo capitolo spiega come modificare l'output. LilyPond è estremamente
18 configurabile; praticamente si può modificare qualsiasi elemento dell'output.
23 * Manuale del Funzionamento interno::
24 * Aspetto degli oggetti::
25 * Posizionamento degli oggetti::
26 * Spaziatura verticale::
27 * Collisioni tra oggetti::
31 @node Modifiche di base
32 @section Modifiche di base
33 @translationof Tweaking basics
36 * Introduzione alle modifiche::
37 * Oggetti e interfacce::
38 * Convenzioni per i nomi di oggetti e proprietà::
39 * Metodi di modifica::
42 @node Introduzione alle modifiche
43 @subsection Introduzione alle modifiche
44 @translationof Introduction to tweaks
46 Nella terminologia di LilyPond un @emph{tweak} (modifica, ritocco) si
47 riferisce ai vari metodi che l'utente ha a disposizione per modificare
48 le azioni intraprese durante l'interpretazione del file di input e per
49 cambiare l'aspetto dell'output. Alcune modifiche sono molto semplici, altre
50 sono più complesse. Ma nel loro insieme i metodi disponibili permettono
51 di modificare quasi qualsiasi aspetto della partitura come si desidera.
53 In questa sezione vengono trattati i concetti di base necessari per
54 comprendere le modifiche. Più avanti presenteremo vari comandi già
55 pronti che possono essere semplicemente copiati per ottenere lo stesso
56 effetto nelle proprie partiture; allo stesso tempo mostreremo come
57 costruire questi comandi così da rendere possibile imparare a scrivere
58 le proprie modifiche personali.
60 Prima di iniziare questo capitolo si consiglia di rileggere la sezione
61 @ref{Contesti e incisori}, perché i contesti, gli incisori e le proprietà
62 contenute al loro interno sono fondamentali per comprendere e
63 costruire le modifiche.
65 @node Oggetti e interfacce
66 @subsection Oggetti e interfacce
67 @translationof Objects and interfaces
70 @cindex oggetto grafico (grob)
71 @cindex estensore (spanner)
73 @cindex oggetto, proprietà dell'
74 @cindex proprietà dell'oggetto
75 @cindex oggetto di formattazione
76 @cindex formattazione, oggetto di
78 I @emph{tweak} implicano la modifica delle operazioni e delle strutture
79 interne del programma LilyPond, dunque per prima cosa bisogna
80 introdurre alcuni termini usati per descriverle.
82 Il termine @q{Oggetto} è un termine generico che si riferisce all'insieme
83 di strutture interne create da LilyPond durante l'elaborazione
84 di un file di input. Quando incontra un comando come @code{\new
85 Staff}, LilyPond crea un nuovo oggetto di tipo @code{Staff} (un rigo). Questo
86 oggetto @code{Staff} possiede tutte le proprietà associate a
87 quel rigo, come ad esempio il suo nome e la sua armatura di chiave,
88 insieme ai dettagli relativi agli incisori assegnati per operare all'interno
89 del contesto di quel rigo. Analogalmente, ci sono oggetti che hanno
90 le proprietà di tutti gli altri contesti, come gli oggetti @code{Voice},
91 gli oggetti @code{Score}, gli oggetti @code{Lyrics} e gli oggetti che
92 rappresentano tutti gli elementi della notazione, come le stanghette,
93 le teste di nota, le legature di valore, le dinamiche, etc. A ogni
94 oggetto corrisponde un relativo insieme di valori di proprietà.
96 Alcuni tipi di oggetto hanno dei nomi speciali. Gli oggetti che rappresentano
97 elementi della notazione visibili nell'output come le teste di nota, i gambi,
98 le legature di portamento e di valore, le diteggiature, le chiavi, etc. sono
99 chiamati «Oggetti di formattazione» (in inglese @emph{Layout Objects}). Sono
100 chiamati anche «Oggetti grafici» (in inglese @emph{Graphical Objects} o
101 @emph{Grob} per brevità). Si tratta sempre di oggetti nel senso generico
102 descritto prima e quindi hanno tutti delle proprietà a loro associate, come la
103 posizione, la dimensione, il colore, etc.
105 Alcuni oggetti di formattazione sono ancora più specializzati. Le legature
106 di frase, le forcelle del crescendo, i segni di ottava e molti altri @q{grob}
107 non sono localizzati in un punto preciso -- hanno invece un punto iniziale,
108 un punto finale e talvolta altre proprietà relative alla loro forma. Gli
109 oggetti che hanno una forma estesa in questo modo vengono chiamati «Estensori»
110 (in inglese @emph{Spanner}).
112 Gli estensori non possono essere modificati dopo la loro creazione. Tra questi
113 sia @code{StaffSymbol} che @code{LedgerLineSpanner}, che continuano nel corso
114 della partitura, a meno che non siano terminati dal comando @code{\stopStaff} e
115 poi ricreati col comando @code{\startStaff}.
117 Esistono anche dei grob @q{astratti} che non stampano niente da soli, bensì
118 raccolgono, posizionano e gestiscono altri grob. Esempi comuni sono
119 @code{DynamicLineSpanner}, @code{BreakAlignment}, @code{NoteColumn},
120 @code{VerticalAxisGroup}, @code{NonMusicalPaperColumn} e simili. Vedremo
121 in seguito come si usano alcuni di questi.
123 Resta da spiegare cosa sono le «Interfacce». Molti oggetti, pur essendo
124 piuttosto diversi, condividono delle caratteristiche comuni che devono
125 essere elaborate nello stesso modo. Ad esempio, tutti i @emph{grob} hanno un
126 colore, una dimensione, una posizione, etc.; tutte queste proprietà vengono
127 elaborate nello stesso modo durante l'interpretazione del file di input. Per
128 semplificare queste operazioni interne, le azioni e proprietà comuni
129 sono riunite in un oggetto chiamato @code{grob-interface}.
130 Esistono molti altri raggruppamenti di proprietà comuni come queste, ognuno
131 con un nome che finisce con @code{interface}. In totale ci sono più di
132 100 interfacce. Vedremo in seguito perché questo sia di interesse
133 e di utilità per l'utente.
135 Questi sono dunque i termini principali riguardanti gli oggetti che useremo
138 @node Convenzioni per i nomi di oggetti e proprietà
139 @subsection Convenzioni per i nomi di oggetti e proprietà
140 @translationof Naming conventions of objects and properties
142 @cindex convenzioni per i nomi di oggetti
143 @cindex convenzioni per i nomi di proprietà
144 @cindex oggetti, convenzioni per i nomi di
145 @cindex proprietà, convenzioni per i nomi di
147 Abbiamo già visto, in @ref{Contesti e incisori}, le convenzioni per i
148 nomi di oggetti. Ecco una lista dei più comuni tipi di oggetti e
149 proprietà insieme alle convenzioni usate per nominarli e alcuni
150 esempi di nomi reali. Abbiamo usato @q{A} per indicare un
151 qualsiasi carattere alfabetico maiuscolo e @q{aaa} per indicare un qualsiasi
152 numero di caratteri alfabetici minuscoli. Gli altri caratteri sono indicati
155 @multitable @columnfractions .33 .33 .33
156 @headitem Tipo di oggetto/proprietà
157 @tab Convenzione per il nome
160 @tab Aaaa o AaaaAaaaAaaa
161 @tab Staff, GrandStaff
162 @item Oggetti di formattazione
163 @tab Aaaa o AaaaAaaaAaaa
166 @tab Aaaa_aaa_engraver
167 @tab Clef_engraver, Note_heads_engraver
169 @tab aaa-aaa-interface
170 @tab grob-interface, break-aligned-interface
171 @item Proprietà del contesto
172 @tab aaa o aaaAaaaAaaa
173 @tab alignAboveContext, skipBars
174 @item Proprietà degli oggetti di formattazione
175 @tab aaa o aaa-aaa-aaa
176 @tab direction, beam-thickness
179 Come vedremo tra poco, ogni tipo di oggetto richiede un comando diverso
180 per modificare le sue proprietà, dunque è utile poter riconoscere i tipi
181 di oggetti e proprietà dai loro nomi.
184 Guida alla notazione:
185 @ruser{Modifica delle proprietà}.
188 @node Metodi di modifica
189 @subsection Metodi di modifica
190 @translationof Tweaking methods
192 @cindex metodi di modifica
193 @cindex modifica, metodi
196 * Il comando override::
197 * Il comando revert::
199 * Il comando overrideProperty::
200 * Il comando di ritocco tweak::
201 * Il prefisso single::
204 @node Il comando override
205 @unnumberedsubsubsec Il comando @code{@bs{}override}
206 @translationof The override command
208 @cindex override, comando
209 @cindex override, sintassi
213 Abbiamo già incontrato i comandi @code{\set} e @code{\with}, che servono
214 a modificare le proprietà dei @strong{contesti} e a togliere o aggiungere
215 gli @strong{incisori}, nei paragrafi @ref{Modificare le proprietà di contesto} e
216 @ref{Aggiungere e togliere gli incisori}. Ora dobbiamo introdurre alcuni
217 comandi più importanti.
219 Il comando che cambia le proprietà degli @strong{oggetti di formattazione} è
220 @code{\override}. Dato che questo comando ha il compito di modificare
221 le caratteristiche interne fondamentali di LilyPond, la sua sintassi non è
222 semplice come quella dei comandi presentati finora. Deve sapere esattamente
223 quale proprietà di quale oggetto in quale contesto deve essere
224 modificata e quale deve essere il suo nuovo valore. Vediamo come
227 La sintassi generale di questo comando è:
230 \override @var{Contesto}.@var{OggettoDiFormattazione}.@var{proprietà-formattazione} = #@var{valore}
234 Questo comando assegnerà alla proprietà chiamata @var{proprietà-formattazione}
235 dell'oggetto di formattazione chiamato @var{OggettoDiFormattazione}, che fa
236 parte del contesto @var{Contesto}, il valore @var{valore}.
238 Il @var{Contesto} può essere omesso (e di solito lo è) quando il
239 contesto richiesto è implicito e si trova a uno dei livelli più
240 bassi dei contesti, come ad esempio @code{Voice}, @code{ChordNames} o
241 @code{Lyrics}. Lo ometteremo in molti degli esempi seguenti; vedremo
242 poi quando deve essere specificato.
244 Le sezioni successive tratteranno in modo dettagliato le proprietà e
245 i loro valori, si veda @ref{Tipi di proprietà}; in questa sezione, invece,
246 useremo soltanto alcune proprietà e valori di facile comprensione,
247 in modo da spiegare il formato e l'uso di questo comando.
249 Le espressioni fondamentali di LilyPond sono gli elementi musicali come le note,
250 le durate e le annotazioni. Le espressioni basilari come numeri,
251 stringhe di testo e liste sono elaborate nella @q{modalità Scheme}, che viene
252 invocata inserendo @samp{#} prima del valore. Sebbene i valori possano
253 avere talvolta una valida rappresentazione nella modalità musicale di LilyPond,
254 per coerenza questo manuale li farà sempre precedere da @samp{#}. Per maggiori
255 informazioni sulla modalità Scheme, si veda @rextend{LilyPond Scheme syntax}.
257 @code{\override} è il comando più usato nelle modifiche e quasi tutto
258 il resto del capitolo ha lo scopo di mostrare alcuni esempi
259 di utilizzo. Ecco un semplice esempio che mostra come cambiare
260 il colore della testa di nota:
262 @cindex proprietà del colore, esempio
263 @cindex colore, proprietà del
264 @cindex NoteHead, esempio di sovrascrittura
266 @lilypond[quote,ragged-right,verbatim]
269 \override NoteHead.color = #red
271 \override NoteHead.color = #green
276 @node Il comando revert
277 @unnumberedsubsubsec Il comando @code{@bs{}revert}
278 @translationof The revert command
280 @cindex revert, comando
281 @cindex ripristino, comando \revert
285 Quando viene sovrascritta, la proprietà mantiene il suo nuovo valore finché
286 non viene sovrascritta di nuovo o non si incontra un comando @code{\revert}.
287 Il comando @code{\revert} fa sì che il valore della proprietà sia ripristinato
288 al suo valore predefinito. Attenzione: non al suo valore precedente (nel caso
289 siano stati inseriti vari comandi @code{\override}). Impiega la seguente sintassi:
292 \revert @var{Contesto}.@var{OggettoDiFormmattazione}.@var{proprietà-formattazione}
295 Anche in questo caso, come per il comando @code{\override}, @var{Contesto} di
296 solito non è necessario e verrà omesso in molti degli esempi seguenti.
297 In questo esempio ripristiniamo il colore della testa delle ultime due
298 note al valore predefinito:
300 @cindex proprietà del colore, esempio
301 @cindex colore, proprietà del
302 @cindex NoteHead, esempio di sovrascrittura
304 @lilypond[quote,ragged-right,verbatim]
307 \override NoteHead.color = #red
309 \override NoteHead.color = #green
311 \revert NoteHead.color
316 @node Il prefisso once
317 @unnumberedsubsubsec Il prefisso @code{@bs{}once}
318 @translationof The once prefix
322 I comandi @code{\override}, @code{revert}, @code{\set} e @code{\unset} possono
323 essere preceduti da @code{\once}. Questo fa sì che tale comando sia operativo
324 solo in quel determinato momento musicale, prima che la proprietà sia
325 ripristinata al suo valore precedente (che può essere diverso da quello
326 predefinito se un altro @code{\override} è ancora attivo). Usando lo stesso
327 esempio, possiamo cambiare il colore di una singola nota in questo modo:
329 @cindex proprietà del colore, esempio
330 @cindex colore, proprietà del
331 @cindex NoteHead, esempio di sovrascrittura
333 @lilypond[quote,verbatim]
336 \override NoteHead.color = #red
338 \once \override NoteHead.color = #green
340 \revert NoteHead.color
345 Il prefisso @code{\once} può essere usato anche di fronte a molti
346 comandi predefiniti per limitare il loro effetto a un momento musicale:
348 @lilypond[quote,verbatim]
360 @node Il comando overrideProperty
361 @unnumberedsubsubsec Il comando @code{@bs{}overrideProperty}
362 @translationof The overrideProperty command
364 @cindex overrideProperty, comando
366 @funindex \overrideProperty
368 Esiste un'altra forma di comando di sovrascrittura,
369 @code{\overrideProperty}, che si rende necessario raramente.
370 Lo menzioniamo qui per completezza, ma per approfondire l'argomento
371 si veda @rextend{Difficult tweaks}.
372 @c Maybe explain in a later iteration -td
374 @c http://lists.gnu.org/archive/html/bug-lilypond/2014-12/msg00041.html
375 @c Duplicate node names across LM and NR causes problems to translated manuals (see issue 2266).
376 @c As a workaround, I'll slightly change the node name.
377 @node Il comando di ritocco tweak
378 @unnumberedsubsubsec Il comando di ritocco @code{@bs{}tweak}
379 @translationof The tweak command
381 @cindex tweak, comando
385 L'ultimo comando di modifica a disposizione è @code{\tweak}. Si usa
386 quando vari oggetti compaiono nello stesso momento musicale,
387 ma si vogliono modificare soltanto le proprietà di alcuni oggetti, come
388 ad esempio una singola nota all'interno di un accordo. Se si usa @code{\override}
389 la modifica ha effetto su tutte le note di un accordo, mentre @code{\tweak} ha
390 effetto solo sul singolo elemento che segue.
392 Per esempio, supponiamo di voler modificare la dimensione della
393 testa della nota centrale (il Mi) in un accordo di Do maggiore. Vediamo prima
394 cosa succede se si usa @code{\once \override}:
396 @cindex proprietà font-size, esempio
397 @cindex font-size, esempio
398 @cindex NoteHead, esempio di sovrascrittura
400 @lilypond[quote,ragged-right,verbatim]
403 \once \override NoteHead.font-size = #-3
409 Come si vede, la sovrascrittura riguarda @emph{tutte} le teste di nota
410 dell'accordo. Ciò è dovuto al fatto che tutte le note di un accordo
411 si trovano nello stesso @emph{momento musicale} e l'azione di @code{\once}
412 consiste nell'applicare la sovrascrittura a tutti gli oggetti di formattazione
413 del tipo specificato che si trovano nello stesso momento musicale del comando
414 @code{\override} stesso.
416 Il comando @code{\tweak} funziona in modo diverso. Agisce sull'elemento
417 immediatamente successivo nel flusso di codice. Nella sua forma più
418 semplice funziona solo sugli oggetti creati direttamente dall'elemento
419 seguente, in particolare teste di nota e articolazioni.
421 Tornando al nostro esempio, la dimensione della nota centrale
422 di un accordo si cambia in questo modo:
424 @cindex proprietà font-size, esempio
425 @cindex font-size, esempio
426 @cindex @code{\tweak}, esempio
428 @lilypond[quote,ragged-right,verbatim]
431 <c \tweak font-size #-3 e g>4
435 Si noti che la sintassi di @code{\tweak} è diversa da quella di
436 @code{\override}. Il contesto non deve essere specificato; anzi,
437 se lo fosse verrebbe generato un errore. Sia il contesto che l'oggetto
438 di formattazione sono sottintesi dall'elemento che segue nel flusso di
439 input. Nota anche che non ci devono essere segni di uguale (@code{=}). Dunque la
440 forma semplice del comando @code{\tweak} è
443 \tweak @var{proprietà-formattazione} #@var{valore}
446 Il comando @code{\tweak} serve anche a modificare soltanto una di una serie
449 @cindex proprietà del colore, esempio
450 @cindex colore, proprietà del
451 @cindex @code{\tweak}, esempio
453 @lilypond[quote,fragment,ragged-right,verbatim]
455 -\tweak color #red ^"Red"
456 -\tweak color #green _"Green"
460 Nota che il comando @code{\tweak} deve essere preceduto da un segno di
461 articolazione, perché la stessa espressione modificata deve essere applicata come articolazione. In caso di più sovrascritture della
462 direzione (@code{^} o @code{_}), prevale la sovrascrittura posizionata più a sinistra,
463 perché viene applicata per ultima.
465 @cindex @code{\tweak}, alterazione
466 @cindex @code{\tweak}, oggetto di formattazione specifico
468 Alcuni oggetti, come gambi e alterazioni, vengono creati dopo, non
469 direttamente dall'evento che segue. È comunque possibile usare
470 @code{\tweak} con questi oggetti creati indirettamente se si indica
471 esplicitamente l'oggetto di formattazione, purché LilyPond riesca a
472 seguire la sua origine fino all'evento originale:
474 @lilypond[quote,fragment,ragged-right,verbatim]
475 <\tweak Accidental.color #red cis''4
476 \tweak Accidental.color #green es''
480 Questa forma estesa del comando @code{\tweak} può essere descritta così
482 \tweak @var{OggettoFormattazione}.@var{proprietà-formattazione} #@var{valore}
485 @cindex gruppi irregolari, annidati
486 @cindex terzine, annidate
487 @cindex parentesi, gruppo irregolare
488 @cindex parentesi, terzina
489 @cindex parentesi del gruppo irregolare
490 @cindex parentesi della terzina
492 @funindex TupletBracket
494 Il comando @code{\tweak} è necessario anche quando si vuole cambiare
495 l'aspetto di uno di una serie di gruppi irregolari annidati che iniziano
496 nello stesso momento musicale. Nell'esempio seguente, la prima lunga
497 parentesi del gruppo irregolare e la prima delle tre brevi parentesi
498 iniziano nello stesso momento musicale, quindi qualsiasi comando
499 @code{\override} produrrebbe degli effetti su entrambi. In questo esempio,
500 si usa @code{\tweak} per distinguerli. Il primo comando @code{\tweak}
501 indica che la lunga parentesi del gruppo irregolare deve essere posizionata
502 sopra le note e il secondo indica che il numero del primo gruppo irregolare
503 deve essere in rosso.
505 @cindex @code{\tweak}, esempio
506 @cindex proprietà della direzione, esempio
507 @cindex direzione, esempio
508 @cindex proprietà del colore, esempio
509 @cindex colore, esempio
511 @lilypond[quote,ragged-right,verbatim]
516 \tuplet 3/2 { c8[ c c] }
517 \tuplet 3/2 { c8[ c c] }
518 \tuplet 3/2 { c8[ c c] }
523 Se i gruppi irregolari annidati non iniziano nello stesso momento, il loro
524 aspetto può essere modificato come di consueto con i comandi @code{\override}:
526 @cindex proprietà text, esempio
527 @cindex text, esempio
528 @cindex funzione tuplet-number, esempio
529 @cindex proprietà transparent, esempio
530 @cindex transparent, esempio
531 @cindex TupletNumber, esempio di sovrascrittura
533 @c NOTE Tuplet brackets collide if notes are high on staff
535 @lilypond[quote,ragged-right,verbatim]
537 \tuplet 3/2 { c'8[ c c] }
538 \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
542 \once \override TupletNumber.transparent = ##t
543 \tuplet 3/2 { c8[ c c] }
544 \tuplet 3/2 { c8[ c c] }
550 Guida alla Notazione:
551 @ruser{Il comando tweak}.
554 @node Il prefisso single
555 @unnumberedsubsubsec Il prefisso @code{@bs{}single}
556 @translationof The single prefix
559 @cindex tweak, generato da override
561 Immaginiamo di voler enfatizzare alcune teste di nota in particolare
562 colorandole di rosso e aumentandone la dimensione; e immaginiamo anche
563 che per comodità abbiamo definito una funzione per fare ciò:
565 @lilypond[quote,verbatim]
567 \override NoteHead.color = #red
568 \override NoteHead.font-size = 2
571 c''4 a \once \emphNoteHead f d |
575 Il prefisso @code{\once} funziona bene se si desidera enfatizzare note
576 singole o interi accordi, ma non permette di enfatizzare una singola
577 nota @emph{dentro} un accordo. Prima abbiamo visto come si possa usare
578 @code{\tweak} per fare ciò, vedi @ref{Il comando di ritocco tweak}.
579 Ma non è possibile usare @code{\tweak} in una funzione; è in questo caso che
580 torna utile il comando @code{\single}:
582 @lilypond[quote,verbatim]
584 \override NoteHead.color = #red
585 \override NoteHead.font-size = 2
588 <c'' a \single \emphNoteHead f d>4
592 In sintesi, @code{\single} converte le modifiche introdotte dal comando
593 @code{\override} in modifiche eseguite dal comando @code{\tweak}.
594 Ciò significa che quando ci sono vari oggetti che si trovano nello stesso
595 momento musicale (come le teste di nota in un accordo), @code{\single} avrà
596 effetto su uno solo, quello generato dall'espressione musicale immediatamente
597 seguente; a differenza di @code{\once}, che ha effetto su tutti questi oggetti.
599 Usando @code{\single} in questo modo qualsiasi funzione usata come
600 scorciatoia che contiene soltanto @code{\override} può essere applicata
601 a note individuali in un accordo. Tuttavia, @code{\single} non converte
602 @code{\revert}, @code{\set} e @code{\unset} in modifiche che hanno le
603 proprietà di @code{\tweak}.
606 Manuale di apprendimento:
607 @ref{Il comando di ritocco tweak},
608 @ref{Uso delle variabili per modificare la formattazione}.
611 @node Manuale del Funzionamento interno
612 @section Manuale del Funzionamento interno
613 @translationof The Internals Reference manual
615 @cindex Guida al Funzionamento interno
618 * Proprietà degli oggetti di formattazione::
619 * Proprietà presenti nelle interfacce::
620 * Tipi di proprietà::
623 @node Proprietà degli oggetti di formattazione
624 @subsection Proprietà degli oggetti di formattazione
625 @translationof Properties of layout objects
627 @cindex proprietà degli oggetti di formattazione
628 @cindex proprietà degli oggetti grafici (grob)
629 @cindex ogggetti grafici, proprietà degli
630 @cindex oggetti di formattazione, proprietà degli
631 @cindex manuale del Funzionamento Interno
633 Immagina di avere una legatura di portamento che ai tuoi
634 occhi appare troppo sottile e che vorresti un po' più spessa.
635 Come fare? Sai che LilyPond è molto flessibile e che quindi
636 dovrebbe essere possibile farlo; e probabilmente immagini
637 che sia necessario un comando @code{\override}. Ma esiste una
638 proprietà che controlla lo spessore di una legatura? E se esiste
639 come può essere modificata? Qui entra in gioco il manuale del Funzionamento
640 Interno, che contiene tutte le informazioni necessarie per costruire
641 tutti i comandi @code{\override}.
643 Prima di dare un'occhiata alla guida al Funzionamento Interno, vogliamo
644 avvisarti: si tratta di un documento di @strong{riferimento}, che significa
645 che ci sono poche o nessune spiegazioni al suo interno, dato che il suo
646 scopo è presentare le informazioni in modo preciso e conciso. Dunque potrà
647 sembrare scoraggiante al primo impatto. Ma non ti preoccupare! I consigli
648 e le spiegazioni presentate qui, insieme a un po' di pratica, ti permetteranno
649 di estrarre da solo da quella guida le informazioni che cerchi.
651 @cindex esempio di sovrascrittura
652 @cindex sovrascrittura, esempio
653 @cindex Guida al Funzionamento Interno, esempio d'uso
654 @cindex @code{\addlyrics}, esempio
656 Partiamo da un esempio concreto, un semplice frammento di musica:
658 @c Mozart, Die Zauberflöte Nr.7 Duett
660 @lilypond[quote,verbatim]
665 r4 bes'8 bes[( g]) g |
666 g8[( es]) es d[( f]) as |
670 The man who | feels love's sweet e -- | mo -- tion
675 Supponiamo ora che si vogliano rendere un po' più spesse le
676 legature di portamento. È possibile? La legatura di portamento
677 è certamente un oggetto di formattazione, dunque la domanda è: @q{Esiste una
678 proprietà che appartiene a una legatura di portamento in grado di controllare
679 lo spessore?} Per rispondere a questa domanda dobbiamo guardare
680 nella guida al Funzionamento interno.
682 Puoi trovare la guida nella versione di LilyPond che stai usando
683 sul sito di LilyPond: @uref{http://lilypond.org}. Vai alla
684 pagina della documentazione e clicca sul link alla guida del Funzionamento
685 interno. Per poter seguire questo manuale dovresti usare la versione HTML standard,
686 non quella in un'unica grande pagina né il PDF. Nei prossimi paragrafi ti
687 servirà per seguire gli esempi che faremo.
689 Sotto il titolo vedrai cinque link. Seleziona il
690 link al @strong{Backend}, dove si trovano le informazioni
691 sugli oggetti di formattazione (@emph{layout objects}). Poi sotto il titolo
692 @emph{Backend}, seleziona il link a @strong{All layout objects}.
693 La pagina che compare elenca tutti gli oggetti di formattazione usati
694 nella tua versione di LilyPond, in ordine alfabetico. Seleziona il link a
695 Slur (legatura di portamento) e verranno elencate le sue proprietà.
697 Si può trovare questa pagina anche dalla Guida alla notazione. In una
698 delle pagine che tratta le legature di portamento potrai trovare un
699 link alla Guida al funzionamento interno. Il link ti porterà direttamente
700 a questa pagina, ma se hai un'idea di quale sia l'oggetto di formattazione
701 da modificare, è più semplice andare direttamente nella guida del Funzionamento
702 interno e cercare lì.
704 La pagina sulla legatura di portamento (@emph{Slur}) ci dice per prima cosa che gli
705 oggetti Slur sono creati dall'incisore Slur_engraver. Poi elenca le impostazioni
706 standard. Scorrile cercando la proprietà che potrebbe controllare lo spessore
707 delle legature di portamento; dovresti trovare
712 Line thickness, generally measured in line-thickness
715 Sembra che sia quel che stiamo cercando. Ci dice che il valore
716 di @code{thickness} (spessore) è un semplice @emph{numero},
717 che il valore predefinito è 1.2 e che le unità si trovano in
718 un'altra proprietà chiamata @code{line-thickness}.
720 Come abbiamo detto prima, ci sono poche spiegazioni nella guida al
721 Funzionamento interno, tuttavia abbiamo già informazioni sufficienti
722 per cercare di cambiare lo spessore delle legature di portamento.
723 Vediamo che il nome dell'oggetto di formattazione è @code{Slur}, che
724 il nome della proprietà da modificare è @code{thickness} e che il
725 nuovo valore dovrà essere un numero un po' più grande di 1.2
726 se vogliamo rendere più spesse le legature.
728 Ora possiamo costruire il comando @code{\override} sostituendo
729 i valori che abbiamo trovato per i nomi e omettendo il
730 contesto. Inizialmente usiamo un valore molto grande per lo
731 spessore, per essere sicuri che il comando funzioni:
734 \override Slur.thickness = #5.0
737 Non dimenticare il@tie{}@code{#} che precede il nuovo valore!
739 L'ultima domanda è: @q{dove va messo questo comando?} Finché non sei sicuro
740 e stai ancora imparando, la risposta migliore è: @q{dentro la musica, prima della
741 prima legatura di portamento e accanto ad essa.} Facciamolo:
743 @cindex legatura di portamento, esempio di sovrascrittura
744 @cindex proprietà thickness, esempio
745 @cindex thickness (spessore), esempio
747 @lilypond[quote,verbatim]
752 % Increase thickness of all following slurs from 1.2 to 5.0
753 \override Slur.thickness = #5.0
754 r4 bes'8 bes[( g]) g |
755 g8[( es]) es d[( f]) as |
759 The man who | feels love's sweet e -- | mo -- tion
765 e vediamo che la legatura di portamento è davvero più grossa.
767 Questi sono i fondamenti per costruire i comandi @code{\override}. Incontreremo
768 delle situazioni più complesse nelle sezioni successive, ma ora possiedi già
769 tutte le conoscenze di base che ti permetteranno di costruire i tuoi comandi.
770 Ti manca solo un po' di pratica, che potrai fare grazie ai prossimi esempi.
772 @subsubheading Trovare il contesto
774 @cindex contesto, trovare il
775 @cindex contesto, identificare il corretto
777 E se avessimo bisogno di specificare il contesto?
778 Quale dovrebbe essere? Potremmo immaginare che le legature
779 di portamento si trovino nel contesto Voice, dato che sono ovviamente
780 collegate strettamente alle singole voci, ma possiamo
781 esserne sicuri? Per scoprirlo, vai in cima alla pagina del Funzionamento
782 Interno relativa a «Slur», dove dice @q{Slur objects are created by: Slur
783 engraver}. Significa che le legature di portamento sono create nel contesto
784 in cui si trova l'incisore @code{Slur_engraver}. Segui il link alla pagina
785 @code{Slur_engraver}. In fondo dice che lo @code{Slur_engraver} fa parte di
786 vari contesti Voice, incluso il contesto standard della voce, @code{Voice}.
787 Dunque la nostra supposizione era corretta. E dato che @code{Voice} è uno dei
788 contesti che si trovano al livello più basso, come è sottinteso senza ambiguità
789 dal fatto che stiamo inserendo delle note, in questo caso possiamo ometterlo.
791 @subsubheading Sovrascrivere una volta sola
793 @cindex sovrascrivere una volta sola
794 @cindex \once \override
798 Come puoi vedere, @emph{tutte} le legature di portamento sono più spesse nell'ultimo
799 esempio. E se volessimo rendere più spessa solo la prima legatura di portamento?
800 Dovremmo usare il comando @code{\once}. Se posto immediatamente prima
801 di @code{\override} fa sì che questo modifichi soltanto la legatura di portamento
802 che inizia sulla nota @strong{immediatamente seguente}. Se la nota immediatamente
803 seguente non inizia la legatura, il comando non ha alcun effetto -- non è
804 ricordato finché non si incontra una legatura di portamento, ma
805 viene direttamente scartato. Quindi il comando con @code{\once} deve essere riposizionato
808 @cindex Slur, esempio di sovrascrittura
809 @cindex proprietà thickness, esempio
810 @cindex thickness (spessore), esempio
812 @lilypond[quote,verbatim]
818 % Aumenta lo spessore solo della legatura che segue
819 \once \override Slur.thickness = #5.0
821 g8[( es]) es d[( f]) as |
825 The man who | feels love's sweet e -- | mo -- tion
831 Ora solo la prima legatura è più spessa.
833 Il comando @code{\once} può essere usato anche prima del comando @code{\set}.
835 @subsubheading Ripristinare
838 @cindex ripristinare le proprietà predefinite
839 @cindex proprietà predefinite, ripristinare le
843 E se volessimo che soltanto le prime due legature di portamento fossero
844 più spesse? Potremmo usare due comandi, ciascuno preceduto da
845 @code{\once}, messo immediatamente prima di ognuna delle note da cui
846 iniziano le legature:
848 @cindex Slur, esempio di sovrascrittura
849 @cindex proprietà thickness, esempio
850 @cindex thickness (spessore), esempio
852 @lilypond[quote,verbatim]
858 % Aumenta lo spessore solo della legatura che segue
859 \once \override Slur.thickness = #5.0
861 % Aumenta lo spessore solo della legatura che segue
862 \once \override Slur.thickness = #5.0
863 g8[( es]) es d[( f]) as |
867 The man who | feels love's sweet e -- | mo -- tion
873 oppure potremmo omettere il comando @code{\once} e usare il comando @code{\revert}
874 per far sì che la proprietà @code{thickness} ritorni al valore predefinito
875 dopo la seconda legatura:
877 @cindex Slur, esempio di sovrascrittura
878 @cindex proprietà thickness, esempio
879 @cindex thickness (spessore), esempio
881 @lilypond[quote,verbatim]
887 % Aumenta lo spessore di tutte le legature di portamento che seguono da 1.2 a 5.0
888 \override Slur.thickness = #5.0
891 % Ripristina lo spessore di tutte le legature di portamento che seguono al valore predefinito 1.2
892 \revert Slur.thickness
897 The man who | feels love's sweet e -- | mo -- tion
903 Il comando @code{\revert} serve a riportare qualsiasi proprietà
904 modificata con @code{\override} al suo valore predefinito.
905 Puoi usare qualsiasi metodo si adatti meglio a quello che vuoi fare.
907 Si conclude l'introduzione alla guida al Funzionamento interno e ai metodi
908 di base delle modifiche. Nelle sezioni successive di questo capitolo
909 seguiranno vari esempi, in parte per presentarti ulteriori caratteristiche
910 della guida al Funzionamento interno e in parte per farti esercitare
911 nell'estrarre informazioni da esso. Questi esempi conterranno sempre meno
912 consigli e spiegazioni.
915 @node Proprietà presenti nelle interfacce
916 @subsection Proprietà presenti nelle interfacce
917 @translationof Properties found in interfaces
920 @cindex proprietà dell'interfaccia
921 @cindex proprietà nelle interfacce
923 Supponiamo ora di voler produrre un testo vocale in corsivo. Che tipo di
924 comando @code{\override} ci serve? Consultiamo prima la pagina
925 della guida al Funzionamento interno che elenca @q{All layout objects}, come
926 prima, e cerchiamo un oggetto che potrebbe controllare il testo (in inglese
927 @emph{lyrics}). Troviamo @code{LyricText}, che sembra quello giusto. Clicchiamo
928 su di esso e troviamo le proprietà del testo. Queste comprendono @code{font-series}
929 e @code{font-size}, ma niente che possa dare una forma corsiva. Ciò è dovuto
930 al fatto che la proprietà della forma è comune a tutti gli oggetti di tipi
931 di carattere (@emph{font}). Quindi, invece di includerla in ogni oggetto di
932 formattazione, viene raggruppata insieme ad altre simili proprietà comuni
933 e inserita in un'@strong{Interfaccia}: @code{font-interface}.
935 Ora dobbiamo capire come trovare le proprietà delle interfacce e
936 come scoprire quali oggetti usano queste proprietà.
938 Torna a vedere la pagina che descrive LyricText. In fondo alla
939 pagina c'è una lista di interfacce cliccabili supportate da LyricText.
940 La lista ha molti elementi, incluso @code{font-interface}. Cliccando
941 su di essa arriviamo alle proprietà associate con questa interfaccia, che
942 sono anche le proprietà di tutti gli oggetti che la supportano, tra cui
945 Vediamo tutte le proprietà configurabili dall'utente che controllano i
946 tipi di carattere, compresa @code{font-shape(symbol)}, dove @code{symbol} può
947 essere impostato su @code{upright}, @code{italic} o @code{caps}.
949 Puoi notare che lì sono elencate anche @code{font-series} e @code{font-size}.
950 Ti potresti chiedere: perché le proprietà comuni dei tipi di carattere
951 @code{font-series} e @code{font-size} fanno parte sia dell'oggetto
952 @code{LyricText} sia dell'interfaccia @code{font-interface} mentre @code{font-shape}
953 è presente solo nell'interfaccia? Ciò è dovuto al fatto che i valori globali
954 predefiniti di @code{font-series} e @code{font-size} cambiano quando viene
955 creato un oggetto @code{LyricText}, mentre i valori di @code{font-shape} non
956 cambiano. Gli elementi in @code{LyricText} indicano quali sono i
957 valori per queste due proprietà che si applicano a @code{LyricText}. Altri
958 oggetti che supportano @code{font-interface} imposteranno queste proprietà
959 in modo diverso quando vengono creati.
961 Vediamo se ora riusciamo a costruire il comando @code{\override}
962 per rendere il testo corsivo. L'oggetto è @code{LyricText},
963 la proprietà è @code{font-shape} e il valore è
964 @code{italic}. Come in precedenza, ometteremo il contesto.
966 Per inciso, è importante notare che alcune proprietà prendono come valori
967 dei simboli, ad esempio @code{italic}; in questo caso i valori devono essere
968 preceduti da un apostrofo, @code{'}. I simboli vengono letti internamente da
969 LilyPond. Nota che sono diversi dalle stringhe di testo arbitrarie, che
970 appaiono nella forma @code{"una stringa di testo"}; maggiori informazioni sui
971 simboli e le stringhe si trovano in @rextend{Scheme tutorial}.
973 Quindi il comando @code{\override} che rende il testo corsivo è:
976 \override LyricText.font-shape = #'italic
980 Deve essere posizionato proprio di fronte al testo che vogliamo modificare,
983 @cindex proprietà font-shape, esempio
984 @cindex font-shape, esempio
985 @cindex italic, esempio
986 @cindex corsivo, esempio
987 @cindex LyricText, esempio di sovrascrittura
988 @cindex @code{\addlyrics}, esempio
990 @lilypond[quote,ragged-right,verbatim]
995 r4 bes'8 bes[( g]) g |
996 g8[( es]) es d[( f]) as |
1000 \override LyricText.font-shape = #'italic
1001 The man who | feels love's sweet e -- | mo -- tion
1007 e tutto il testo è in corsivo.
1009 @warning{Nel testo bisogna lasciare sempre uno spazio bianco tra l'ultima
1010 sillaba e la parentesi graffa che chiude il blocco.}
1014 Estendere: @rextend{Scheme tutorial}.
1017 @node Tipi di proprietà
1018 @subsection Tipi di proprietà
1019 @translationof Types of properties
1021 @cindex tipi di proprietà
1022 @cindex proprietà, tipi di
1024 Finora abbiamo visto due tipi di proprietà: @code{number} e
1025 @code{symbol}. Per essere valido, il valore dato a una proprietà
1026 deve essere del tipo corretto e obbedire alle regole di quel tipo.
1027 Nella guida al Funzionamento interno il tipo di proprietà è indicato
1028 tra parentesi dopo il nome della proprietà. Ecco una lista dei tipi
1029 che ti possono servire, corredata dalle regole per ciascun tipo e da alcuni
1030 esempi. Ovviamente, se inseriti in un comando @code{\override}, devono
1031 essere sempre preceduti dal simbolo di cancelletto,@tie{}@code{#}, anche se
1032 il valore stesso già inizia con@tie{}@code{#}. In questa sede diamo solo
1033 esempi di costanti: se si desidera elaborare un valore con Scheme, si veda
1034 @rextend{Calculations in Scheme}.
1036 @multitable @columnfractions .2 .45 .35
1037 @headitem Tipo di proprietà
1041 @tab O Vero (True) o Falso (False), rappresentato da #t o #f
1042 @tab @code{#t}, @code{#f}
1043 @item Dimension (in staff space)
1044 @tab Un numero decimale (nell'unità di misura dello spazio del rigo)
1045 @tab @code{2.5}, @code{0.34}
1047 @tab Una valida direzione costante o il suo equivalente numerico
1048 (@code{0} o @code{CENTER} indicano una direzione neutrale)
1049 @tab @code{LEFT}, @code{CENTER}, @code{UP},
1050 @code{1}, @w{@code{-1}}
1052 @tab Un numero intero
1053 @tab @code{3}, @code{-1}
1055 @tab Una sequenza di costanti o simboli separata da spazi, racchiusa
1056 tra parentesi e preceduta da un apostrofo
1057 @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
1058 @code{'(1.0 0.25 0.5)}
1060 @tab Qualsiasi valido blocco markup
1061 @tab @code{\markup @{ \italic "cresc." @}}, @code{"bagpipe"}
1063 @tab Una frazione di una nota intera costruita con la
1064 funzione make-moment
1065 @tab @code{(ly:make-moment 1/4)},
1066 @code{(ly:make-moment 3/8)}
1068 @tab Qualsiasi valore positivo o negativo, possibilmente decimale
1069 @tab @code{3}, @w{@code{-2.45}}
1070 @item Pair (of numbers)
1071 @tab Due numeri separati da un @q{spazio . spazio} e racchiusi tra
1072 parentesi precedute da un apostrofo
1073 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1075 @tab Qualsiasi insieme di simboli ammesso per quella proprietà,
1076 preceduto da un apostrofo
1077 @tab @code{'italic}, @code{'inside}
1079 @tab Una procedura o un valore @code{#f} che impedisca l'azione
1080 @tab @code{bend::print}, @code{ly:text-interface::print},
1084 racchiuse tra @code{#(}@dots{}@code{)}.
1085 @tab @code{#(#t #t #f)}
1090 Estendere: @rextend{Scheme tutorial}.
1093 @node Aspetto degli oggetti
1094 @section Aspetto degli oggetti
1095 @translationof Appearance of objects
1097 Mettiamo in pratica quello che abbiamo imparato con un po' di
1098 esempi che mostrano come modificare l'aspetto degli elementi
1102 * Visibilità e colore degli oggetti::
1103 * Dimensione degli oggetti::
1104 * Lunghezza e spessore degli oggetti::
1107 @node Visibilità e colore degli oggetti
1108 @subsection Visibilità e colore degli oggetti
1109 @translationof Visibility and color of objects
1111 Potremmo voler creare una partitura priva di alcuni elementi a
1112 scopo didattico, perché lo studente possa esercitarsi
1113 a inserirli. Vediamo un semplice esempio e immaginiamo che
1114 l'esercizio consista nell'inserire le stanghette mancanti
1115 di un brano. Ma di norma le stanghette sono inserite
1116 automaticamente: come lo possiamo impedire?
1118 Prima di iniziare, occorre ricordare che le proprietà degli oggetti sono
1119 raggruppate nelle cosiddette @emph{interfacce} -- si veda
1120 @ref{Proprietà presenti nelle interfacce}. Queste servono semplicemente a raggruppare
1121 quelle proprietà che possono essere usate insieme per modificare un oggetto
1122 grafico -- se una di queste è ammessa per un oggetto, lo sono anche le
1123 altre. Alcuni oggetti usano le proprietà di alcune interfacce, altri
1124 quelle di altre interfacce. Le interfacce che contengono le proprietà
1125 usate da un particolare grob (oggetto grafico) sono elencate nella guida al
1126 Funzionamento interno in fondo alla pagina che descrive il grob; queste
1127 proprietà possono essere individuate consultando quelle interfacce.
1129 In @ref{Proprietà degli oggetti di formattazione} abbiamo spiegato come trovare le
1130 informazioni sui grob. Usando lo stesso approccio, andiamo nella guida
1131 al Funzionamento interno per trovare l'oggetto grafico relativo alla
1132 stanghetta (@emph{bar line}). Passando da @emph{Backend} e @emph{All layout objects}
1133 troviamo un oggetto grafico chiamato @code{BarLine}. Tra le sue proprietà ce ne sono
1134 due che controllano la visibilità: @code{break-visibility} e @code{stencil}. Anche
1135 Barline supporta varie interfacce, tra cui la @code{grob-interface},
1136 dove troviamo le proprietà @code{transparent} e @code{color}.
1137 Tutte queste proprietà hanno degli effetti sulla visibilità delle stanghette (e,
1138 ovviamente, anche di molti altri oggetti grafici). Vediamole una per
1142 * La proprietà stencil::
1143 * La proprietà break-visibility::
1144 * La proprietà transparent::
1145 * La proprietà color::
1148 @node La proprietà stencil
1149 @unnumberedsubsubsec La proprietà @code{stencil}
1150 @translationof The stencil property
1152 @cindex proprietà stencil
1153 @cindex stencil, proprietà
1155 Questa proprietà controlla l'aspetto delle stanghette specificando il
1156 simbolo (glifo) da usare. Come nel caso di molte altre proprietà,
1157 si può far in modo che non usi nessun simbolo impostando il suo
1158 valore su @code{#f}. Proviamo, come prima, omettendo il contesto
1159 implicito, @code{Voice}:
1161 @cindex BarLine, esempio di sovrascrittura
1162 @cindex proprietà stencil, esempio
1163 @cindex stencil, esempio
1165 @lilypond[quote,ragged-right,verbatim]
1168 \override BarLine.stencil = ##f
1169 c''4 b8 c d16 c d8 |
1170 g,8 a16 b8 c d4 e16 |
1175 Le stanghette sono ancora visibili. Cosa abbiamo sbagliato? Torna alla
1176 guida del Funzionamento interno e scorri di nuovo la pagina che elenca
1177 le proprietà di BarLine. In cima alla pagina dice @qq{Barline objects are
1178 created by: Bar_engraver}. Vai alla pagina @code{Bar_engraver}. In fondo
1179 si trova una lista dei contesti nel quale opera l'incisore della battuta.
1180 Tutti questi sono di tipo @code{Staff}, dunque la ragione per cui il comando
1181 @code{\override} precedente non funziona è che @code{Barline} non si trova
1182 nel contesto predefinito, @code{Voice}. Se il contesto indicato non è
1183 corretto, il comando non funziona. Non viene generato alcun messaggio
1184 di errore e non viene registrato niente nel file di log. Proviamo a
1185 correggerlo specificando il contesto giusto:
1187 @cindex BarLine, esempio di sovrascrittura
1188 @cindex proprietà stencil, esempio
1189 @cindex stencil, esempio
1191 @lilypond[quote,ragged-right,verbatim]
1194 \override Staff.BarLine.stencil = ##f
1195 c''4 b8 c d16 c d8 |
1196 g,8 a16 b8 c d4 e16 |
1201 Ora le stanghette sono sparite. Impostare la proprietà @code{stencil}
1202 su @code{#f} è un'operazione talmente frequente che è stata creata una
1203 scorciatoia, @code{\omit}:
1206 @lilypond[quote,ragged-right,verbatim]
1210 c''4 b8 c d16 c d8 |
1211 g,8 a16 b8 c d4 e16 |
1216 Si noti però che impostare la proprietà @code{stencil} su @code{#f}
1217 causerà degli errori nel caso in cui le dimensioni dell'oggetto
1218 siano necessarie per elaborarlo correttamente. Ad esempio, si creano
1219 degli errori se la proprietà @code{stencil} dell'oggetto @code{NoteHead} è
1220 impostata su @code{#f}. In questo caso è possibile usare invece la funzione
1221 @code{point-stencil}, che trasforma lo stencil in un oggetto a dimensione
1224 @lilypond[quote,verbatim]
1227 \once \override NoteHead.stencil = #point-stencil
1232 @node La proprietà break-visibility
1233 @unnumberedsubsubsec La proprietà @code{break-visibility}
1234 @translationof The break-visibility property
1236 @cindex proprietà break-visibility
1237 @cindex break-visibility, proprietà
1239 Nella pagina di @code{BarLine} della guida al Funzionamento interno
1240 vediamo che la proprietà @code{break-visibility} richiede un vettore di
1241 tre valori booleani.
1242 Questi valori controllano rispettivamente se le stanghette debbano
1243 comparire alla fine, in mezzo o all'inizio dei righi. Dato
1244 che nel nostro esempio vogliamo sopprimere tutte le stanghette, il valore
1245 che ci serve è @code{#(#f #f #f)} (equivalente al nome @code{all-invisible}).
1246 Proviamo, ricordando di includere il contesto @code{Staff}. Si noti che prima
1247 della parentesi di apertura abbiamo @code{##}. Un @code{#} è necessario
1248 perché introduce un vettore, mentre il primo@tie{}@code{#} deve precedere, come
1249 sempre, il valore del comando @code{\override}.
1251 @cindex BarLine, esempio di sovrascrittura
1252 @cindex proprietà break-visibility, esempio
1253 @cindex break-visibility, esempio
1255 @lilypond[quote,ragged-right,verbatim]
1258 \override Staff.BarLine.break-visibility = ##(#f #f #f)
1259 c''4 b8 c d16 c d8 |
1260 g,8 a16 b8 c d4 e16 |
1265 E vediamo che anche questo comando elimina tutte le stanghette.
1267 @node La proprietà transparent
1268 @unnumberedsubsubsec La proprietà @code{transparent}
1269 @translationof The transparent property
1271 @cindex proprietà transparent
1272 @cindex transparent, proprietà
1275 Nelle proprietà specificate nella pagina @code{grob-interface} della
1276 guida al Funzionamento interno vediamo che la proprietà @code{transparent} è
1277 un booleano. Quindi deve essere impostata su @code{#t} («true», 'vero') per
1278 rendere trasparente il grob. Nel prossimo esempio rendiamo trasparente
1279 il segno di tempo invece delle stanghette. Per farlo dobbiamo trovare
1280 il nome del grob del segno di tempo (in inglese @emph{time signature}).
1281 Torniamo alla pagina @q{All layout objects} per scoprire quali sono le
1282 proprietà dell'oggetto di formattazione @code{TimeSignature}. Tale grob
1283 è generato dall'incisore @code{Time_signature_engraver}, che opera
1284 nel contesto @code{Staff} e supporta l'interfaccia @code{grob-interface}.
1285 Quindi il comando che rende trasparente l'indicazione di tempo è:
1287 @cindex TimeSignature, esempio di sovrascrittura
1288 @cindex proprietà transparent, esempio
1289 @cindex transparent, esempio
1291 @lilypond[quote,ragged-right,verbatim]
1294 \override Staff.TimeSignature.transparent = ##t
1295 c''4 b8 c d16 c d8 |
1296 g,8 a16 b8 c d4 e16 |
1302 Impostare la proprietà @code{transparent} è un'operazione piuttosto
1303 frequente, perciò è stata creata la scorciatoia @code{\hide}:
1306 @lilypond[quote,ragged-right,verbatim]
1309 \hide Staff.TimeSignature
1310 c''4 b8 c d16 c d8 |
1311 g,8 a16 b8 c d4 e16 |
1317 L'indicazione di tempo è scomparsa; è rimasto però uno spazio al suo posto. Magari
1318 questo è quello che si desidera, ad esempio per creare un esercizio in cui uno
1319 studente deve riempire degli spazi vuoti. Ma in altre circostanze ciò può
1320 non essere gradito. Per eliminare lo spazio vuoto bisogna impostare la
1321 proprietà stencil su @code{#f}:
1323 @cindex TimeSignature, esempio di sovrascrittura
1324 @cindex proprietà stencil, esempio
1325 @cindex stencil, esempio
1327 @lilypond[quote,ragged-right,verbatim]
1330 \omit Staff.TimeSignature
1331 c''4 b8 c d16 c d8 |
1332 g,8 a16 b8 c d4 e16 |
1338 la differenza è ovvia: se si imposta lo stencil su @code{#f} (possibilmente
1339 con @code{\omit}) l'oggetto scompare del tutto; se si rende l'oggetto
1340 @code{trasparente} questo resta dove è, anche se invisibile.
1342 @node La proprietà color
1343 @unnumberedsubsubsec La proprietà @code{color}
1344 @translationof The color property
1346 @cindex proprietà color
1347 @cindex color, proprietà
1349 Infine, proviamo a rendere le stanghette invisibili colorandole
1350 di bianco. (Si tratta di un metodo problematico perché la
1351 stanghetta bianca può imbiancare o meno le linee del rigo che
1352 incrocia. Puoi vedere in alcuni degli esempi successivi che questo
1353 accade in modo imprevedibile. I motivi per cui questo accade e il
1354 modo in cui è possibile controllarlo sono esposti in @ruser{Dipingere gli oggetti di bianco}.
1355 Ma per il momento stiamo imparando la proprietà color, quindi accettiamo questa limitazione.)
1357 L'interfaccia @code{grob-interface} stabilisce che il valore della
1358 proprietà color è una lista, ma non spiega cosa debba essere questa
1359 lista. La lista di cui ha bisogno è in realtà una lista di valori
1360 in unità interne, ma per evitare di dover imparare quali siano queste
1361 unità vengono forniti vari modi di specificare un colore. Il primo
1362 modo consiste nell'usare uno dei colori @q{normali} elencati nella
1363 prima tabella in @ruser{Elenco dei colori}. Per rendere bianche le
1364 stanghette scriviamo:
1366 @cindex BarLine, esempio di sovrascrittura
1367 @cindex proprietà color
1368 @cindex color, proprietà
1370 @lilypond[quote,ragged-right,verbatim]
1373 \override Staff.BarLine.color = #white
1374 c''4 b8 c d16 c d8 |
1375 g,8 a16 b8 c d4 e16 |
1381 e di nuovo vediamo che le stanghette non sono visibili. Si noti
1382 che @emph{white} non è preceduto da un apostrofo, perché non
1383 è un simbolo, ma una @emph{variabile}. Quando viene esaminata, fornisce
1384 la lista di valori interni necessari per impostare il colore su
1385 bianco. Gli altri colori nella lista normale sono anch'essi
1386 delle variabili. Per convincerti che funziona potresti provare a
1387 cambiare il colore e usare una delle altre variabili presenti
1396 Il secondo modo per cambiare il colore è attraverso la lista
1397 di nomi di colori X11 che si trova in @ruser{Elenco dei colori}.
1398 Questi colori vengono trasformati in valori reali dalla funzione
1399 @code{x11-color}, che converte i simboli di colore X11 nella lista
1402 @cindex BarLine, esempio di sovrascrittura
1403 @cindex proprietà color, esempio
1404 @cindex color, esempio
1406 @lilypond[quote,ragged-right,verbatim]
1409 \override Staff.BarLine.color = #(x11-color 'white)
1410 c''4 b8 c d16 c d8 |
1411 g,8 a16 b8 c d4 e16 |
1417 Si noti che in questo caso la funzione @code{x11-color} prende
1418 un simbolo come argomento, dunque il simbolo deve essere preceduto
1419 da un apostrofo per impedire che sia considerato una variabile e
1420 l'intera funzione deve essere racchiusa tra parentesi.
1428 Esiste un'altra funzione, che converte i valori RGB in colori
1429 interni, la funzione @code{rgb-color}. Prende tre argomenti
1430 che specificano l'intensità dei colori rosso, verde e blu.
1431 I valori vanno da 0 a 1. Quindi per avere il colore rosso
1432 il valore sarà @code{(rgb-color 1 0 0)}
1433 e per avere il bianco sarà @code{(rgb-color 1 1 1)}:
1435 @cindex BarLine, esempio di sovrascrittura
1436 @cindex proprietà color, esempio
1437 @cindex color, esempio
1439 @lilypond[quote,ragged-right,verbatim]
1442 \override Staff.BarLine.color = #(rgb-color 1 1 1)
1443 c''4 b8 c d16 c d8 |
1444 g,8 a16 b8 c d4 e16 |
1449 Infine, è disponibile anche una scala di grigi, appartenente all'insieme
1450 di colori X11. Questi vanno dal nero, @code{'grey0},
1451 al bianco, @code{'grey100}, con cadenza di 1. Ecco un
1452 esempio in cui tutti gli oggetti di formattazione sono
1453 impostati su diverse tonalità di grigio:
1455 @cindex StaffSymbol, esempio di sovrascrittura
1456 @cindex TimeSignature, esempio di sovrascrittura
1457 @cindex Clef, esempio di sovrascrittura
1458 @cindex NoteHead, esempio di sovrascrittura
1459 @cindex Stem, esempio di sovrascrittura
1460 @cindex BarLine, esempio di sovrascrittura
1461 @cindex proprietà color, esempio
1462 @cindex color, esempio
1463 @cindex x11-color, esempio di utilizzo
1465 @lilypond[quote,ragged-right,verbatim]
1468 \override Staff.StaffSymbol.color = #(x11-color 'grey30)
1469 \override Staff.TimeSignature.color = #(x11-color 'grey60)
1470 \override Staff.Clef.color = #(x11-color 'grey60)
1471 \override Voice.NoteHead.color = #(x11-color 'grey85)
1472 \override Voice.Stem.color = #(x11-color 'grey85)
1473 \override Staff.BarLine.color = #(x11-color 'grey10)
1474 c''4 b8 c d16 c d8 |
1475 g,8 a16 b8 c d4 e16 |
1481 Nota i contesti associati a ciascuno degli oggetti di formattazione.
1482 È importante scegliere quelli giusti, altrimenti i comandi non
1483 funzioneranno! Ricorda, il contesto è quello in cui si trova il
1484 relativo incisore. Il contesto predefinito per gli incisori si trova
1485 partendo dall'oggetto di formattazione (@emph{layout object}) per poi
1486 andare all'incisore che lo produce: la pagina dell'incisore nella
1487 guida al Funzionamento interno riporterà a quale contesto
1488 appartenga di norma l'incisore.
1491 @node Dimensione degli oggetti
1492 @subsection Dimensione degli oggetti
1493 @translationof Size of objects
1495 @cindex modificare la dimensione degli oggetti
1496 @cindex dimensione degli oggetti
1497 @cindex oggetti, dimensione degli
1498 @cindex oggetti, modificare la dimensione degli
1500 Iniziamo rivedendo l'esempio precedente (vedi
1501 @ref{Annidare le espressioni musicali}) che mostrava come
1502 inserire un nuovo rigo temporaneo, come in un @rglos{ossia}.
1504 @cindex proprietà alignAboveContext, esempio
1505 @cindex @code{\with}, esempio
1507 @lilypond[quote,ragged-right,verbatim]
1508 \new Staff ="main" {
1515 alignAboveContext = #"main" }
1523 Gli ossia di norma vengono scritti senza chiave e senza indicazione di
1524 tempo e hanno solitamente una dimensione leggermente inferiore a
1525 quella del rigo principale. Sappiamo già come togliere la chiave e
1526 il segno di tempo, cioè impostando semplicemente la proprietà stencil di
1527 ciascun oggetto su @code{#f}, così:
1529 @cindex proprietà alignAboveContext, esempio
1530 @cindex @code{\with}, esempio
1532 @cindex Clef, esempio di sovrascrittura
1533 @cindex TimeSignature, esempio di sovrascrittura
1535 @lilypond[quote,ragged-right,verbatim]
1536 \new Staff ="main" {
1543 alignAboveContext = #"main"
1547 \omit Staff.TimeSignature
1557 dove l'ulteriore coppia di parentesi dopo il blocco @code{\with} è
1558 necessaria perché le sovrascritture e la musica racchiusi
1559 siano applicati al rigo dell'ossia.
1561 Ma qual è la differenza tra modificare il contesto del rigo con
1562 @code{\with} e modificare la proprietà stencil della chiave e
1563 del segno di tempo con @code{\override} o in questo caso @code{\omit}? La
1564 principale differenza è che le modifiche inserite in un blocco @code{\with}
1565 vengono applicate nel momento in cui viene creato il contesto e permangono
1566 come valori @strong{predefiniti} per la durata di quel contesto, mentre i
1567 comandi @code{\set} o @code{\override} incorporati nel blocco
1568 della musica sono dinamici -- le loro modifiche sono sincronizzate
1569 con un punto preciso della musica. Se le modifiche sono disattivate o
1570 ripristinate con @code{\unset} o @code{\revert} tornano ai valori
1571 stabiliti nel blocco @code{\with} o, in mancanza di impostazioni
1572 al suo interno, a quelli predefiniti.
1574 Alcune proprietà di contesto possono essere modificate solo nei blocchi
1575 @code{\with}. Si tratta di quelle proprietà che non si possono
1576 modificare in seguito alla creazione del contesto. @code{alignAboveContext} e
1577 @code{alignBelowContext} sono due di esse: dopo la creazione
1578 del rigo il suo allineamento è fissato, e non ha
1579 senso tentare di cambiarlo successivamente.
1581 I valori predefiniti delle proprietà degli oggetti di formattazione possono
1582 essere definiti anche nei blocchi @code{\with}. Basta usare il normale comando
1583 @code{\override} senza specificare il nome del contesto, dato che questo è
1584 definito senza ambiguità come il contesto che il blocco @code{\with} sta
1585 modificando. Anzi, viene generato un errore se si specifica un contesto
1586 in questa situazione.
1588 Dunque possiamo sostituire l'esempio precedente con
1590 @cindex alignAboveContext property, esempio
1591 @cindex @code{\with}, esempio
1592 @cindex Clef, esempio di sovrascrittura
1593 @cindex TimeSignature, esempio di sovrascrittura
1595 @lilypond[quote,ragged-right,verbatim]
1596 \new Staff ="main" {
1603 alignAboveContext = #"main"
1604 % Nasconde le chiavi di questo rigo
1605 \override Clef.stencil = ##f
1606 % Nasconde le indicazioni di tempo di questo rigo
1607 \override TimeSignature.stencil = ##f
1616 Si possono usare anche le scorciatoie @code{\hide} e @code{\omit} per
1617 impostare la proprietà @code{transparent} e togliere lo @code{stencil}
1619 @lilypond[quote,ragged-right,verbatim]
1620 \new Staff ="main" {
1627 alignAboveContext = #"main"
1628 % Nasconde le chiavi di questo rigo
1630 % Nasconde le indicazioni di tempo di questo rigo
1640 Infine arriviamo a modificare la dimensione degli oggetti di formattazione.
1642 Alcuni oggetti di formattazione sono dei glifi scelti da un tipo di
1643 carattere. Ad esempio le teste di nota, le alterazioni, le annotazioni,
1644 le chiavi, le indicazioni di tempo, le dinamiche, il testo vocale. La loro dimensione
1645 varia se si modifica la proprietà @code{font-size}, come vedremo a
1646 breve. Altri oggetti di formattazione come le legature di portamento e
1647 di valore -- in generale, tutti gli oggetti estensori (@emph{spanner}) -- vengono
1648 disegnati individualmente, dunque non esiste un @code{font-size} a loro
1649 associato. Questi oggetti generalmente derivano la loro dimensione dagli
1650 oggetti a cui sono connessi, quindi di solito non è necessario modificare
1651 la loro dimensione a mano. Altre proprietà, come la lunghezza dei gambi
1652 e delle stanghette, lo spessore delle travature e di altre linee e la
1653 separazione delle linee del rigo, devono essere modificate in modi speciali.
1655 Tornando all'esempio dell'ossia, proviamo prima a cambiare font-size.
1656 Possiamo farlo in due modi. Possiamo modificare la dimensione dei
1657 tipi di carattere di ogni tipo di oggetto, come le teste di nota
1658 (@code{NoteHead}) con un comando di questo tipo
1661 \override NoteHead.font-size = #-2
1664 oppure possiamo modificare la dimensione di tutti i tipi di carattere usando
1665 una proprietà speciale, @code{fontSize}, con @code{\set} oppure includendola
1666 in un blocco @code{\with} (ma senza @code{\set}).
1672 Entrambe queste dichiarazioni fanno sì che la dimensione del tipo di carattere
1673 sia ridotta di due unità rispetto al valore precedente, dove ogni unità
1674 riduce o aumenta la dimensione di circa il 12%.
1676 Proviamolo nel nostro esempio dell'ossia:
1678 @cindex alignAboveContext property, esempio
1679 @cindex @code{\with}, esempio
1680 @cindex Clef, esempio di sovrascrittura
1681 @cindex TimeSignature, esempio di sovrascrittura
1682 @cindex proprietà fontSize, esempio
1683 @cindex fontSize, esempio
1685 @lilypond[quote,ragged-right,verbatim]
1686 \new Staff ="main" {
1693 alignAboveContext = #"main"
1696 % Riduce la dimensione di tutti i tipi di carattere di circa il 24%
1706 L'esempio non è ancora a posto. Le teste di nota e le code sono
1707 più piccole, ma in proporzione i gambi sono troppo lunghi e le linee
1708 del rigo sono troppo separate. Dovrebbero essere scalati in proporzione
1709 alla riduzione del tipo di carattere. La prossima sezione spiega come
1712 @node Lunghezza e spessore degli oggetti
1713 @subsection Lunghezza e spessore degli oggetti
1714 @translationof Length and thickness of objects
1717 @cindex thickness, proprietà
1721 @cindex dimensione, modificare la
1722 @cindex lunghezza del gambo, modificare la
1723 @cindex spaziatura delle linee del rigo, modificare la
1725 Distanze e lunghezze in LilyPond sono misurate generalmente in @code{staff-space},
1726 ovvero la distanza tra linee adiacenti del rigo (o talvolta la metà di uno
1727 spazio rigo), mentre gran parte delle proprietà che controllano lo spessore
1728 (@code{thickness}) sono misurate con l'unità di misura di una proprietà
1729 interna chiamata @code{line-thickness.} Ad esempio, lo spessore predefinito
1730 delle linee delle forcine è di 1 unità di @code{line-thickness},
1731 mentre lo spessore (@code{thickness}) di un gambo di nota è 1.3. Si noti
1732 che alcune proprietà dello spessore sono diverse; per esempio, lo spessore
1733 delle travature è controllato dal valore della proprietà @code{beam-thickness},
1734 che si misura in @code{staff-space}.
1736 Dunque come si possono scalare le lunghezze in proporzione alla
1737 dimensione del carattere?
1738 È possibile ricorrendo a una funzione speciale chiamata
1739 @code{magstep}, che serve proprio a questo scopo. Prende un
1740 argomento, la modifica della dimensione del tipo di carattere (#-2
1741 nell'esempio precedente) e restituisce un fattore di ridimensionamento
1742 adatto a ridurre gli altri oggetti proporzionalmente. Si usa in
1745 @cindex proprietà alignAboveContext, esempio
1746 @cindex alignAboveContext, esempio
1747 @cindex @code{\with}, esempio
1748 @cindex Clef, esempio di sovrascrittura
1749 @cindex TimeSignature, esempio di sovrascrittura
1750 @cindex proprietà fontSize, esempio
1751 @cindex fontSize, esempio
1752 @cindex StaffSymbol, esempio di sovrascrittura
1753 @cindex funzione magstep, esempio di uso
1754 @cindex magstep, esempio di uso
1755 @cindex proprietà staff-space, esempio
1756 @cindex staff-space, esempio
1757 @cindex proprietà stencil, esempio
1758 @cindex stencil, esempio
1760 @lilypond[quote,ragged-right,verbatim]
1761 \new Staff ="main" {
1768 alignAboveContext = #"main"
1772 % Riduce proporzionalmente la lunghezza dei gambi e la spaziatura tra le linee
1773 \override StaffSymbol.staff-space = #(magstep -2)
1783 Dato che la lunghezza dei gambi e molte altre proprietà relative alla
1784 lunghezza sono sempre calcolate in relazione al valore della proprietà
1785 @code{staff-space}, anche queste sono automaticamente ridimensionate
1786 in lunghezza. Nota che ciò riguarda solo la scala verticale
1787 dell'ossia -- la scala orizzontale è determinata dalla formattazione
1788 della musica principale perché deve restare sincronizzata con quest'ultima,
1789 quindi le modifiche di dimensione non la riguardano. Ovviamente, se
1790 la scala di tutta la musica principale venisse cambiata allora la
1791 spaziatura orizzontale cambierebbe. Tratteremo questo argomento più
1792 avanti, nella parte relativa alla formattazione.
1794 Questo completa la creazione dell'ossia. Le dimensioni e le lunghezze
1795 di tutti gli altri oggetti possono essere modificati in modi analoghi.
1797 Per piccole modifiche della dimensione, come nell'esempio precedente, non
1798 sono necessari solitamente degli aggiustamenti globali dello spessore delle
1799 varie linee disegnate (come stanghette, travature, forcine, legature di
1800 portamento, etc.). Se si deve aggiustare lo spessore di un
1801 particolare oggetto di formattazione, è meglio sovrascrivere la sua
1802 proprietà @code{thickness}. Un esempio di come modificare lo spessore
1803 delle legature di portamento è stato mostrato prima in @ref{Proprietà degli oggetti di formattazione}.
1804 Lo spessore di tutti gli oggetti disegnati (ovvero quelli non prodotti
1805 da un tipo di carattere) può essere cambiato nello stesso modo.
1808 @node Posizionamento degli oggetti
1809 @section Posizionamento degli oggetti
1810 @translationof Placement of objects
1813 * Comportamento automatico::
1814 * Oggetti interni al rigo::
1815 * Oggetti esterni al rigo::
1819 @node Comportamento automatico
1820 @subsection Comportamento automatico
1821 @translationof Automatic behavior
1823 @cindex within-staff, oggetti
1824 @cindex outside-staff, oggetti
1825 @cindex oggetti dentro il rigo
1826 @cindex oggetti fuori dal rigo
1828 Nella notazione musicale, alcuni oggetti appartengono al rigo, altri
1829 devono esserne posizionati al di fuori. In LilyPond si chiamano rispettivamente oggetti within-staff
1830 (dentro il rigo) e oggetti outside-staff (fuori dal rigo).
1832 Gli oggetti within-staff sono quelli che si trovano nel rigo, come
1833 le teste e i gambi delle note, le alterazioni, etc@dots{} La loro posizione
1834 è determinata perlopiù dalla musica stessa: in verticale sono collocati
1835 su determinate posizioni del rigo o sono collegati
1836 ad altri oggetti disposti in questo modo. Di norma LilyPond evita
1837 automaticamente le collisioni tra teste di nota, gambi e alterazioni
1838 in accordi con note ravvicinate. Esistono comunque dei comandi che
1839 permettono di modificare questo comportamento automatico, come
1842 Gli oggetti che appartengono allo spazio fuori dal rigo comprendono
1843 gli andamenti, i numeri di chiamata, il testo vocale, le indicazioni dinamiche. Il comportamento di
1844 LilyPond per il posizionamento verticale degli oggetti outside-staff
1845 prevede che questi vengano collocati il più vicino possibile al rigo, mantenendo
1846 però una distanza sufficiente da evitare collisioni con gli altri oggetti. LilyPond
1847 usa la proprietà @code{outside-staff-priority} per determinare in quale ordine
1848 gli oggetti siano posizionati.
1850 Per prima cosa LilyPond posiziona tutti gli oggetti within-staff.
1851 Poi ordina gli oggetti outside-staff in base alla loro proprietà
1852 @code{outside-staff-priority}. Gli oggetti outside-staff vengono
1853 considerati uno a uno, a partire dall'oggetto che ha il valore più basso
1854 di priorità (@code{outside-staff-priority}), e disposti in modo
1855 da non entrare in collisione con alcun oggetto già posizionato.
1856 Questo significa che se due oggetti outside-staff si contendono lo
1857 stesso spazio, quello col valore più basso di @code{outside-staff-priority}
1858 sarà più vicino al rigo. Se due oggetti presentano lo stesso valore per
1859 @code{outside-staff-priority}, quello incontrato per primo viene posizionato
1862 Nell'esempio seguente tutti i testi hanno la stessa priorità (perché
1863 questa non è impostata in modo esplicito). Come puoi vedere, @q{Testo3}
1864 è di nuovo posto automaticamente in prossimità del rigo, infilato
1867 @cindex markup, esempio
1869 @lilypond[quote,fragment,ragged-right,verbatim]
1876 Di norma, anche i righi sono collocati quanto più possibile ravvicinati
1877 (ma con una distanza minima). Se delle note si estenderanno molto
1878 al di fuori del rigo, fino a quello adiacente, costringeranno i righi a distanziarsi
1879 solo in caso di sovrapposizione degli elementi della notazione. L'esempio
1880 seguente mostra questo @q{annidamento} delle note su righi adiacenti:
1882 @lilypond[quote,ragged-right,verbatim]
1885 \relative { c'4 a, }
1888 \relative { c''''4 a, }
1894 @node Oggetti interni al rigo
1895 @subsection Oggetti interni al rigo
1896 @translationof Within-staff objects
1898 Abbiamo già visto come i comandi @code{\voiceXXX} influenzino
1899 la direzione di legature di portamento e di valore, delle diteggiature e
1900 di qualsiasi altro elemento che dipenda dalla direzione dei gambi (vedi
1901 @ref{Definire esplicitamente le voci}).
1902 Questi comandi sono fondamentali quando si scrive musica polifonica,
1903 perché permettono di distinguere le linee melodiche che si intrecciano.
1904 Talvolta, però, capita di voler modificare questo comportamento
1905 automatico. Si può fare per intere sezioni musicali o anche per
1906 una singola nota. La proprietà che controlla questo comportamento
1907 è la proprietà @code{direction} di ogni oggetto di formattazione.
1908 Spieghiamo prima che cosa fa e poi presentiamo alcuni comandi
1909 già pronti, che ti eviteranno di dover scrivere sovrascritture
1910 esplicite per le modifiche più comuni.
1912 Alcuni oggetti di formattazione, come le legature di portamento e di
1913 valore, si incurvano, si piegano o puntano verso l'alto o il basso; altri,
1914 come i gambi e le code, a seconda dell'orientamento si dispongono anche sulla
1915 destra o sulla sinistra. Tutto questo viene controllato automaticamente
1916 quando si imposta la proprietà @code{direction}.
1919 * La proprietà direction::
1923 @node La proprietà direction
1924 @unnumberedsubsubsec La proprietà @code{direction}
1925 @translationof The direction property
1928 @cindex direzione, giù
1930 @cindex direzione, su
1932 @cindex direzione, centrale
1934 @cindex direzione, neutrale
1936 L'esempio seguente mostra il posizionamento predefinito delle legature di
1937 portamento nella prima battuta, con legature che iniziano sulle note
1938 alte poste sopra le note e quelle che iniziano sulle note basse posizionate
1939 sotto, seguita da una battuta con entrambe le legature forzate verso il
1940 basso, un'altra battuta con entrambe le legatura forzate verso l'alto e infine
1941 una battuta con entrambe le legature ripristinate al comportamento predefinito.
1943 @cindex Slur, esempio di sovrascrittura
1944 @cindex legatura di portamento, esempio di sovrascrittura
1945 @cindex proprietà direction, esempio
1946 @cindex direction, esempio
1948 @lilypond[quote,fragment,verbatim]
1950 \override Slur.direction = #DOWN
1952 \override Slur.direction = #UP
1954 \revert Slur.direction
1958 Abbiamo usato le costanti @code{DOWN} (giù) e @code{UP} (su).
1959 Queste hanno rispettivamente i valori @w{@code{-1}} e @code{+1}, ed
1960 è possibile usare tali valori numerici al loro posto. In alcuni casi
1961 si può usare anche il valore @code{0}, che significa @code{UP} per le
1962 legature di portamento, ma per alcuni oggetti significa @q{center} (centro).
1963 Esiste una costante, @code{CENTER} che ha valore @code{0}.
1965 Tuttavia queste sovrascritture esplicite solitamente non vengono usate, perché
1966 ci sono dei comandi predefiniti equivalenti e più semplici. Ecco una tabella
1967 con quelli più utilizzati; il significato di ognuno è esplicitato laddove
1970 @multitable @columnfractions .2 .2 .25 .35
1971 @headitem Giù/Sinistra
1975 @item @code{\arpeggioArrowDown}
1976 @tab @code{\arpeggioArrowUp}
1977 @tab @code{\arpeggioNormal}
1978 @tab Aggiunge una freccia in fondo, in cima o toglie la freccia
1979 @item @code{\dotsDown}
1981 @tab @code{\dotsNeutral}
1982 @tab Direzione dello spostamento per evitare le linee del rigo
1983 @item @code{\dynamicDown}
1984 @tab @code{\dynamicUp}
1985 @tab @code{\dynamicNeutral}
1987 @item @code{\phrasingSlurDown}
1988 @tab @code{\phrasingSlurUp}
1989 @tab @code{\phrasingSlurNeutral}
1990 @tab Nota: è diverso dai comandi slur
1991 @item @code{\slurDown}
1993 @tab @code{\slurNeutral}
1995 @item @code{\stemDown}
1997 @tab @code{\stemNeutral}
1999 @item @code{\textSpannerDown}
2000 @tab @code{\textSpannerUp}
2001 @tab @code{\textSpannerNeutral}
2002 @tab Il testo inserito come oggetto estensore (spanner) va sotto/sopra il rigo
2003 @item @code{\tieDown}
2005 @tab @code{\tieNeutral}
2007 @item @code{\tupletDown}
2008 @tab @code{\tupletUp}
2009 @tab @code{\tupletNeutral}
2010 @tab I gruppi irregolare sono sotto/sopra le note
2014 Le varianti neutral/normal di questi comandi usano @code{\revert} e queste
2015 @strong{non} possono essere precedute da @code{\once}. Se desideri limitare
2016 l'effetto degli altri comandi (che usano @code{\override}) a un singolo
2017 momento temporale, devi farli precedere da @code{\once} come faresti con
2018 delle sovrascritture esplicite.
2020 Oppure, se solo un oggetto della formattazione deve essere forzato verso
2021 l'alto o verso il basso, si possono usare gli indicatori di
2022 direzione, @code{^} o @code{_}:
2024 @lilypond[quote,fragment,verbatim]
2026 a'4^( g') c''_( a') |
2031 @unnumberedsubsubsec Diteggiatura
2032 @translationof Fingering
2034 @cindex diteggiatura, posizionamento
2035 @cindex diteggiatura, accordi
2037 Anche il posizionamento della diteggiatura sulle singole note può essere
2038 controllato dalla proprietà @code{direction}, ma la modifica di @code{direction}
2039 non produce effetti sugli accordi. Come vedremo, ci sono comandi specifici
2040 che permettono di controllare la diteggiatura delle singole note degli
2041 accordi, col segno di diteggiatura posizionato sopra, sotto, a sinistra
2042 o a destra di ogni nota.
2044 Vediamo innanzitutto l'effetto di @code{direction} sulla diteggiatura
2045 attaccata alle singole note. La prima battuta mostra il comportamento
2046 predefinito e le due battute successive mostrano gli effetti dei valori
2047 @code{DOWN} e @code{UP}:
2049 @cindex Fingering, esempio di sovrascrittura
2050 @cindex proprietà direction, esempio
2051 @cindex direction, esempio
2053 @lilypond[quote,verbatim]
2055 c''4-5 a-3 f-1 c'-5 |
2056 \override Fingering.direction = #DOWN
2058 \override Fingering.direction = #UP
2063 Tuttavia sovrascrivere la proprietà @code{direction} non è il modo
2064 più semplice di definire a mano la diteggiatura sopra o sotto
2065 le note; di solito è preferibile usare @code{_} o @code{^} invece di @code{-}
2066 prima del numero della diteggiatura. Ecco l'esempio precedente riscritto
2067 usando questo metodo:
2069 @cindex fingering, esempio
2071 @lilypond[quote,verbatim]
2073 c''4-5 a-3 f-1 c'-5 |
2079 La proprietà @code{direction} viene ignorata negli accordi, ma i
2080 prefissi direzionali, @code{_} e @code{^} funzionano. Per impostazione
2081 predefinita, la diteggiatura viene disposta automaticamente sopra e
2082 sotto le note di un accordo:
2084 @cindex fingering, esempio
2086 @lilypond[quote,verbatim]
2095 ma può essere sovrascritta per forzare manualmente in su o in giù tutti o
2096 alcuni dei singoli numeri della diteggiatura:
2098 @cindex fingering, esempio
2100 @lilypond[quote,verbatim]
2102 <c''-5 g-3 e-2 c-1>4
2108 È possibile avere un controllo ancora maggiore sulla disposizione della
2109 diteggiatura delle singole note di un accordo usando il comando
2110 @code{\set fingeringOrientations}. Il formato di questo comando è:
2113 \set fingeringOrientations = #'([up] [left/right] [down])
2117 Si usa @code{\set} perché @code{fingeringOrientations} è una
2118 proprietà del contesto @code{Voice}, creato e usato dall'incisore
2119 @code{New_fingering_engraver}.
2121 Questa proprietà accetta come valori una lista comprendente da uno a tre elementi.
2122 Stabilisce se la diteggiatura debba essere posizionata sopra (se nella
2123 lista c'è @code{up}), sotto (se c'è @code{down}), a sinistra (se c'è
2124 @code{left}) o a destra (se c'è @code{right}). Nel caso vengano inseriti valori
2125 non accettati dalla lista, non sarà invece collocata alcuna diteggiatura. LilyPond
2126 prende in considerazione questi limiti e trova la migliore disposizione per
2127 la diteggiatura delle note degli accordi che seguono. Nota che @code{left} e
2128 @code{right} si escludono a vicenda -- la diteggiatura può essere posta
2129 solo da un lato o dall'altro, non da entrambi.
2131 @warning{Per controllare la posizione della diteggiatura di una
2132 singola nota con questo comando bisogna scrivere la nota come un accordo
2133 con una nota sola, ovvero racchiuderla tra parentesi angolari.}
2137 @cindex fingering, esempio
2138 @cindex @code{\set}, esempio di utilizzo
2139 @cindex proprietà fingeringOrientations, esempio
2141 @lilypond[quote,ragged-right,verbatim]
2143 \set fingeringOrientations = #'(left)
2146 \set fingeringOrientations = #'(left)
2148 <c-1 e-2 g-3 b-5>4 |
2149 \set fingeringOrientations = #'(up left down)
2152 \set fingeringOrientations = #'(up left)
2154 <c-1 e-2 g-3 b-5>4 |
2155 \set fingeringOrientations = #'(right)
2162 Se la diteggiatura appare eccessivamente fitta, si può ridurre la dimensione del
2163 tipo di carattere modificando la proprietà @code{font-size}. Si può vedere
2164 nell'oggetto @code{Fingering} della guida al Funzionamento interno che il
2165 valore predefinito di tale proprietà è @w{@code{-5}}, dunque proviamo
2168 @lilypond[quote,ragged-right,verbatim]
2170 \override Fingering.font-size = #-7
2171 \set fingeringOrientations = #'(left)
2174 \set fingeringOrientations = #'(left)
2176 <c-1 e-2 g-3 b-5>4 |
2177 \set fingeringOrientations = #'(up left down)
2180 \set fingeringOrientations = #'(up left)
2182 <c-1 e-2 g-3 b-5>4 |
2183 \set fingeringOrientations = #'(right)
2189 @node Oggetti esterni al rigo
2190 @subsection Oggetti esterni al rigo
2191 @translationof Outside-staff objects
2193 Gli oggetti esterni al rigo sono disposti automaticamente in modo da evitare
2194 collisioni. Ci sono vari modi per modificare la disposizione automatica
2195 se questa non è ottimale.
2198 * La proprietà outside-staff-priority::
2199 * Il comando textLengthOn::
2200 * Posizionamento delle dinamiche::
2201 * Dimensione dei grob::
2205 @node La proprietà outside-staff-priority
2206 @unnumberedsubsubsec La proprietà @code{outside-staff-priority}
2207 @translationof The outside-staff-priority property
2209 Gli oggetti dai valori più bassi per la proprietà
2210 @code{outside-staff-priority} vengono posizionati più vicino al rigo,
2211 mentre gli altri oggetti esterni al rigo vengono distanziati quanto
2212 basta per evitare collisioni. La proprietà @code{outside-staff-priority} è
2213 definita nell'interfaccia @code{grob-interface} ed è quindi una proprietà di
2214 tutti gli oggetti di formattazione. Il valore predefinito è @code{#f} per
2215 tutti gli oggetti interni al rigo e un valore numerico appropriato, determinato
2216 al momento della creazione dell'oggetto, per ogni oggetto esterno al rigo. La
2217 seguente tabella mostra i valori numerici predefiniti di alcuni dei più comuni
2218 oggetti esterni al rigo.
2220 @cindex estensori (spanner)
2223 Si notino i nomi insoliti di alcuni oggetti: gli oggetti estensori (spanner)
2224 sono creati automaticamente per controllare la disposizione verticale dei
2225 grob che (potrebbero) iniziare e finire in diversi momenti musicali, quindi
2226 la modifica della proprietà @code{outside-staff-priority} del grob sottostante
2227 non produrrebbe alcun effetto. Ad esempio, la modifica di
2228 @code{outside-staff-priority} dell'oggetto @code{Hairpin} non avrà alcun
2229 effetto sulla disposizione verticale delle forcelle. Occorre invece modificare
2230 la proprietà @code{outside-staff-priority} dell'oggetto associato
2231 @code{DynamicLineSpanner}. Questa sovrascrittura deve essere posta
2232 all'inizio dell'estensore, che potrebbe includere più forcelle e indicazioni dinamiche
2235 @multitable @columnfractions .3 .15 .45
2236 @headitem Oggetto di formattazione
2238 @tab Controlla la posizione di:
2239 @item @code{RehearsalMark}
2241 @tab Numeri di chiamata (e oggetti di testo analoghi)
2242 @item @code{MetronomeMark}
2244 @tab Indicazioni metronomiche
2245 @item @code{SostenutoPedalLineSpanner}
2247 @tab Indicazione del pedale
2248 @item @code{SustainPedalLineSpanner}
2251 @item @code{UnaCordaPedalLineSpanner}
2254 @item @code{MeasureCounter}
2256 @tab Numero della misura
2257 @item @code{VoltaBracketSpanner}
2259 @tab Delimitatori dei finali alternativi delle ripetizioni
2260 @item @code{InstrumentSwitch}
2262 @tab Testo per il cambio di strumento
2263 @item @code{TextScript}
2265 @tab Oggetti di testo
2266 @item @code{MultiMeasureRestText}
2268 @tab Testi sopra pause multiple
2269 @item @code{CombineTextScript}
2271 @tab Testo per il combinatore delle parti
2272 @item @code{OttavaBracket}
2274 @tab Estensioni del segno d'ottava
2275 @item @code{TextSpanner}
2277 @tab Estensori del testo
2278 @item @code{DynamicLineSpanner}
2280 @tab Tutte le indicazioni dinamiche
2281 @item @code{BarNumber}
2283 @tab Numeri di battuta
2284 @item @code{TrillSpanner}
2286 @tab Linee ondulate del trillo
2287 @item @code{AccidentalSuggestion}
2289 @tab Alterazioni con nota
2292 Ecco un esempio che mostra il posizionamento predefinito di alcuni di
2295 @cindex estensore del testo
2296 @cindex segno del cambio d'ottava
2298 @funindex \startTextSpan
2299 @funindex \stopTextSpan
2301 @cindex TextSpanner, esempio di sovrascrittura
2302 @cindex proprietà bound-details, esempio
2303 @cindex bound-details, esempio
2305 @lilypond[quote,fragment,ragged-right,verbatim]
2306 % Set details for later Text Spanner
2307 \override TextSpanner.bound-details.left.text
2308 = \markup { \small \bold Slower }
2309 % Place dynamics above staff
2311 % Start Ottava Bracket
2314 % Add Dynamic Text and hairpin
2320 % Add Dynamic Text and terminate hairpin
2321 c''4\ff c'' \stopTextSpan |
2322 % Stop Ottava Bracket
2327 Questo esempio mostra anche come creare gli estensori (spanner) del testo,
2328 ovvero testo con delle linee che si estendono sopra una sezione musicale.
2329 L'estensore si allunga dal comando @code{\startTextSpan} fino al comando
2330 @code{\stopTextSpan} e il formato del testo è definito dal comando
2331 @code{\override TextSpanner}. Per maggiori dettagli si veda @ruser{Estensori del testo}.
2333 Mostra anche come si creano le estensioni del segno d'ottava.
2335 @cindex modificare il posizionamento del numero di battuta
2336 @cindex numeri di battuta, modificare il posizionamento
2337 @cindex modificare il posizionamento dell'indicazione metronomica
2338 @cindex indicazione metronomica, modificare il posizionamento
2339 @cindex modificare il posizionamento dei numeri di chiamata
2340 @cindex numeri di chiamata, modificare il posizionamento
2342 Se i valori predefiniti di @code{outside-staff-priority} non producono
2343 il posizionamento desiderato, è possibile sovrascrivere la priorità di
2344 qualsiasi oggetto. Immaginiamo di voler posizionare l'estensione del segno d'ottava
2345 sotto l'estensore del testo nell'esempio precedente. Basta controllare la
2346 priorità dell'oggetto @code{OttavaBracket} nella guida al Funzionamento interno
2347 o nella tabella precedente e ridurla a un valore inferiore di quello di un
2348 oggetto @code{TextSpanner}, ricordando che @code{OttavaBracket} è creato
2349 nel contesto @code{Staff}:
2351 @cindex TextSpanner, esempio di sovrascrittura
2352 @cindex proprietà bound-details, esempio
2353 @cindex bound-details, esempio
2355 @lilypond[quote,fragment,ragged-right,verbatim]
2356 % Set details for later Text Spanner
2357 \override TextSpanner.bound-details.left.text
2358 = \markup { \small \bold Slower }
2359 % Place dynamics above staff
2361 % Start Ottava Bracket
2364 % Add Dynamic Text and hairpin
2370 % Add Dynamic Text and terminate hairpin
2371 c''4\ff c'' \stopTextSpan |
2372 % Stop Ottava Bracket
2377 Si noti che alcuni di questi oggetti, in particolare i numeri di
2378 battuta, i segni di metronomo e i numeri di chiamata, si trovano nel
2379 contesto @code{Score}; dunque, assicurati di richiamare il contesto
2380 giusto per sovrascriverli.
2382 @cindex legature di portamento e outside-staff-priority
2383 @cindex legature di portamento e articolazioni
2384 @cindex articolazioni e legature di portamento
2386 Le legature di portamento sono classificate come oggetti interni al rigo, anche
2387 se spesso sono poste sopra il rigo, se le note alle quali sono collegate si
2388 trovano nella parte superiore del pentagramma. Questo può far sì che gli oggetti esterni al rigo,
2389 come le articolazioni, siano spinti troppo in alto, dato che la legatura viene
2390 posizionata prima. La proprietà @code{avoid-slur} dell'articolazione
2391 può essere impostata su @code{'inside} per portare l'articolazione
2392 dentro la legatura, ma la proprietà @code{avoid-slur} funziona solo se anche
2393 @code{outside-staff-priority} è impostata su @code{#f}.
2394 Altrimenti, si può impostare la proprietà @code{outside-staff-priority} della
2395 legatura di portamento su un valore numerico, in modo che sia posizionata
2396 insieme ad altri oggetti esterni al rigo in base a quel valore. Ecco un
2397 esempio che mostra l'effetto dei due metodi:
2399 @lilypond[quote,verbatim]
2401 c4( c^\markup { \tiny \sharp } d4.) c8 |
2403 \once \override TextScript.avoid-slur = #'inside
2404 \once \override TextScript.outside-staff-priority = ##f
2405 c4^\markup { \tiny \sharp } d4.) c8 |
2406 \once \override Slur.outside-staff-priority = #500
2407 c4( c^\markup { \tiny \sharp } d4.) c8 |
2411 Attraverso la proprietà @code{outside-staff-priority} si può
2412 regolare anche la disposizone verticale di singoli oggetti;
2413 i risultati potrebbero tuttavia risultare non sempre ottimali. Supponiamo
2414 di voler posizionare @qq{Testo3} sopra @qq{Testo4} nell'esempio
2415 precedente (si veda @ref{Comportamento automatico}).
2416 Basta andare a cercare la priorità di @code{TextScript} nella
2417 guida al Funzionamento interno o nelle tabelle precedenti e
2418 aumentare la priorità di @qq{Testo3} assegnando un valore più alto:
2420 @cindex TextScript, esempio di sovrascrittura
2421 @cindex proprietà outside-staff-priority, esempio
2422 @cindex outside-staff-priority, esempio
2424 @lilypond[quote,fragment,ragged-right,verbatim]
2427 \once \override TextScript.outside-staff-priority = #500
2432 Questo ovviamente pone @qq{Testo3} sopra @qq{Testo4}, ma anche
2433 sopra @qq{Testo2}, mentre @qq{Testo4} si sposta più in basso. Forse questo
2434 risultato non ci soddisfa: vorremmo piuttosto collocare
2435 tutti i testi alla stessa distanza dal rigo. Per riuscirci,
2436 naturalmente, dobbiamo creare più spazio orizzontale tra le note per
2437 far posto al testo. Lo si può ottenere con il comando
2438 @code{textLengthOn}.
2440 @node Il comando textLengthOn
2441 @unnumberedsubsubsec Il comando @code{@bs{}textLengthOn}
2442 @translationof The textLengthOn command
2444 @cindex note, distanziarle insieme al testo
2446 @funindex \textLengthOn
2447 @funindex \textLengthOff
2449 Per impostazione predefinita, finché si tratta di formattare la musica il
2450 testo prodotto dal comando @code{\markup} non occupa uno spazio orizzontale.
2451 Il comando @code{\textLengthOn} inverte questo comportamento e fa sì che
2452 le note si distanzino quanto basti per introdurre il testo:
2454 @lilypond[quote,fragment,ragged-right,verbatim]
2455 \textLengthOn % Fa sì che le note si distanzino per introdurre il testo
2462 Il comando che ripristina il comportamento predefinito è
2463 @code{\textLengthOff}. Altrimenti si può usare @code{\once}
2464 con @code{\textLengthOn} se l'effetto deve essere limitato
2465 a un singolo momento musicale.
2466 Analogalmente, la spaziatura per i segni di chiamata e le indicazioni
2467 di tempo è regolata in modo indipendente con i comandi @code{\markLengthOn}
2468 e @code{\markLengthOff}.
2470 @cindex testo a margine, permettere le collisioni
2472 Per parte sua, anche il testo a margine eviterà le note che si estendono sopra il
2473 rigo. Se lo si vuole evitare, la disposizione automatica in alto può
2474 essere disattivata impostando la priorità su @code{#f}. Ecco un esempio
2475 che mostra come il testo a margine interagisce con tali note.
2477 @cindex TextScript, esempio di sovrascrittura
2478 @cindex proprietà outside-staff-priority, esempio
2479 @cindex outside-staff-priority, esempio
2481 @lilypond[quote,fragment,ragged-right,verbatim]
2483 % Questo testo è abbastanza corto per starci senza creare collisioni
2487 % Questo è troppo lungo per starci, quindi è spostato più in alto
2491 % Disattiva l'elusione delle collisioni
2492 \once \override TextScript.outside-staff-priority = ##f
2493 c,,2^"Testo Lungo " c'' |
2496 % Disattiva l'elusione delle collisioni
2497 \once \override TextScript.outside-staff-priority = ##f
2498 \textLengthOn % e attiva textLengthOn
2499 c,,2^"Testo Lungo " % Gli spazi finali vengono rispettati
2505 @node Posizionamento delle dinamiche
2506 @unnumberedsubsubsec Posizionamento delle dinamiche
2507 @translationof Dynamics placement
2509 @cindex modificare il posizionamento delle dinamiche
2510 @cindex dinamiche, modificare il posizionamento
2512 Le indicazioni dinamiche sono di norma poste sotto il
2513 rigo, ma possono essere collocati al di sopra del pentagramma col comando @code{\dynamicUp}.
2514 Vengono posizionati verticalmente rispetto alla figura cui
2515 si riferiscono e fluttuano sopra (o sotto) tutti gli oggetti
2516 interni al rigo come le legature di fraseggio e i numeri di battuta.
2517 Si ottengono risultati abbastanza accettabili, come dimostra
2520 @lilypond[quote,ragged-right,verbatim]
2526 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2527 ees,2.~\)\mf ees4 r8 |
2531 Tuttavia, se le note e le loro dinamiche sono molto vicine,
2532 la disposizione automatica eviterà le collisioni spostando
2533 più all'esterno i segni di dinamica successivi. Questo
2534 potrebbe non essere però il posizionamento migliore, come mostra
2535 questo esempio piuttosto improbabile:
2537 @lilypond[quote,ragged-right,verbatim,fragment]
2539 \relative { a'4\f b\mf a\mp b\p }
2543 Se si dovesse presentare una situazione simile in un @q{vero} brano musicale,
2544 converrebbe distanziare un po' di più le note, in modo che i segni di dinamica
2545 possano essere tutti collocati alla stessa distanza verticale dal rigo. Abbiamo
2546 potuto farlo per il testo a margine usando il comando @code{\textLengthOn},
2547 ma non esiste un comando equivalente per i segni di dinamica. Dunque
2548 dovremo scoprire come farlo usando i comandi @code{\override}.
2550 @node Dimensione dei grob
2551 @unnumberedsubsubsec Dimensione dei grob
2552 @translationof Grob sizing
2554 @subheading Estensione dei grob
2556 @cindex estensione dei grob
2557 @cindex grob, estensione
2559 Dobbiamo innanzitutto sapere come i grob occupano lo spazio. Tutti i grob
2560 hanno al loro interno un punto di riferimento che viene usato
2561 per posizionarli in modo relativo all'oggetto genitore da cui derivano. Questo
2562 punto nel grob viene poi disposto a una distanza orizzontale,
2563 @code{X-offset}, e a una distanza verticale, @code{Y-offset}, dall'oggetto
2564 genitore. L'estensione (@emph{extent}) orizzontale dell'oggetto è data da una
2565 coppia di numeri, @code{X-extent}, che indica dove si trovano i margini
2566 sinistro e destro rispetto al punto di riferimento. L'ampiezza verticale
2567 è ugualmente definita da una coppia di numeri, @code{Y-extent}.
2568 Queste proprietà appartengono a tutti i grob che supportano l'interfaccia
2569 @code{grob-interface}.
2571 @cindex @code{extra-spacing-width}
2573 Per impostazione predefinita, gli oggetti esterni al rigo presentano estensione
2574 pari a zero, in modo da potersi sovrapporre nella direzione orizzontale.
2575 Ciò si ottiene con un trucco, ovvero dando un valore infinito all'estensione
2576 sinistra e infinito negativo a quella destra, impostando la proprietà
2577 @code{extra-spacing-width} su @code{'(+inf.0 . -inf.0)}. Per
2578 assicurarci che non si sovrappongano nella direzione orizzontale, dobbiamo
2579 sovrascrivere il valore di @code{extra-spacing-width} per dar loro un po' più
2580 di spazio. Le unità sono lo spazio tra due linee del rigo, dunque spostare
2581 il margine sinistro di mezza unità a sinistra e quello destro di mezza unità
2582 a destra dovrebbe dare il risultato desiderato:
2585 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2589 Vediamo se funziona nell'esempio precedente:
2591 @cindex DynamicText, esempio di sovrascrittura
2592 @cindex proprietà extra-spacing-width, esempio
2593 @cindex extra-spacing-width, esempio
2595 @lilypond[quote,fragment,ragged-right,verbatim]
2597 % Aumenta la larghezza di 1 spazio rigo
2598 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2599 \relative { a'4\f b\mf a\mp b\p }
2603 L'aspetto è migliore, ma sarebbe preferibile avere i segni di dinamica
2604 allineati alla stessa linea di base invece di spostarsi su e giù seguendo
2605 la posizione delle note. La proprietà che permette di ottenere tale
2606 risultato è @code{staff-padding} ed è trattata nella sezione relativa
2607 alle collisioni (vedi @ref{Collisioni tra oggetti}).
2610 @node Spaziatura verticale
2611 @section Spaziatura verticale
2612 @translationof Vertical spacing
2614 Di norma, la spaziatura verticale degli oggetti musicali decisa da
2615 LilyPond è molto buona. Vediamo come si comporta con una semplice
2616 canzone, composta da due voci e un accompagnamento per pianoforte:
2618 @lilypond[quote,fragment,ragged-right]
2623 \new Voice = "music" {
2629 Here are some lyrics
2632 \clef bass e'2 f e c
2647 Non c'è niente di sbagliato con la spaziatura verticale predefinita. Tuttavia,
2648 supponiamo che si stia lavorando con un editore che abbia requisiti specifici
2649 per la spaziatura verticale dei righi e del testo vocale, ovvero maggior spazio
2650 tra testo e note, e tra l'accompagnamento del pianoforte e la linea vocale, e
2651 minor spazio tra i righi del pianoforte. Iniziamo dal testo.
2653 Il testo vocale si trova all'interno di un sistema, dunque i comandi per
2654 modificarne la spaziatura sono descritti in @ruser{Spaziatura verticale flessibile all'interno dei sistemi}.
2655 Quel paragrafo ci dice che il testo è costituito da linee che non appartengono
2656 al rigo (@code{non-staff lines}), quindi il comando per cambiarne la spaziatura
2657 sarà riferito alla proprietà @code{nonstaff}. Per allontanarlo dal rigo a cui
2658 si riferiscono (la linea superiore) si usa la proprietà @code{relatedstaff}.
2659 Per allontanarli dalla linea più bassa si usa la proprietà @code{unrelatedstaff}.
2660 Le parti vocali fanno parte del @code{VerticalAxisGroup}, dunque dobbiamo
2661 aggiustare le sue proprietà. Proviamo a vedere se funziona.
2663 @lilypond[quote,fragment,ragged-right,verbatim]
2668 \new Voice = "music" {
2673 \override VerticalAxisGroup.
2674 nonstaff-relatedstaff-spacing.padding = #5
2675 \override VerticalAxisGroup.
2676 nonstaff-unrelatedstaff-spacing.padding = #5
2679 Here are some lyrics
2682 \clef bass e'2 f e c
2697 Funziona, ma forse non molto bene. Quando impostiamo il
2698 @code{padding} su 5, LilyPond aggiunge 5 spazi rigo alla distanza
2699 tra gli oggetti, che è troppo in questo caso. Useremo 2.
2701 Ora allontaniamo la musica per pianoforte dalle parti vocali. La musica
2702 vocale si trova nel rigo @code{ChoirStaff}, quindi dobbiamo aumentare lo
2703 spazio tra quel gruppo di righi e il rigo per pianoforte che si trova sotto.
2704 Lo faremo modificando la proprietà @code{basic-distance} del
2705 @code{staffgroup-staff-spacing} di @code{StaffGrouper}.
2707 @lilypond[quote,fragment,ragged-right,verbatim]
2709 \new ChoirStaff \with {
2710 \override StaffGrouper.
2711 staffgroup-staff-spacing.basic-distance = #15
2715 \new Voice = "music" {
2720 \override VerticalAxisGroup.
2721 nonstaff-relatedstaff-spacing.padding = #2
2722 \override VerticalAxisGroup.
2723 nonstaff-unrelatedstaff-spacing.padding = #2
2726 Here are some lyrics
2729 \clef bass e'2 f e c
2744 Ottimo. Non ci resta che avvicinare i righi del pianoforte. Per farlo,
2745 modifichiamo di nuovo le proprietà di @code{StaffGrouper}, ma questa volta
2746 riduciamo sia @code{basic-distance} che @code{padding}. Ecco come fare:
2748 @lilypond[quote,fragment,ragged-right,verbatim]
2750 \new ChoirStaff \with {
2751 \override StaffGrouper.
2752 staffgroup-staff-spacing.basic-distance = #15
2756 \new Voice = "music" {
2761 \override VerticalAxisGroup.
2762 nonstaff-relatedstaff-spacing.padding = #2
2763 \override VerticalAxisGroup.
2764 nonstaff-unrelatedstaff-spacing.padding = #2
2767 Here are some lyrics
2770 \clef bass e'2 f e c
2773 \new PianoStaff \with {
2774 \override StaffGrouper.staff-staff-spacing = #'(
2775 (basic-distance . 0)
2789 In questo modo sono molto vicini, ma è quello che vuole l'editore.
2790 Se necessario, possono essere allontanati modificando @code{padding} o
2791 @code{basic-distance}.
2793 Ci sono molti modi per modificare la spaziatura verticale. Il punto fondamentale
2794 da ricordare è che la spaziatura degli oggetti in un contesto @code{StaffGroup}
2795 (come i gruppi @code{GrandStaff} o @code{PianoStaff}) è controllata dalle
2796 variabili spaziali di @code{StaffGrouper}. La spaziatura relativa ai righi
2797 non raggruppati (come @code{Lyrics} e @code{Staff}) è regolata dalle variabili
2798 del @code{VerticalAxisGroup}. Ulteriori dettagli in
2799 @ruser{Variabili paper della spaziatura verticale flessibile} e
2800 @ruser{Spaziatura verticale flessibile all'interno dei sistemi}.
2803 @node Collisioni tra oggetti
2804 @section Collisioni tra oggetti
2805 @translationof Collisions of objects
2808 * Spostare gli oggetti::
2809 * Correggere la sovrapposizione di elementi della notazione::
2810 * Esempio musicale::
2813 @node Spostare gli oggetti
2814 @subsection Spostare gli oggetti
2815 @translationof Moving objects
2817 @cindex spostare gli oggetti che si sovrappongono
2818 @cindex spostare gli oggetti che collidono
2819 @cindex spostare i grob che collidono
2820 @cindex oggetti, spostarli se collidono
2821 @cindex grob, spostarli se collidono
2823 Per quanto possa apparire sorprendente, LilyPond non è perfetto. Alcuni elementi
2824 della notazione possono sovrapporsi. Si tratta di un caso spiacevole, anche se in
2825 realtà piuttosto raro. Di solito l'esigenza di spostare gli
2826 oggetti dipende da motivi di chiarezza o da ragioni estetiche: gli elementi
2827 possono ottenere un aspetto migliore con un po' più o un po' meno
2830 Esistono tre principali approcci per risolvere la sovrapposizione
2831 degli elementi della notazione. Vediamoli nel seguente ordine:
2835 Si può cambiare la @strong{direzione} di uno degli oggetti che si
2836 sovrappongono usando i comandi predefiniti elencati prima, in riferimento agli
2837 oggetti interni al rigo (vedi @ref{Oggetti interni al rigo}).
2838 In questo modo si possono riposizionare facilmente gambi, legature di
2839 portamento e di valore, travature, segni di dinamica, testo e gruppi
2840 irregolari. La limitazione è che si tratta di una scelta circoscritta a due sole
2841 posizioni, nessuna delle quali potrebbe essere appropriata.
2844 Le @strong{proprietà degli oggetti}, che LilyPond usa quando dispone
2845 gli oggetti di formattazione, si possono modificare con @code{\override}. I
2846 vantaggi dell'intervenire su questo tipo di proprietà sono che (a)
2847 gli altri oggetti saranno spostati automaticamente se è necessario far
2848 spazio, e (b) ogni sovrascrittura può essere applicata a tutte le occorrenze
2849 di oggetti dello stesso tipo. Tali proprietà sono:
2856 Questa è già stata trattata in dettaglio (vedi
2857 @ref{Oggetti interni al rigo}).
2860 @code{padding}, @code{right-padding}, @code{staff-padding}
2864 @cindex proprietà padding
2865 @cindex proprietà right-padding
2866 @cindex proprietà staff-padding
2867 @cindex padding, proprietà
2868 @cindex right-padding, proprietà
2869 @cindex staff-padding, proprietà
2871 Quando un oggetto viene posizionato, il valore della sua proprietà
2872 @code{padding} specifica lo spazio intermedio da lasciare tra l'oggetto stesso
2873 e il bordo più vicino di quello accanto a cui si trova. Nota che si
2874 tratta del valore di @code{padding} dell'oggetto che @strong{si sta
2875 posizionando}, mentre quello dell'oggetto già posizionato viene
2876 ignorato. Gli spazi specificati da @code{padding} possono essere
2877 applicati a tutti gli oggetti che supportano l'interfaccia
2878 @code{side-position-interface}.
2880 Invece che da @code{padding}, la disposizione dei gruppi di alterazioni
2881 è regolata da @code{right-padding}. Questa proprietà appartiene all'oggetto
2882 @code{AccidentalPlacement} che si trova nel contesto @strong{Staff}. Il
2883 processo di formattazione della partitura crea per prime le teste di
2884 nota e poi, se presenti, aggiunge le alterazioni alla sinistra delle
2885 teste di nota usando la proprietà @code{right-padding} per stabilire
2886 la distanza tra le teste e le singole alterazioni.
2887 Dunque, solo la proprietà @code{right-padding} dell'oggetto @code{AccidentalPlacement}
2888 produce un effetto sul posizionamento delle alterazioni.
2890 La proprietà @code{staff-padding} è strettamente connessa alla proprietà
2891 @code{padding}: @code{padding} regola la quantità minima di spazio tra
2892 qualsiasi oggetto che supporti l'interfaccia @code{side-position-interface} e
2893 quello più vicino (solitamente, la nota o le linee del rigo); @code{staff-padding}
2894 si applica solo a quegli oggetti che stanno sempre fuori dal rigo e regola
2895 la distanza minima tra l'oggetto e il rigo. Nota che
2896 @code{staff-padding} non ha alcun effetto sugli oggetti disposti relativamente
2897 alla nota invece che al rigo, anche se può essere sovrascritto senza generare
2898 degli errori per tali oggetti; quindi viene semplicemente ignorata.
2900 Per scoprire quale proprietà padding è richiesta per l'oggetto che
2901 desideri riposizionare, devi tornare alla guida del Funzionamento
2902 interno e cercare le proprietà dell'oggetto. Presta attenzione al fatto
2903 che le proprietà padding potrebbero non trovarsi nell'oggetto più
2904 ovvio; in tal caso devi cercare negli oggetti simili.
2906 I valori delle proprietà padding sono misurati in spazi del rigo. Il valore
2907 predefinito della maggior parte degli oggetti è circa 1.0 o meno (a seconda
2908 dell'oggetto). Può essere sovrascritto per ottenere una distanza maggiore
2912 @code{self-alignment-X}
2914 @cindex proprietà self-alignment-X
2915 @cindex self-alignment-X, proprietà
2917 Questa proprietà serve ad allineare l'oggetto a sinistra, a destra o
2918 al centro rispetto al punto di riferimento dell'oggetto genitore.
2919 Si può usare con tutti gli oggetti che supportano l'interfaccia
2920 @code{self-alignment-interface}. Generalmente si tratta di oggetti
2921 che contengono testo. I valori sono @code{LEFT} (sinistra), @code{RIGHT}
2922 (destra) o @code{CENTER} (centro). Altrimenti, è possibile definire un valore
2923 numerico compreso tra @w{@code{-1}} e @code{+1}, dove @w{@code{-1}} indica
2924 allineamento a sinistra e @code{+1} allineamento a destra, mentre gli altri
2925 numeri spostano progressivamente il testo dall'allineamento a sinistra
2926 all'allineamento a destra. È possibile specificare valori numerici maggiori
2927 di @code{1}, per spostare il testo ancora più a sinistra, o valori inferiori
2928 a @w{@code{-1}}, per spostarlo ancora più a destra. Ogni modifica di @code{1}
2929 nel valore corrisponde a uno spostamento pari alla metà della lunghezza
2933 @code{extra-spacing-width}
2935 @cindex proprietà extra-spacing-width
2936 @cindex extra-spacing-width, proprietà
2938 Questa proprietà è disponibile per tutti gli oggetti che supportano
2939 l'interfaccia @code{item-interface}. Accetta due numeri: il primo è
2940 aggiunto all'estensione più a sinistra, il secondo a quella più a
2941 destra. I numeri negativi spostano il bordo verso sinistra, quelli
2942 positivi verso destra: quindi, per allargare un oggetto il primo
2943 numero deve essere negativo, il secondo deve essere positivo.
2944 Nota che non tutti gli oggetti rispettano entrambi i numeri. Ad
2945 esempio, l'oggetto @code{Accidental} considera soltanto il primo
2946 numero (bordo sinistro).
2949 @code{staff-position}
2951 @cindex proprietà staff-position
2952 @cindex staff-position, proprietà
2954 @code{staff-position} è una proprietà dell'interfaccia
2955 @code{staff-symbol-referencer-interface}, supportata dagli oggetti
2956 che vengono posizionati in relazione al rigo. Specifica in unità
2957 di mezzo spazio di rigo la posizione verticale dell'oggetto rispetto
2958 alla linea centrale del rigo stesso. È utile per risolvere collisioni
2959 tra oggetti come le pause di più misure, le legature di valore e le
2960 note in voci diverse.
2963 @code{horizontal-shift}
2965 @cindex horizontal-shift, proprietà
2966 @cindex proprietà horizontal-shift
2967 @cindex colonna di note
2968 @cindex collisioni di note
2969 @cindex note, collisioni
2970 @cindex shift, comandi
2974 @funindex \shiftOnnn
2976 All'interno di una voce, tutte le note che si trovano nello stesso momento
2977 musicale sono raggruppate in una colonna di note, e viene creato un oggetto
2978 @code{NoteColumn} per controllare il posizionamento orizzontale di quel
2979 gruppo di note (vedi @qq{Colonne di note} in @ref{Definire esplicitamente le voci}). Se
2980 @emph{e solo se} due o più colonne di note in un solo contesto Staff, entrambe
2981 con i gambi nella stessa direzione, si trovano sullo stesso momento musicale,
2982 i valori delle loro proprietà @code{horizontal-shift} sono usati per attribuire
2983 un punteggio e le colonne che hanno un punteggio più alto vengono progressivamente spostate
2984 per evitare le collisioni delle teste di nota. Questa proprietà viene impostata
2985 dai comandi @code{\voiceXXX} e può essere scavalcata direttamente con un
2986 comando @code{\override} o, di solito, dai comandi @code{\shiftOn}.
2987 Attenzione: questa proprietà viene usata per dare un @emph{punteggio} alle
2988 colonne di note per spostarle orizzontalmente; non specifica la grandezza dello
2989 spostamento, che viene aumentata progressivamente per gradi in base alla larghezza della
2990 testa di nota per ogni punteggio. I gradi sono solitamente di metà della
2991 larghezza della testa di nota, ma possono essere della larghezza intera della
2992 testa quando c'è un gruppo di note molto ravvicinate.
2998 @cindex proprietà force-hshift
2999 @cindex force-hshift, proprietà
3001 La proprietà @code{force-hshift} appartiene a @code{NoteColumn}
3002 (più precisamente all'interfaccia @code{note-column-interface}). Modificandola
3003 è possibile spostare la colonna di note in situazioni in cui le colonne di
3004 note sono sovrapposte. Non ha effetto su colonne di note non sovrapposte.
3005 Viene specificata in unità appropriate per una colonna di note, ovvero la
3006 larghezza della testa della nota nella prima voce. Si usa
3007 in situazioni complesse in cui i normali comandi @code{\shiftOn} (vedi
3008 @ref{Definire esplicitamente le voci}) non risolvono adeguatamente le collisioni tra le
3009 note. Per questo scopo, è preferibile alla proprietà @code{extra-offset}
3010 perché non c'è bisogno di trovare la giusta distanza in spazi di rigo e
3011 lo spostamento delle note dentro o fuori da una @code{NoteColumn}
3012 si ripercuote su altre azioni, come il congiungimento delle teste delle note.
3017 Infine, se i metodi precedenti non funzionano, si possono riposizionare
3018 verticalmente gli oggetti rispetto alla linea centrale del rigo
3019 oppure collocarli a una qualsiasi distanza rispetto a una nuova
3020 posizione. Gli svantaggi di questo metodo consistono nel fatto che i corretti
3021 valori per il riposizionamento debbano essere trovati per tentativi e per ogni
3022 singolo oggetto; inoltre, dato che lo spostamento avviene dopo che LilyPond
3023 ha posizionato tutti gli altri oggetti, spetta all'utente evitare le
3024 eventuali collisioni. La principale
3025 difficoltà che questo approccio comporta, però, è che i valori di riposizionamento
3026 potrebbero dover essere ricalcolati se la musica venisse successivamente
3027 modificata. Le proprietà che si possono usare con questo tipo di
3028 riposizionamento manuale sono:
3033 @cindex proprietà extra-offset
3034 @cindex extra-offset, proprietà
3036 Questa proprietà si applica a qualsiasi oggetto di formattazione che supporta
3037 l'interfaccia @code{grob-interface}. Accetta come valore una coppia di numeri
3038 che specificano l'ulteriore spostamento nelle direzioni orizzontale e verticale.
3039 I numeri negativi spostano l'oggetto a sinistra o in basso. Le unità sono
3040 gli spazi del rigo. Questo spostamento aggiuntivo è applicato dopo la formattazione
3041 degli oggetti, dunque gli oggetti possono essere riposizionati ovunque senza
3042 incidere sugli altri.
3046 @cindex proprietà positions
3047 @cindex positions, proprietà
3049 Questa proprietà è utile specialmente per correggere manualmente l'inclinazione e
3050 l'altezza di travature, legature di portamento e graffette dei gruppi irregolari. Accetta
3051 come valore una coppia di numeri, che specifica la posizione dei bordi sinistro
3052 e destro della travatura, della legatura, etc., rispetto alla linea centrale
3053 del rigo. L'unità di misura è lo spazio del rigo. Considera, però,
3054 che le legature di portamento e di frase non possono essere riposizionate
3055 del tutto arbitrariamente. LilyPond, infatti, genera prima una lista
3056 delle possibili posizioni per la legatura e poi determina la legatura che
3057 @qq{ritiene migliore}. Se la proprietà @code{positions} è stata sovrascritta,
3058 viene scelta dalla lista la legatura più vicina alle posizioni richieste.
3063 Alcuni oggetti potrebbero non disporre di tutte queste proprietà.
3064 Occorre andare a vedere nella guida al Funzionamento interno
3065 quali proprietà siano disponibili per l'oggetto che si intende
3068 Segue una lista degli oggetti che hanno la maggiore probabilità
3069 di essere coinvolti in collisioni, insieme al nome dell'oggetto
3070 che deve essere cercato nella guida al Funzionamento interno per
3071 poter sapere quali proprietà si possono usare per spostarlo.
3073 @multitable @columnfractions .5 .5
3074 @headitem Tipo di oggetto @tab Nome dell'oggetto
3075 @item Articolazioni @tab @code{Script}
3076 @item Travature @tab @code{Beam}
3077 @item Dinamiche (verticalmente) @tab @code{DynamicLineSpanner}
3078 @item Dinamiche (orizzontalmente) @tab @code{DynamicText}
3079 @item Diteggiature @tab @code{Fingering}
3080 @item Numeri di chiamata / Testi @tab @code{RehearsalMark}
3081 @item Legature di portamento @tab @code{Slur}
3082 @item Testi, ovvero @code{^"testo"} @tab @code{TextScript}
3083 @item Legature di valore @tab @code{Tie}
3084 @item Gruppi irregolari @tab @code{TupletBracket}
3088 @node Correggere la sovrapposizione di elementi della notazione
3089 @subsection Correggere la sovrapposizione di elementi della notazione
3090 @translationof Fixing overlapping notation
3092 Vediamo ora come le proprietà presentate nella sezione precedente possano
3093 aiutare a risolvere la sovrapposizione degli elementi della notazione.
3096 * La proprietà padding::
3097 * La proprietà right-padding::
3098 * La proprietà staff-padding::
3099 * La proprietà self-alignment-X::
3100 * La proprietà staff-position::
3101 * La proprietà extra-offset::
3102 * La proprietà positions::
3103 * La proprietà force-hshift::
3106 @node La proprietà padding
3107 @unnumberedsubsubsec La proprietà @code{padding}
3108 @translationof The padding property
3112 @cindex correggere la sovrapposizione di elementi della notazione
3113 @cindex sovrapposizione degli elementi della notazione
3115 La proprietà @code{padding} serve a aumentare (o diminuire)
3116 la distanza tra i simboli che si trovano sopra o sotto le
3119 @cindex Script, esempio di sovrascrittura
3120 @cindex proprietà padding, esempio
3121 @cindex padding, esempio
3123 @lilypond[quote,fragment,verbatim]
3125 \override Script.padding = #3
3129 @cindex MetronomeMark, esempio di sovrascrittura
3130 @cindex proprietà padding, esempio
3131 @cindex padding, esempio
3133 @lilypond[quote,fragment,verbatim]
3134 % Questo non funziona, vedi sotto
3135 \override MetronomeMark.padding = #3
3139 \override Score.MetronomeMark.padding = #3
3144 Nota nel secondo esempio come è importante sapere quale contesto
3145 gestisce un certo oggetto. Dato che l'oggetto @code{MetronomeMark}
3146 è regolato dal contesto @code{Score}, le modifiche della proprietà
3147 nel contesto @code{Voice} non vengono prese in considerazione. Per
3148 approfondire l'argomento si veda @ruser{Modifica delle proprietà}.
3150 Se la proprietà @code{padding} di un oggetto viene aumentata quando
3151 quell'oggetto si trova insieme ad altri oggetti disposti secondo la
3152 loro proprietà @code{outside-staff-priority}, allora si sposteranno
3153 quell'oggetto e tutti gli oggetti esterni a esso.
3156 @node La proprietà right-padding
3157 @unnumberedsubsubsec La proprietà @code{right-padding}
3158 @translationof The right-padding property
3160 @cindex proprietà right-padding
3161 @cindex right-padding, proprietà
3163 La proprietà @code{right-padding} agisce sullo spazio tra l'alterazione
3164 e la nota corrispondente. Non è una necessità frequente, ma la
3165 spaziatura predefinita potrebbe risultare errata nei casi di alcuni
3166 speciali glifi delle alterazioni usati nella musica microtonale.
3167 Questi si inseriscono sovrascrivendo lo stampo (stencil) dell'alterazione
3168 con un segno che contenga il simbolo desiderato:
3170 @cindex Accidental, esempio di sovrascrittura
3171 @cindex proprietà text, esempio
3172 @cindex text, esempio
3173 @cindex proprietà stencil, esempio
3174 @cindex stencil, esempio
3175 @cindex AccidentalPlacement, esempio di sovrascrittura
3176 @cindex proprietà right-padding, esempio
3177 @cindex right-padding, esempio
3179 @lilypond[quote,ragged-right,verbatim]
3180 sesquisharp = \markup { \sesquisharp }
3183 % Mostra un triesis (alterazione ascendente di tre quarti di tono) ma lo spazio è troppo stretto
3184 \once \override Accidental.stencil = #ly:text-interface::print
3185 \once \override Accidental.text = #sesquisharp
3187 % Ecco come migliorare lo spazio
3188 \once \override Score.AccidentalPlacement.right-padding = #0.6
3189 \once \override Accidental.stencil = #ly:text-interface::print
3190 \once \override Accidental.text = #sesquisharp
3196 Siamo costretti a usare una sovrascrittura dello stampo dell'alterazione che
3197 verrà spiegata successivamente. Il tipo di stampo deve essere una
3198 procedura e in questo esempio è stato modificato per mostrare i
3199 contenuti della proprietà @code{text} dell'oggetto @code{Accidental}, che
3200 è esso stesso impostato sul segno di triesis. Poi
3201 questo segno viene distanziato dalla testa di nota grazie alla sovrascrittura
3202 di @code{right-padding}.
3206 @node La proprietà staff-padding
3207 @unnumberedsubsubsec La proprietà @code{staff-padding}
3208 @translationof The staff-padding property
3210 @cindex allineare gli oggetti a una base
3211 @cindex oggetti, allinearli a una base
3213 @code{staff-padding} serve ad allineare gli oggetti come i segni di
3214 dinamica lungo una linea di base a una certa distanza dal rigo, quando
3215 nessun altro elemento della notazione li allontana dal rigo.
3216 Non è una proprietà di @code{DynamicText} bensì
3217 di @code{DynamicLineSpanner}, perché la base deve essere applicata
3218 ugualmente a @strong{tutti} i segni dinamica, compresi quelli creati
3219 come estensori. Ecco come allineare i segni di dinamica nell'esempio
3220 preso dalla sezione precedente:
3222 @cindex DynamicText, esempio di sovrascrittura
3223 @cindex proprietà extra-spacing-width, esempio
3224 @cindex extra-spacing-width, esempio
3225 @cindex DynamicLineSpanner, esempio di sovrascrittura
3226 @cindex proprietà staff-padding, esempio
3227 @cindex staff-padding, esempio
3229 @lilypond[quote,fragment,ragged-right,verbatim]
3230 \override DynamicLineSpanner.staff-padding = #3
3231 \relative { a'4\f b\mf a\p b\mp }
3235 @node La proprietà self-alignment-X
3236 @unnumberedsubsubsec La proprietà @code{self-alignment-X}
3237 @translationof The self-alignment-X property
3239 L'esempio successivo mostra come aggiustare la posizione di un numero
3240 di corda rispetto a un gambo allineando il bordo destro del numero
3241 al punto di riferimento della nota a cui si riferisce:
3243 @cindex StringNumber, esempio di sovrascrittura
3244 @cindex proprietà self-alignment-X, esempio
3245 @cindex self-alignment-X, esempio
3247 @lilypond[quote,fragment,ragged-right,verbatim]
3250 \once \override StringNumber.self-alignment-X = #RIGHT
3255 @node La proprietà staff-position
3256 @unnumberedsubsubsec La proprietà @code{staff-position}
3257 @translationof The staff-position property
3259 @cindex collisione tra oggetti all'interno del rigo
3261 Le pause d'intero di una voce possono entrare in collisione con le note
3262 di un'altra. Dal momento che queste pause sono centrate rispetto
3263 alle stanghette della battuta, calcolare quali altre note potrebbero
3264 sovrapporsi richiederebbe un notevole grado d'elaborazione, dato che l'attuale
3265 gestione delle collisioni tra note e tra note e pause riguarda solo
3266 le note e le pause simultanee. Ecco un esempio
3267 di collisione di questo tipo:
3269 @lilypond[quote,verbatim,ragged-right]
3270 << \relative { c'4 c c c } \\ { R1 } >>
3273 In questo caso la soluzione migliore è spostare in basso la pausa d'intero, poiché
3274 si trova nella seconda voce. In @code{\voiceTwo} (ovvero nella seconda
3275 voce di un costrutto @code{<<@{@dots{}@} \\ @{@dots{}@}>>}) il valore predefinito
3276 di @code{staff-position} è -4 per la pausa multipla (MultiMeasureRest), quindi
3277 dobbiamo spostarla più in basso, ad esempio di altri quattro semispazi del
3278 rigo; il nuovo valore sarà @w{@code{-8}}.
3280 @cindex MultiMeasureRest, esempio di sovrascrittura
3281 @cindex proprietà staff-position, esempio
3282 @cindex staff-position, esempio
3284 @lilypond[quote,verbatim,ragged-right]
3286 \relative { c'4 c c c }
3288 \override MultiMeasureRest.staff-position = #-8
3293 Questa soluzione è preferibile all'uso di @code{extra-offset}, perché
3294 il taglio addizionale sopra la pausa è inserito automaticamente.
3296 @node La proprietà extra-offset
3297 @unnumberedsubsubsec La proprietà @code{extra-offset}
3298 @translationof The extra-offset property
3300 @cindex posizionare gli oggetti
3301 @cindex posizionare i grob
3302 @cindex oggetti, posizionarli
3303 @cindex grob, posizionarli
3305 La proprietà @code{extra-offset} fornisce un controllo completo
3306 sul posizionamento di un oggetto sia in orizzontale che in verticale.
3308 Nell'esempio seguente, la seconda diteggiatura viene spostata un po' a
3309 sinistra e in basso di 1.8 spazi rigo:
3311 @cindex Fingering, esempio di sovrascrittura
3312 @cindex proprietà extra-offset, esempio
3313 @cindex extra-offset, esempio
3315 @lilypond[quote,fragment,relative=1,verbatim]
3318 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3323 @node La proprietà positions
3324 @unnumberedsubsubsec La proprietà @code{positions}
3325 @translationof The positions property
3327 @cindex controllo manuale di graffette dei gruppi irregolari, travature, legature di portamento e di frase
3328 @cindex travature dei gruppi irregolari, controllo manuale
3329 @cindex legature di portamento, controllo manuale
3330 @cindex legature di frase, controllo manuale
3331 @cindex travature, controllo manuale
3333 La proprietà @code{positions} permette di controllare manualmente la
3334 posizione verticale e quindi l'inclinazione delle graffette dei
3335 gruppi irregolari, delle legature di portamento e di frase e
3336 delle travature. Ecco un esempio in cui una legatura di frase
3337 e una legatura di portamento collidono:
3339 @lilypond[quote,verbatim,ragged-right]
3340 \relative { a'8 \( ( a'16 ) a \) }
3343 @cindex PhrasingSlur, esempio di sovrascrittura
3344 @cindex proprietà positions, esempio
3345 @cindex positions, esempio
3348 Si potrebbero spostare più in alto le due estremità della legatura
3349 di frase. Possiamo provare a impostare quella sinistra su 2.5 spazi
3350 sopra la linea centrale e quella destra a 4.5 spazi; LilyPond
3351 sceglierà la legatura di frase tra quelle candidate che hanno le
3352 estremità più vicine a queste:
3354 @lilypond[quote,verbatim,fragment,ragged-right]
3355 \once \override PhrasingSlur.positions = #'(2.5 . 4.5)
3356 a'8 \( ( a''16 ) a'' \)
3359 È migliorato, ma perché non abbassare un po' l'estremità destra
3360 della legatura di portamento? Se provi vedrai che non può essere
3361 fatto in questo modo. Il motivo è che non ci sono legature di
3362 portamento candidate più basse di quella già selezionata, quindi
3363 in questo caso la proprietà @code{positions} non può produrre
3364 effetti. Tuttavia, legature di valore, di portamento e di frase
3365 @emph{possono} essere posizionate e disegnate in modo molto preciso
3366 se necessario. Per sapere come fare si veda @ruser{Modifica di legature di valore e di portamento}.
3368 Ecco un altro esempio. Vediamo che le travature collidono
3369 con le legature di valore:
3371 @lilypond[quote,verbatim,fragment,ragged-right]
3377 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3382 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3388 Si può risolvere spostando manualmente in su entrambi gli estremi della
3389 travatura dalla loro posizione di 1.81 spazi rigo sotto la linea
3390 centrale a, per esempio, 1:
3392 @cindex Beam, esempio di sovrascrittura
3393 @cindex proprietà positions, esempio
3394 @cindex positions, esempio
3396 @lilypond[quote,verbatim,fragment,ragged-right]
3403 \override Beam.positions = #'(-1 . -1)
3404 e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g''
3410 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3416 Come vedi, la sovrascrittura si applica anche alla seconda voce della seconda
3417 misura di otto note, ma a nessuna delle travature nella prima voce, nemmeno
3418 in quelle della seconda misura. Appena la sovrascrittura non è più attiva,
3419 deve essere ripristinato, come si vede.
3421 @node La proprietà force-hshift
3422 @unnumberedsubsubsec La proprietà @code{force-hshift}
3423 @translationof The force-hshift property
3425 Possiamo vedere ora come applicare le correzioni finali all'esempio di Chopin
3426 introdotto alla fine del paragrafo @ref{Sento le Voci}, che avevamo
3429 @lilypond[quote,verbatim,fragment,ragged-right]
3430 \new Staff \relative {
3445 La nota interna del primo accordo (ovvero il La bemolle della quarta
3446 voce) non deve essere allontanata dalla colonna della nota più
3447 alta, quindi usiamo @code{\shiftOff}.
3449 Nel secondo accordo preferiamo che il Fa sia allineato al La bemolle e che
3450 la nota più grave sia posizionata leggermente più a destra, in modo da
3451 evitare la collisione dei gambi. Per farlo dobbiamo impostare
3452 @code{force-hshift} nella colonna (@code{NoteColumn}) del Re bemolle
3453 grave in modo che si sposti a destra di mezzo spazio di rigo e @code{force-hshift}
3454 per il Fa su zero. Si usa @code{\once} per evitare che tali impostazioni
3455 si propaghino oltre il momento musicale immediato, sebbene in questo
3456 piccolo esempio il @code{\once} e il secondo @code{\override} nella quarta
3457 voce potrebbero essere omessi. Ma non sarebbe un esempio di buona pratica.
3459 Ecco il risultato finale:
3461 @cindex NoteColumn, esempio di sovrascrittura
3462 @cindex proprietà force-hshift, esempio
3463 @cindex force-hshift, esempio
3465 @lilypond[quote,verbatim,fragment,ragged-right]
3466 \new Staff \relative {
3471 { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des }
3474 { \once \shiftOff aes'2 \once \shiftOff f4 fes }
3481 @node Esempio musicale
3482 @subsection Esempio musicale
3483 @translationof Real music example
3485 Completiamo questa sezione delle modifiche (@emph{tweak}) mostrando passo passo
3486 come affrontare un esempio complesso che necessita varie modifiche per
3487 poter raggiungere l'aspetto desiderato. L'esempio è stato scelto
3488 appositamente per mostrare come usare la guida alla Notazione per
3489 risolvere problemi inusuali di notazione. Non rispecchia l'uso
3490 abituale di LilyPond, quindi non farti scoraggiare da queste difficoltà!
3491 Per fortuna problemi come questi sono molto rari!
3493 L'esempio è tratto dalla Première Ballade op. 23 di Chopin e va
3494 dalla battuta 6 alla 9, la transizione dal Lento iniziale al Moderato.
3495 Vediamo prima come vogliamo che l'output appaia; per evitare di
3496 complicare troppo l'esempio abbiamo però tolto le dinamiche, le diteggiature
3497 e le pedalizzazioni.
3499 @c The following should appear as music without code
3500 @c This example should not be indexed
3501 @c line-width ensures no break
3502 @lilypond[quote,ragged-right,line-width=6\in]
3503 rhMusic = \relative {
3506 \once \override Tie.staff-position = #3.5
3510 \mergeDifferentlyHeadedOn
3511 \mergeDifferentlyDottedOn
3512 bes2.\tempo "Moderato" r8
3518 % Riposiziona il c2 a destra della nota unita
3519 \once \override NoteColumn.force-hshift = #1.0
3520 % Sposta il c2 fuori dalla colonna della nota principale
3521 % in modo che l'unione di note (merge) funzioni
3528 % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3530 % Il gambo di d2 deve essere invisibile
3531 \tweak Stem.transparent ##t
3539 \mergeDifferentlyHeadedOff
3540 \mergeDifferentlyDottedOff
3545 lhMusic = \relative {
3547 <d g, d>1)\arpeggio |
3554 \new Staff = "RH" <<
3558 \new Staff = "LH" <<
3567 Vediamo che la parte della mano destra nella terza battuta
3568 richiede quattro voci. Si tratta delle cinque crome unite da travatura,
3569 il Do legato, la minima di Re che è unita alla croma di
3570 Re, e la semiminima puntata del Fa diesis, anch'essa unita
3571 alla croma della stessa altezza. Tutto il resto è su una
3572 voce singola, quindi il sistema più semplice è introdurre queste
3573 ulteriori voci temporaneamente, quando sono richieste. Se ti
3574 sei dimenticato come fare, rileggi i paragrafi @ref{Sento le Voci} e
3575 @ref{Definire esplicitamente le voci}. In questo caso scegliamo di
3576 usare per il passaggio polifonico le voci definite esplicitamente, dato
3577 che LilyPond riesce a evitare meglio le collisioni se tutte le voci
3578 sono definite esplicitamente in questo modo.
3580 Dunque iniziamo con l'inserire le note in due variabili, impostare la
3581 struttura del rigo in un blocco \score e vedere che cosa LilyPond
3582 produce senza modifiche manuali:
3584 @c line-width ensures no break
3585 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3586 rhMusic = \relative {
3592 % Inizia la sezione polifonica a quattro voci
3594 { c,8 d fis bes a } % continuazione della voce principale
3608 g2. % continuazione della voce principale
3612 lhMusic = \relative {
3621 \new Staff = "RH" <<
3625 \new Staff = "LH" <<
3634 Le note sono giuste ma l'aspetto è ben lontano dall'essere
3635 soddisfacente. La legatura collide col nuovo segno di tempo,
3636 alcune note non sono accorpate e mancano vari elementi
3637 della notazione. Partiamo dalle cose più semplici. Possiamo
3638 aggiungere la legatura di portamento della mano sinistra e la legatura
3639 di frase della mano destra, dato che queste sono state già trattate
3640 nel Tutorial. In questo modo abbiamo:
3642 @c line-width ensures no break
3643 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3644 rhMusic = \relative {
3650 % Inizia la sezione polifonica a quattro voci
3652 { c,8 d fis bes a } % continuazione della voce principale
3666 g2.\) % continuazione della voce principale
3670 lhMusic = \relative {
3679 \new Staff = "RH" <<
3683 \new Staff = "LH" <<
3692 Ora la prima battuta è corretta. La seconda battuta contiene un arpeggio e
3693 è terminata da una stanghetta doppia. Dato che non sono stati menzionati
3694 in questo manuale di Apprendimento, come possiamo ottenerli? Dobbiamo
3695 andare a vedere nella guida alla Notazione. Cercando nell'indice
3696 i termini @qq{arpeggio} e @qq{stanghetta}, scopriamo rapidamente che un arpeggio
3697 viene prodotto posponendo @code{\arpeggio} a un accordo e che la stanghetta
3698 doppia si ottiene col comando @code{\bar "||"}. Questo è stato facile. Ora
3699 dobbiamo correggere la collisione della legatura di valore con l'indicazione di tempo.
3700 Il modo migliore è spostare la legatura verso l'alto. Lo spostamento degli oggetti
3701 è stato trattato prima in @ref{Spostare gli oggetti}, dove si dice che gli oggetti
3702 posizionati relativamente al rigo possono essere spostati verticalmente
3703 sovrascrivendo la proprietà @code{staff-position}, specificata in metà spazi-rigo
3704 rispetto alla linea centrale del rigo. Dunque la seguente sovrascrittura
3705 posizionata proprio prima della prima nota della legatura sposta la legatura
3706 3.5 mezzi spazi di rigo sopra la linea centrale:
3708 @code{\once \override Tie.staff-position = #3.5}
3710 Questo completa la seconda battuta:
3712 @c line-width ensures no break
3713 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3714 rhMusic = \relative {
3717 \once \override Tie.staff-position = #3.5
3722 % Inizia la sezione polifonica a quattro voci
3724 { c,8 d fis bes a } % continuazione della voce principale
3738 g2.\) % continuazione della voce principale
3742 lhMusic = \relative {
3744 <d g, d>1)\arpeggio |
3751 \new Staff = "RH" <<
3755 \new Staff = "LH" <<
3764 Proseguiamo con la terza battuta e l'inizio della sezione del Moderato. Nel
3765 tutorial abbiamo visto come aggiungere un'indicazione di tempo col comando
3766 @code{\tempo}, quindi aggiungere @qq{Moderato} è facile. Ma come facciamo
3767 ad accorpare le note appartenenti a voci diverse? Ancora una volta
3768 dobbiamo rivolgerci alla guida alla Notazione per un aiuto. Una ricerca
3769 del termine @qq{accorpare} (in inglese @emph{merge}) nell'indice della guida
3770 ci porta rapidamente al paragrafo @ruser{Risoluzione delle collisioni}, dove
3771 troviamo i comandi per allineare le note con teste e punti diversi. Nel
3772 nostro esempio abbiamo bisogno di accorpare entrambi i tipi di note per la
3773 durata della sezione polifonica della terza battuta. Dunque, usando le
3774 informazioni trovate nella guida alla Notazione, aggiungiamo
3777 \mergeDifferentlyHeadedOn
3778 \mergeDifferentlyDottedOn
3782 all'inizio di questa sezione e
3785 \mergeDifferentlyHeadedOff
3786 \mergeDifferentlyDottedOff
3790 alla fine, ottenendo:
3792 @c line-width ensures no break
3793 @lilypond[quote,ragged-right,line-width=6\in]
3794 rhMusic = \relative {
3797 \once \override Tie.staff-position = #3.5
3801 bes2.\tempo "Moderato" r8
3802 \mergeDifferentlyHeadedOn
3803 \mergeDifferentlyDottedOn
3804 % Inizia la sezione polifonica a quattro voci
3806 { c,8 d fis bes a } % continuazione della voce principale
3820 \mergeDifferentlyHeadedOff
3821 \mergeDifferentlyDottedOff
3822 g2.\) % continuazione della voce principale
3826 lhMusic = \relative {
3828 <d g, d>1)\arpeggio |
3835 \new Staff = "RH" <<
3839 \new Staff = "LH" <<
3848 Queste sovrascritture hanno accorpato i due Fa diesis, ma non i due
3849 Re. Perché? La risposta si trova nella stessa sezione della
3850 guida alla Notazione: le note da unire devono avere i gambi in
3851 direzioni opposte e due note non possono essere accorpate se c'è
3852 una terza nota nella stessa colonna. In questo esempio i due Re
3853 hanno entrambi i gambi in su e c'è una terza nota, il Do. Sappiamo
3854 come cambiare la direzione dei gambi con @code{\stemDown} e la
3855 guida alla Notazione ci dice anche come spostare il Do, applicando
3856 uno spostamento con uno dei comandi @code{\shift}. Ma quale? Il Do
3857 si trova nella seconda voce che ha lo spostamento (@emph{shift}) disattivato,
3858 mentre i due Re sono nella prima e nella terza voce, che ce l'hanno
3859 rispettivamente disattivato e attivato. Dunque dobbiamo distanziare il
3860 Do di un ulteriore livello usando @code{\shiftOnn} per evitare che
3861 interferisca con i due Re. Applicando queste modifiche abbiamo:
3863 @cindex Tie, esempio di sovrascrittura
3864 @cindex proprietà staff-position, esempio
3865 @cindex staff-position, esempio
3867 @c line-width ensures no break
3868 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3869 rhMusic = \relative {
3872 \once \override Tie.staff-position = #3.5
3876 bes2.\tempo "Moderato" r8
3877 \mergeDifferentlyHeadedOn
3878 \mergeDifferentlyDottedOn
3879 % Inizia la sezione polifonica a quattro voci
3881 { c,8 d fis bes a } % continuazione della voce principale
3884 % Sposta il c2 fuori dalla colonna della nota principale
3885 % in modo che l'unione di note funzioni
3890 % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3898 \mergeDifferentlyHeadedOff
3899 \mergeDifferentlyDottedOff
3900 g2.\) % continuazione della voce principale
3904 lhMusic = \relative {
3906 <d g, d>1)\arpeggio |
3913 \new Staff = "RH" <<
3917 \new Staff = "LH" <<
3926 Ci siamo quasi, restano solo due problemi: il gambo in giù del
3927 Re unito non ci dovrebbe essere e il Do dovrebbe essere posizionato
3928 a destra dei Re. Sappiamo come fare grazie alle modifiche precedenti:
3929 rendiamo il gambo trasparente e spostiamo il Do con la proprietà
3930 @code{force-hshift}. Ecco il risultato finale:
3932 @cindex NoteColumn, esempio di sovrascrittura
3933 @cindex proprietà force-hshift, esempio
3934 @cindex force-hshift, esempio
3935 @cindex Stem, esempio di sovrascrittura
3936 @cindex proprietà transparent, esempio
3937 @cindex transparent, esempio
3939 @c line-width ensures no break
3940 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3941 rhMusic = \relative {
3944 \once \override Tie.staff-position = #3.5
3948 bes2.^\markup { \bold "Moderato" } r8
3949 \mergeDifferentlyHeadedOn
3950 \mergeDifferentlyDottedOn
3951 % Inizia la sezione polifonica a quattro voci
3953 { c,8 d fis bes a } % continuazione della voce principale
3957 % Riposiziona il c2 a destra della nota unita
3958 \once \override NoteColumn.force-hshift = #1.0
3959 % Sposta il c2 fuori dalla colonna della nota principale
3960 % in modo che l'unione di note funzioni
3967 % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3969 % Il gambo di d2 deve essere invisibile
3970 \tweak Stem.transparent ##t
3978 \mergeDifferentlyHeadedOff
3979 \mergeDifferentlyDottedOff
3980 g2.\) % continuazione della voce principale
3984 lhMusic = \relative {
3986 <d g, d>1)\arpeggio |
3993 \new Staff = "RH" <<
3997 \new Staff = "LH" <<
4007 @node Altre modifiche
4008 @section Altre modifiche
4009 @translationof Further tweaking
4012 * Altri usi delle modifiche con \tweak::
4013 * Uso delle variabili per modificare la formattazione::
4015 * Altre fonti di informazione::
4016 * Modifiche avanzate con Scheme::
4019 @node Altri usi delle modifiche con \tweak
4020 @subsection Altri usi delle modifiche con @code{\tweak}
4021 @translationof Other uses for tweaks
4024 * Legature di valore tra note di voci diverse::
4025 * Simulare una corona nel MIDI::
4028 @cindex rimuovere gli oggetti
4029 @cindex oggetti, rimuoverli
4031 @node Legature di valore tra note di voci diverse
4032 @unnumberedsubsubsec Legature di valore tra note di voci diverse
4033 @translationof Tying notes across voices
4035 @cindex legature di valore tra note di voci diverse
4037 L'esempio seguente mostra come unire con legature di valore
4038 note appartenenti a voci diverse. Di norma, solo le note nella
4039 stessa voce possono essere unite da una legatura di valore.
4040 Se si usano due voci con le note legate in una voce
4043 << { b'8~ 8\noBeam } \\ { b'8[ g'] } >>
4047 e si toglie il primo gambo di quella voce e la sua coda, la legatura sembra
4048 attraversare le voci:
4050 @cindex Stem, esempio di rimozione
4051 @cindex Flag, esempio di rimozione
4052 @cindex @code{\omit}, esempio
4054 @lilypond[quote,verbatim]
4067 Manuale di apprendimento:
4068 @ref{Il prefisso once,,Il prefisso @code{@bs{}once}},
4069 @ref{La proprietà stencil}.
4072 @node Simulare una corona nel MIDI
4073 @unnumberedsubsubsec Simulare una corona nel MIDI
4074 @translationof Simulating a fermata in MIDI
4076 @cindex proprietà stencil, uso della
4077 @cindex corona, usarla nel MIDI
4079 Per gli oggetti esterni al rigo è di solito preferibile sovrascrivere
4080 la proprietà @code{stencil} piuttosto che la proprietà @code{transparent}
4081 dell'oggetto se si desidera toglierlo dall'output. Se si imposta la
4082 proprietà @code{stencil} su @code{#f} l'oggetto verrà completamente
4083 rimosso dall'output e quindi non potrà influenzare la disposizione
4084 di altri oggetti posizionati rispetto a esso.
4086 Ad esempio, se volessimo modificare il segno di metronomo solo per
4087 simulare una corona nel MIDI, non vorremmo che il segno apparisse
4088 nella partitura né vorremmo influenzare la spaziatura tra i due
4089 sistemi o la posizione di annotazioni adiacenti nel rigo. Dunque,
4090 il modo migliore è impostare la proprietà @code{stencil} su
4091 @code{#f}. Ecco l'effetto dei due metodi:
4093 @cindex MetronomeMark, esempio di sovrascrittura
4094 @cindex proprietà transparent, esempio
4095 @cindex transparent, esempio
4097 @lilypond[quote,verbatim,ragged-right]
4100 % Indicazione di tempo visibile
4103 \once \hide Score.MetronomeMark
4104 % Indicazione di tempo invisibile per allungare la fermata nel MIDI
4107 % Nuovo tempo per la sezione successiva
4116 @cindex MetronomeMark, esempio di sovrascrittura
4117 @cindex proprietà stencil, esempio
4118 @cindex stencil, esempio
4120 @lilypond[quote,verbatim,ragged-right]
4123 % Indicazione di tempo visibile
4126 \once \omit Score.MetronomeMark
4127 % Indicazione di tempo invisibile per allungare la fermata nel MIDI
4130 % Nuovo tempo per la sezione successiva
4140 Entrambi i metodi tolgono dalla partitura l'indicazione metronomica
4141 ed entrambi cambiano il tempo del MIDI come volevamo, ma nel primo esempio l'indicazione
4142 metronomica trasparente sposta troppo in alto
4143 l'indicazione di tempo successiva, mentre nel secondo esempio, dove
4144 viene tolto lo stampo (@emph{stencil}), ciò non accade.
4148 @rglosnamed{system,sistema}.
4150 @node Uso delle variabili per modificare la formattazione
4151 @subsection Uso delle variabili per modificare la formattazione
4152 @translationof Using variables for layout adjustments
4154 @cindex variabili, usarle per le sovrascritture
4155 @cindex sovrascritture, usare le variabili per
4156 @cindex formattazione, usare le variabili per modificare la
4158 I comandi di sovrascrittura sono spesso lunghi e tediosi da
4159 scrivere, e devono essere assolutamente corretti. Se si usa
4160 più volte la stessa sovrascrittura conviene definire una
4161 variabile che la contenga.
4163 Immaginiamo di voler enfatizzare certe parole del testo usando
4164 grassetto e corsivo. I comandi @code{\italic} (corsivo) e @code{\bold}
4165 (grassetto) funzionano all'interno del testo solo se inclusi,
4166 insieme alla parola o alle parole da modificare, in un blocco
4167 @code{\markup}: dunque sono scomodi da inserire. Dovendo inserire
4168 le parole stesse non si possono usare variabili semplici. Come
4169 alternativa possiamo usare i comandi @code{\override} e @code{\revert}?
4172 \override Lyrics.LyricText.font-shape = #'italic
4173 \override Lyrics.LyricText.font-series = #'bold
4175 \revert Lyrics.LyricText.font-shape
4176 \revert Lyrics.LyricText.font-series
4179 Anche questi sarebbero molto noiosi da inserire se ci fossero
4180 molte parole che richiedono enfasi. Ma possiamo inserirli
4181 in due variabili e poi usare queste per le parole da enfatizzare.
4182 Un altro vantaggio dell'uso di variabili per queste sovrascritture
4183 è che gli spazi intorno al punto non sono necessari, perché non
4184 sono interpretati direttamente in @code{\lyricmode}. Ecco un
4185 esempio, anche se nella pratica comune avremmo scelto dei nomi
4186 più brevi per le variabili in modo da poterle inserire più
4189 @cindex LyricText, esempio di sovrascrittura
4190 @cindex proprietà font-shape, esempio
4191 @cindex font-shape, esempio
4192 @cindex proprietà font-series, esempio
4193 @cindex font-series, esempio
4195 @lilypond[quote,verbatim]
4197 \override Lyrics.LyricText.font-shape = #'italic
4198 \override Lyrics.LyricText.font-series = #'bold
4202 \revert Lyrics.LyricText.font-shape
4203 \revert Lyrics.LyricText.font-series
4206 global = { \key c \major \time 4/4 \partial 4 }
4208 SopranoMusic = \relative { c'4 | e4. e8 g4 g | a4 a g }
4209 AltoMusic = \relative { c'4 | c4. c8 e4 e | f4 f e }
4210 TenorMusic = \relative { e4 | g4. g8 c4. b8 | a8 b c d e4 }
4211 BassMusic = \relative { c4 | c4. c8 c4 c | f8 g a b c4 }
4213 VerseOne = \lyrics {
4214 E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
4217 VerseTwo = \lyricmode {
4218 O | \once \emphasize Christ, whose voice the | wa -- ters heard,
4221 VerseThree = \lyricmode {
4222 O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
4225 VerseFour = \lyricmode {
4226 O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
4233 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
4234 \new Voice = "Alto" { \voiceTwo \AltoMusic }
4235 \new Lyrics \lyricsto "Soprano" { \VerseOne }
4236 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
4237 \new Lyrics \lyricsto "Soprano" { \VerseThree }
4238 \new Lyrics \lyricsto "Soprano" { \VerseFour }
4242 \new Voice = "Tenor" { \voiceOne \TenorMusic }
4243 \new Voice = "Bass" { \voiceTwo \BassMusic }
4250 @node Fogli di stile
4251 @subsection Fogli di stile
4252 @translationof Style sheets
4254 L'output prodotto da LilyPond può essere ampiamente modificato, come
4255 abbiamo visto nel capitolo @ref{Modifica dell'output}. Ma se avessi molti
4256 file di input a cui voler applicare delle modifiche? O se volessi
4257 semplicemente separare le modifiche dalla musica vera e propria?
4260 Prendiamo un esempio. Non ti preoccupare se non capisci le
4261 parti che hanno @code{#()}; verranno spiegate nel capitolo
4262 @ref{Modifiche avanzate con Scheme}.
4264 @lilypond[quote,verbatim,ragged-right]
4266 \tweak self-alignment-X #-0.6
4267 #(make-dynamic-script
4268 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4271 #(define-music-function
4274 #{ <>^\markup \bold \box #string #})
4278 a'4.\mpdolce d8 cis4--\glissando a |
4282 g8(\! fis)-. e( d)-. cis2 |
4286 Facciamo qualcosa a proposito delle definizioni di @code{mpdolce} e
4287 @code{inst}. Producono l'output che desideriamo, ma potremmo volerle
4288 usare in un altro brano. Potremmo semplicemente copiarle e incollarle
4289 in cima a ogni file, ma sarebbe una seccatura e lascerebbe queste
4290 definizioni nel file di input; personalmente trovo tutti quei @code{#()}
4291 piuttosto brutti, dunque nascondiamoli in un altro file:
4294 %%% salva queste righe in un file chiamato "definitions.ily"
4296 \tweak self-alignment-X #-0.6
4297 #(make-dynamic-script
4298 #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4302 #(define-music-function
4305 #@{ <>^\markup \bold \box #string #@})
4308 Ci riferiremo a questo file tramite il comando @code{\include} in cima
4309 al file dove c'è la musica. Si usa l'estensione @file{.ily} per distinguere
4310 il file da includere, che non intendiamo compilare da solo, dal file principale.
4311 Ora modifichiamo la musica (e salviamo questo file come @file{music.ly}).
4313 @c We have to do this awkward example/lilypond-non-verbatim
4314 @c because we can't do the \include stuff in the manual.
4317 \include "definitions.ily"
4321 a'4.\mpdolce d8 cis4--\glissando a |
4325 g8(\! fis)-. e( d)-. cis2 |
4329 @lilypond[quote,ragged-right]
4331 \tweak self-alignment-X #-0.6
4332 #(make-dynamic-script
4333 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4336 #(define-music-function
4339 #{ <>^\markup \bold \box #string #})
4343 a'4.\mpdolce d8 cis4--\glissando a |
4347 g8(\! fis)-. e( d)-. cis2 |
4351 L'aspetto è migliore, ma facciamo ancora qualche modifica. Il glissando si
4352 vede appena, rendiamolo quindi più spesso e più vicino alle teste di nota.
4353 Mettiamo l'indicazione metronomica al di sopra della chiave invece che della prima
4354 nota. E, infine, dato che il mio professore di composizione odia l'indicazione
4355 di tempo @qq{C}, usiamo @qq{4/4} al suo posto.
4357 Ma non devi cambiare @file{music.ly} bensì @file{definitions.ily}, in
4363 \tweak self-alignment-X #-0.6
4364 #(make-dynamic-script
4365 #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4368 #(define-music-function
4371 #@{ <>^\markup \bold \box #string #@})
4376 \override MetronomeMark.extra-offset = #'(-5 . 0)
4377 \override MetronomeMark.padding = #'3
4381 \override TimeSignature.style = #'numbered
4385 \override Glissando.thickness = #3
4386 \override Glissando.gap = #0.1
4391 @lilypond[quote,ragged-right]
4393 \tweak self-alignment-X #-0.6
4394 #(make-dynamic-script
4395 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4398 #(define-music-function
4401 #{ <>^\markup \bold \box #string #})
4406 \override MetronomeMark.extra-offset = #'(-5 . 0)
4407 \override MetronomeMark.padding = #'3
4411 \override TimeSignature.style = #'numbered
4415 \override Glissando.thickness = #3
4416 \override Glissando.gap = #0.1
4422 a'4.\mpdolce d8 cis4--\glissando a |
4426 g8(\! fis)-. e( d)-. cis2 |
4430 Ora l'aspetto è decisamente migliore! Supponiamo ora di voler pubblicare
4431 questo brano. Il mio professore di composizione non ama il segno di
4432 tempo @qq{C}, mentre a me piace. Copiamo l'attuale file @file{definitions.ily}
4433 in @file{web-publish.ily} e modifichiamolo. Dato che questa musica
4434 verrà distribuita su un pdf da leggere a schermo, aumenteremo anche
4435 la dimensione complessiva dell'output.
4440 \tweak self-alignment-X #-0.6
4441 #(make-dynamic-script
4442 #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4445 #(define-music-function
4448 #@{ <>^\markup \bold \box #string #@})
4450 #(set-global-staff-size 23)
4455 \override MetronomeMark.extra-offset = #'(-5 . 0)
4456 \override MetronomeMark.padding = #'3
4463 \override Glissando.thickness = #3
4464 \override Glissando.gap = #0.1
4469 @lilypond[quote,ragged-right]
4471 \tweak self-alignment-X #-0.6
4472 #(make-dynamic-script
4473 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4476 #(define-music-function
4479 #{ <>^\markup \bold \box #string #})
4481 #(set-global-staff-size 23)
4485 \override MetronomeMark.extra-offset = #'(-5 . 0)
4486 \override MetronomeMark.padding = #'3
4489 \override Glissando.thickness = #3
4490 \override Glissando.gap = #0.1
4496 a'4.\mpdolce d8 cis4--\glissando a |
4500 g8(\! fis)-. e( d)-. cis2 |
4504 Nel file che contiene la musica non rimane che sostituire
4505 @code{\include "definitions.ily"} con
4506 @code{\include "web-publish.ily"}. Potremmo usare un sistema
4507 ancora più conveniente: creare un file @file{definitions.ily} che
4508 contenga solo le definizioni di @code{mpdolce} e @code{inst}, un file
4509 @file{web-publish.ily} che contenga solo la sezione @code{\layout}
4510 vista prima, e un file @file{university.ily} che contenga solo le
4511 modifiche necessarie per produrre l'output preferito dal mio
4512 professore. L'inizio di @file{music.ly} apparirebbe così:
4515 \include "definitions.ily"
4517 %%% Una sola di queste linee deve essere commentata
4518 \include "web-publish.ily"
4519 %\include "university.ily"
4522 Questo approccio può essere utile anche se si sta creando un
4523 insieme di parti. Uso una mezza dozzina di diversi
4524 @q{fogli di stile} per i miei progetti. Faccio iniziare
4525 ogni file musicale con @code{\include "../global.ily"}, che contiene
4529 \version @w{"@version{}"}
4531 #(ly:set-option 'point-and-click #f)
4533 \include "../init/init-defs.ly"
4534 \include "../init/init-layout.ly"
4535 \include "../init/init-headers.ly"
4536 \include "../init/init-paper.ly"
4540 @node Altre fonti di informazione
4541 @subsection Altre fonti di informazione
4542 @translationof Other sources of information
4544 La guida al Funzionamento interno contiene molte informazioni su
4545 LilyPond, ma si possono trovare ancora più informazioni nei file
4546 interni di LilyPond. Per studiarli devi prima trovare la giusta
4547 directory nel tuo sistema operativo. Il percorso di questa
4548 directory dipende da quale sistema operativo si sta usando e da
4549 come si è ottenuto LilyPond, se scaricando un binario precompilato
4550 da lilypond.org oppure installandolo da un gestore di pacchetti
4551 (come nelle distribuzioni GNU/Linux o nelle istallazioni tramite
4552 fink o cygwin) o compilandolo dai sorgenti:
4554 @subsubheading Scaricato da lilypond.org
4561 @file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/}
4568 @file{@var{INSTALLDIR}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4571 usando @code{cd} in un terminale per entrare in questa
4572 directory oppure facendo un Ctrl+click sull'applicazione LilyPond e
4573 scegliendo @qq{Mostra i contenuti dei pacchetti}.
4577 Con Windows Explorer vai in
4579 @file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/}
4584 @subsubheading Istallato da un gestore di pacchetti o compilato da sorgenti
4587 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, dove
4588 @var{PREFIX} è definito dal gestore pacchetti o dallo
4589 script @code{configure} e @var{X.Y.Z} è il numero di
4590 versione di LilyPond.
4594 All'interno di questa directory le due sottodirectory interessanti sono
4597 @item @file{ly/} - contiene i file nel linguaggio di LilyPond
4598 @item @file{scm/} - contiene i file nel linguaggio Scheme
4601 Iniziamo col vedere alcuni file in @file{ly/}.
4602 Apri @file{ly/property-init.ly} in un editor di testo. Quello
4603 che usi normalmente per i file @code{.ly} va bene. Questo file
4604 contiene le definizioni di tutti i comandi predefiniti standard
4605 di LilyPond, come @code{\tieUp} e @code{\slurDotted}. Vedrai
4606 che questi non sono altro che definizioni di variabili che
4607 contengono uno o più comandi @code{\override}. Ad esempio,
4608 @code{\tieDotted} è definito così:
4612 \override Tie.dash-period = #0.75
4613 \override Tie.dash-fraction = #0.1
4617 Se non ti piacciono i valori predefiniti, puoi facilmente
4618 definire nuovamente questi comandi, proprio come qualsiasi
4619 altra variabile, all'inizio del file di input.
4621 Ecco i file più utili che si trovano in @file{ly/}:
4623 @multitable @columnfractions .4 .6
4624 @headitem Nome del file
4626 @item @file{ly/engraver-init.ly}
4627 @tab Definizioni dei contesti degli incisori (@emph{engraver})
4628 @item @file{ly/paper-defaults-init.ly}
4629 @tab Specifiche dei valori predefiniti relativi al foglio
4630 @item @file{ly/performer-init.ly}
4631 @tab Definizioni dei contesti dei @emph{performer}
4632 @item @file{ly/property-init.ly}
4633 @tab Definizioni di tutti i comandi predefiniti più comuni
4634 @item @file{ly/spanner-init.ly}
4635 @tab Definizioni dei comandi predefiniti relativi agli estensori (@emph{spanner})
4638 Altre impostazioni (come le definizioni dei comandi di markup) sono
4639 salvate come file @file{.scm} (Scheme). Il linguaggio di programmazione
4640 Scheme serve a fornire un'interfaccia di programmazione per modificare
4641 il funzionamento interno di LilyPond. Una spiegazione dettagliata di
4642 questi file non rientra nell'obiettivo di questo manuale, dal momento che
4643 è necessario conoscere il linguaggio Scheme. Avvisiamo gli utenti che
4644 è richiesta una notevole quantità di abilità tecnica o di tempo per
4645 comprendere Scheme e questi file (vedi @rextend{Scheme tutorial}).
4647 Nel caso tu conosca Scheme, i file che potrebbero essere di interesse sono:
4649 @multitable @columnfractions .4 .6
4650 @headitem Nome del file
4652 @item @file{scm/auto-beam.scm}
4653 @tab Valori predefiniti della disposizione delle travature
4654 @item @file{scm/define-grobs.scm}
4655 @tab Impostazioni predefinite delle proprietà dei grob
4656 @item @file{scm/define-markup-commands.scm}
4657 @tab Definizione di tutti i comandi di markup
4658 @item @file{scm/midi.scm}
4659 @tab Impostazioni predefinite dell'output MIDI
4660 @item @file{scm/output-lib.scm}
4661 @tab Impostazioni che modificano l'aspetto di tasti, colori,
4662 alterazioni, stanghette, etc.
4663 @item @file{scm/parser-clef.scm}
4664 @tab Definizioni delle chiavi supportate
4665 @item @file{scm/script.scm}
4666 @tab Impostazioni predefinite delle articolazioni
4670 @node Modifiche avanzate con Scheme
4671 @subsection Modifiche avanzate con Scheme
4672 @translationof Advanced tweaks with Scheme
4674 Anche se molte cose sono possibili con i comandi @code{\override} e
4675 @code{\tweak}, un modo ancor più potente di modificare l'azione
4676 di LilyPond è resa possibile da un interfaccia programmabile al
4677 funzionamento interno di LilyPond. Il codice scritto nel linguaggio
4678 di programmazione Scheme può essere incorporato direttamente nel
4679 funzionamento interno di LilyPond. Ovviamente, per farlo è necessaria
4680 almeno una conoscenza di base della programmazione in Scheme;
4681 abbiamo scritto un'introduzione in @rextend{Scheme tutorial}.
4683 Come esempio di una delle tante possibilità, invece di impostare
4684 una proprietà su un valore costante, si può impostare su una
4685 procedura Scheme che viene poi chiamata ogni volta che LilyPond
4686 accede a quella proprietà. La proprietà può essere poi impostata
4687 dinamicamente su un valore determinato dalla procedura nel momento
4688 in cui viene chiamata. In questo esempio coloriamo le teste delle
4689 note in base alla loro posizione sul rigo.
4691 @cindex funzione x11-color, esempio d'uso
4692 @cindex x11-color, esempio d'uso
4693 @cindex NoteHead, esempio di sovrascrittura
4694 @cindex proprietà color, impostare su procedura Scheme
4695 @cindex color, impostare su procedura Scheme
4697 @lilypond[quote,verbatim,ragged-right]
4698 #(define (color-notehead grob)
4699 "Colora le teste di nota in base alla loro posizione sul rigo."
4700 (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4703 ;; Return rainbow colors
4704 ((1) (x11-color 'red )) ; for C
4705 ((2) (x11-color 'orange )) ; for D
4706 ((3) (x11-color 'yellow )) ; for E
4707 ((4) (x11-color 'green )) ; for F
4708 ((5) (x11-color 'blue )) ; for G
4709 ((6) (x11-color 'purple )) ; for A
4710 ((0) (x11-color 'violet )) ; for B
4714 % Fa sì che il colore sia preso dalla procedura color-notehead
4715 \override NoteHead.color = #color-notehead
4716 a2 b | c2 d | e2 f | g2 a |
4720 Altri esempi che mostrano l'uso di queste interfacce programmabili
4721 si trovano in @rextend{Callback functions}.