]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/it/learning/tweaks.itely
New upstream version 2.19.65
[lilypond.git] / Documentation / it / learning / tweaks.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
2
3 @ignore
4     Translation of GIT committish: db92af51a444062c8edaef3afa36f57375b8feeb
5
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..
9 @end ignore
10
11 @c \version "2.19.22"
12
13 @node Modifica dell'output
14 @chapter Modifica dell'output
15 @translationof Tweaking output
16
17 Questo capitolo spiega come modificare l'output.  LilyPond è estremamente
18 configurabile; praticamente si può modificare qualsiasi elemento dell'output.
19
20
21 @menu
22 * Modifiche di base::
23 * Manuale del Funzionamento interno::
24 * Aspetto degli oggetti::
25 * Posizionamento degli oggetti::
26 * Spaziatura verticale::
27 * Collisioni tra oggetti::
28 * Altre modifiche::
29 @end menu
30
31 @node Modifiche di base
32 @section Modifiche di base
33 @translationof Tweaking basics
34
35 @menu
36 * Introduzione alle modifiche::
37 * Oggetti e interfacce::
38 * Convenzioni per i nomi di oggetti e proprietà::
39 * Metodi di modifica::
40 @end menu
41
42 @node Introduzione alle modifiche
43 @subsection Introduzione alle modifiche
44 @translationof Introduction to tweaks
45
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.
52
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.
59
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.
64
65 @node Oggetti e interfacce
66 @subsection Oggetti e interfacce
67 @translationof Objects and interfaces
68
69 @cindex oggetto
70 @cindex oggetto grafico (grob)
71 @cindex estensore (spanner)
72 @cindex interfaccia
73 @cindex oggetto, proprietà dell'
74 @cindex proprietà dell'oggetto
75 @cindex oggetto di formattazione
76 @cindex formattazione, oggetto di
77
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.
81
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à.
95
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.
104
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}).
111
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}.
116
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.
122
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.
134
135 Questi sono dunque i termini principali riguardanti gli oggetti che useremo
136 in questo capitolo.
137
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
141
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
146
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
153 normalmente.
154
155 @multitable @columnfractions .33 .33 .33
156 @headitem Tipo di oggetto/proprietà
157   @tab Convenzione per il nome
158   @tab Esempi
159 @item Contesti
160   @tab Aaaa o AaaaAaaaAaaa
161   @tab Staff, GrandStaff
162 @item Oggetti di formattazione
163   @tab Aaaa o AaaaAaaaAaaa
164   @tab Slur, NoteHead
165 @item Incisori
166   @tab Aaaa_aaa_engraver
167   @tab Clef_engraver, Note_heads_engraver
168 @item Interfacce
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
177 @end multitable
178
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.
182
183 @seealso
184 Guida alla notazione:
185 @ruser{Modifica delle proprietà}.
186
187
188 @node Metodi di modifica
189 @subsection Metodi di modifica
190 @translationof Tweaking methods
191
192 @cindex metodi di modifica
193 @cindex modifica, metodi
194
195 @menu
196 * Il comando override::
197 * Il comando revert::
198 * Il prefisso once::
199 * Il comando overrideProperty::
200 * Il comando di ritocco tweak::
201 * Il prefisso single::
202 @end menu
203
204 @node Il comando override
205 @unnumberedsubsubsec Il comando @code{@bs{}override}
206 @translationof The override command
207
208 @cindex override, comando
209 @cindex override, sintassi
210
211 @funindex \override
212
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.
218
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
225 funziona.
226
227 La sintassi generale di questo comando è:
228
229 @example
230 \override @var{Contesto}.@var{OggettoDiFormattazione}.@var{proprietà-formattazione} = #@var{valore}
231 @end example
232
233 @noindent
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}.
237
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.
243
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.
248
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}.
256
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:
261
262 @cindex proprietà del colore, esempio
263 @cindex colore, proprietà del
264 @cindex NoteHead, esempio di sovrascrittura
265
266 @lilypond[quote,ragged-right,verbatim]
267 \relative {
268   c'4 d
269   \override NoteHead.color = #red
270   e4 f |
271   \override NoteHead.color = #green
272   g4 a b c |
273 }
274 @end lilypond
275
276 @node Il comando revert
277 @unnumberedsubsubsec Il comando @code{@bs{}revert}
278 @translationof The revert command
279
280 @cindex revert, comando
281 @cindex ripristino, comando \revert
282
283 @funindex \revert
284
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:
290
291 @example
292 \revert @var{Contesto}.@var{OggettoDiFormmattazione}.@var{proprietà-formattazione}
293 @end example
294
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:
299
300 @cindex proprietà del colore, esempio
301 @cindex colore, proprietà del
302 @cindex NoteHead, esempio di sovrascrittura
303
304 @lilypond[quote,ragged-right,verbatim]
305 \relative {
306   c'4 d
307   \override NoteHead.color = #red
308   e4 f |
309   \override NoteHead.color = #green
310   g4 a
311   \revert NoteHead.color
312   b4 c |
313 }
314 @end lilypond
315
316 @node Il prefisso once
317 @unnumberedsubsubsec Il prefisso @code{@bs{}once}
318 @translationof The once prefix
319
320 @funindex \once
321
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:
328
329 @cindex proprietà del colore, esempio
330 @cindex colore, proprietà del
331 @cindex NoteHead, esempio di sovrascrittura
332
333 @lilypond[quote,verbatim]
334 \relative {
335   c'4 d
336   \override NoteHead.color = #red
337   e4 f |
338   \once \override NoteHead.color = #green
339   g4 a
340   \revert NoteHead.color
341   b c |
342 }
343 @end lilypond
344
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:
347
348 @lilypond[quote,verbatim]
349 \relative {
350   c'4( d)
351   \once \slurDashed
352   e4( f) |
353   g4( a)
354   \once \hideNotes
355   b( c) |
356 }
357 @end lilypond
358
359
360 @node Il comando overrideProperty
361 @unnumberedsubsubsec Il comando @code{@bs{}overrideProperty}
362 @translationof The overrideProperty command
363
364 @cindex overrideProperty, comando
365
366 @funindex \overrideProperty
367
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
373
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
380
381 @cindex tweak, comando
382
383 @funindex \tweak
384
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.
391
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}:
395
396 @cindex proprietà font-size, esempio
397 @cindex font-size, esempio
398 @cindex NoteHead, esempio di sovrascrittura
399
400 @lilypond[quote,ragged-right,verbatim]
401 \relative {
402   <c' e g>4
403   \once \override NoteHead.font-size = #-3
404   <c e g>4
405   <c e g>4
406 }
407 @end lilypond
408
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.
415
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.
420
421 Tornando al nostro esempio, la dimensione della nota centrale
422 di un accordo si cambia in questo modo:
423
424 @cindex proprietà font-size, esempio
425 @cindex font-size, esempio
426 @cindex @code{\tweak}, esempio
427
428 @lilypond[quote,ragged-right,verbatim]
429 \relative {
430   <c' e g>4
431   <c \tweak font-size #-3 e g>4
432 }
433 @end lilypond
434
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} è
441
442 @example
443 \tweak @var{proprietà-formattazione} #@var{valore}
444 @end example
445
446 Il comando @code{\tweak} serve anche a modificare soltanto una di una serie
447 di articolazioni:
448
449 @cindex proprietà del colore, esempio
450 @cindex colore, proprietà del
451 @cindex @code{\tweak}, esempio
452
453 @lilypond[quote,fragment,ragged-right,verbatim]
454 a'4^"Black"
455   -\tweak color #red ^"Red"
456   -\tweak color #green _"Green"
457 @end lilypond
458
459 @noindent
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.
464
465 @cindex @code{\tweak}, alterazione
466 @cindex @code{\tweak}, oggetto di formattazione specifico
467
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:
473
474 @lilypond[quote,fragment,ragged-right,verbatim]
475 <\tweak Accidental.color #red   cis''4
476  \tweak Accidental.color #green es''
477  g''>
478 @end lilypond
479
480 Questa forma estesa del comando @code{\tweak} può essere descritta così
481 @example
482 \tweak @var{OggettoFormattazione}.@var{proprietà-formattazione} #@var{valore}
483 @end example
484
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
491
492 @funindex TupletBracket
493
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.
504
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
510
511 @lilypond[quote,ragged-right,verbatim]
512 \relative c'' {
513   \tweak direction #up
514   \tuplet 3/4 {
515     \tweak color #red
516     \tuplet 3/2 { c8[ c c] }
517     \tuplet 3/2 { c8[ c c] }
518     \tuplet 3/2 { c8[ c c] }
519   }
520 }
521 @end lilypond
522
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}:
525
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
532
533 @c NOTE Tuplet brackets collide if notes are high on staff
534 @c See issue 509
535 @lilypond[quote,ragged-right,verbatim]
536 \relative {
537   \tuplet 3/2 { c'8[ c c] }
538   \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
539   \tuplet 3/2 {
540     c8[ c]
541     c8[ c]
542     \once \override TupletNumber.transparent = ##t
543     \tuplet 3/2 { c8[ c c] }
544     \tuplet 3/2 { c8[ c c] }
545   }
546 }
547 @end lilypond
548
549 @seealso
550 Guida alla Notazione:
551 @ruser{Il comando tweak}.
552
553
554 @node Il prefisso single
555 @unnumberedsubsubsec Il prefisso @code{@bs{}single}
556 @translationof The single prefix
557
558 @funindex \single
559 @cindex tweak, generato da override
560
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ò:
564
565 @lilypond[quote,verbatim]
566 emphNoteHead = {
567   \override NoteHead.color = #red
568   \override NoteHead.font-size = 2
569 }
570 \relative {
571   c''4 a \once \emphNoteHead f d |
572 }
573 @end lilypond
574
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}:
581
582 @lilypond[quote,verbatim]
583 emphNoteHead = {
584   \override NoteHead.color = #red
585   \override NoteHead.font-size = 2
586 }
587 \relative {
588    <c'' a \single \emphNoteHead f d>4
589 }
590 @end lilypond
591
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.
598
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}.
604
605 @seealso
606 Manuale di apprendimento:
607 @ref{Il comando di ritocco tweak},
608 @ref{Uso delle variabili per modificare la formattazione}.
609
610
611 @node Manuale del Funzionamento interno
612 @section Manuale del Funzionamento interno
613 @translationof The Internals Reference manual
614
615 @cindex Guida al Funzionamento interno
616
617 @menu
618 * Proprietà degli oggetti di formattazione::
619 * Proprietà presenti nelle interfacce::
620 * Tipi di proprietà::
621 @end menu
622
623 @node Proprietà degli oggetti di formattazione
624 @subsection Proprietà degli oggetti di formattazione
625 @translationof Properties of layout objects
626
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
632
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}.
642
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.
650
651 @cindex esempio di sovrascrittura
652 @cindex sovrascrittura, esempio
653 @cindex Guida al Funzionamento Interno, esempio d'uso
654 @cindex @code{\addlyrics}, esempio
655
656 Partiamo da un esempio concreto, un semplice frammento di musica:
657
658 @c Mozart, Die Zauberflöte Nr.7 Duett
659
660 @lilypond[quote,verbatim]
661 {
662   \key es \major
663   \time 6/8
664   \relative {
665     r4 bes'8 bes[( g]) g |
666     g8[( es]) es d[( f]) as |
667     as8 g
668   }
669   \addlyrics {
670     The man who | feels love's sweet e -- | mo -- tion
671   }
672 }
673 @end lilypond
674
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.
681
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.
688
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à.
696
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ì.
703
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
708
709 @example
710 thickness (number)
711      1.2
712      Line thickness, generally measured in line-thickness
713 @end example
714
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}.
719
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.
727
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:
732
733 @example
734 \override Slur.thickness = #5.0
735 @end example
736
737 Non dimenticare il@tie{}@code{#} che precede il nuovo valore!
738
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:
742
743 @cindex legatura di portamento, esempio di sovrascrittura
744 @cindex proprietà thickness, esempio
745 @cindex thickness (spessore), esempio
746
747 @lilypond[quote,verbatim]
748 {
749   \key es \major
750   \time 6/8
751   \relative {
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 |
756     as8 g
757   }
758   \addlyrics {
759     The man who | feels love's sweet e -- | mo -- tion
760   }
761 }
762 @end lilypond
763
764 @noindent
765 e vediamo che la legatura di portamento è davvero più grossa.
766
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.
771
772 @subsubheading Trovare il contesto
773
774 @cindex contesto, trovare il
775 @cindex contesto, identificare il corretto
776
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.
790
791 @subsubheading Sovrascrivere una volta sola
792
793 @cindex sovrascrivere una volta sola
794 @cindex \once \override
795
796 @funindex \once
797
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
806 nel modo seguente:
807
808 @cindex Slur, esempio di sovrascrittura
809 @cindex proprietà thickness, esempio
810 @cindex thickness (spessore), esempio
811
812 @lilypond[quote,verbatim]
813 {
814   \key es \major
815   \time 6/8
816   \relative {
817     r4 bes'8
818     % Aumenta lo spessore solo della legatura che segue
819     \once \override Slur.thickness = #5.0
820     bes8[( g]) g |
821     g8[( es]) es d[( f]) as |
822     as8 g
823   }
824   \addlyrics {
825     The man who | feels love's sweet e -- | mo -- tion
826   }
827 }
828 @end lilypond
829
830 @noindent
831 Ora solo la prima legatura è più spessa.
832
833 Il comando @code{\once} può essere usato anche prima del comando @code{\set}.
834
835 @subsubheading Ripristinare
836
837 @cindex revert
838 @cindex ripristinare le proprietà predefinite
839 @cindex proprietà predefinite, ripristinare le
840
841 @funindex \revert
842
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:
847
848 @cindex Slur, esempio di sovrascrittura
849 @cindex proprietà thickness, esempio
850 @cindex thickness (spessore), esempio
851
852 @lilypond[quote,verbatim]
853 {
854   \key es \major
855   \time 6/8
856   \relative {
857     r4 bes'8
858     % Aumenta lo spessore solo della legatura che segue
859     \once \override Slur.thickness = #5.0
860     bes[( g]) g |
861     % Aumenta lo spessore solo della legatura che segue
862     \once \override Slur.thickness = #5.0
863     g8[( es]) es d[( f]) as |
864     as8 g
865   }
866   \addlyrics {
867     The man who | feels love's sweet e -- | mo -- tion
868   }
869 }
870 @end lilypond
871
872 @noindent
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:
876
877 @cindex Slur, esempio di sovrascrittura
878 @cindex proprietà thickness, esempio
879 @cindex thickness (spessore), esempio
880
881 @lilypond[quote,verbatim]
882 {
883   \key es \major
884   \time 6/8
885   \relative {
886     r4 bes'8
887     % Aumenta lo spessore di tutte le legature di portamento che seguono da 1.2 a 5.0
888     \override Slur.thickness = #5.0
889     bes[( g]) g |
890     g8[( es]) es
891     % Ripristina lo spessore di tutte le legature di portamento che seguono al valore predefinito 1.2
892     \revert Slur.thickness
893     d8[( f]) as |
894     as8 g
895   }
896   \addlyrics {
897     The man who | feels love's sweet e -- | mo -- tion
898   }
899 }
900 @end lilypond
901
902 @noindent
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.
906
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.
913
914
915 @node Proprietà presenti nelle interfacce
916 @subsection Proprietà presenti nelle interfacce
917 @translationof Properties found in interfaces
918
919 @cindex interfaccia
920 @cindex proprietà dell'interfaccia
921 @cindex proprietà nelle interfacce
922
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}.
934
935 Ora dobbiamo capire come trovare le proprietà delle interfacce e
936 come scoprire quali oggetti usano queste proprietà.
937
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
943 LyricText.
944
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}.
948
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.
960
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.
965
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}.
972
973 Quindi il comando @code{\override} che rende il testo corsivo è:
974
975 @example
976 \override LyricText.font-shape = #'italic
977 @end example
978
979 @noindent
980 Deve essere posizionato proprio di fronte al testo che vogliamo modificare,
981 in questo modo:
982
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
989
990 @lilypond[quote,ragged-right,verbatim]
991 {
992   \key es \major
993   \time 6/8
994   \relative {
995     r4 bes'8 bes[( g]) g |
996     g8[( es]) es d[( f]) as |
997     as8 g
998   }
999   \addlyrics {
1000     \override LyricText.font-shape = #'italic
1001     The man who | feels love's sweet e -- | mo -- tion
1002   }
1003 }
1004 @end lilypond
1005
1006 @noindent
1007 e tutto il testo è in corsivo.
1008
1009 @warning{Nel testo bisogna lasciare sempre uno spazio bianco tra l'ultima
1010 sillaba e la parentesi graffa che chiude il blocco.}
1011
1012
1013 @seealso
1014 Estendere: @rextend{Scheme tutorial}.
1015
1016
1017 @node Tipi di proprietà
1018 @subsection Tipi di proprietà
1019 @translationof Types of properties
1020
1021 @cindex tipi di proprietà
1022 @cindex proprietà, tipi di
1023
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}.
1035
1036 @multitable @columnfractions .2 .45 .35
1037 @headitem Tipo di proprietà
1038   @tab Regole
1039   @tab Esempi
1040 @item Boolean
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}
1046 @item Direction
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}}
1051 @item Integer
1052   @tab Un numero intero
1053   @tab @code{3}, @code{-1}
1054 @item List
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)}
1059 @item Markup
1060   @tab Qualsiasi valido blocco markup
1061   @tab @code{\markup @{ \italic "cresc." @}}, @code{"bagpipe"}
1062 @item Moment
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)}
1067 @item Number
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)}
1074 @item Symbol
1075   @tab Qualsiasi insieme di simboli ammesso per quella proprietà,
1076 preceduto da un apostrofo
1077   @tab @code{'italic}, @code{'inside}
1078 @item Unknown
1079   @tab Una procedura o un valore @code{#f} che impedisca l'azione
1080   @tab @code{bend::print}, @code{ly:text-interface::print},
1081        @code{#f}
1082 @item Vector
1083   @tab Costanti
1084   racchiuse tra @code{#(}@dots{}@code{)}.
1085   @tab @code{#(#t #t #f)}
1086 @end multitable
1087
1088
1089 @seealso
1090 Estendere: @rextend{Scheme tutorial}.
1091
1092
1093 @node Aspetto degli oggetti
1094 @section Aspetto degli oggetti
1095 @translationof Appearance of objects
1096
1097 Mettiamo in pratica quello che abbiamo imparato con un po' di
1098 esempi che mostrano come modificare l'aspetto degli elementi
1099 di una partitura.
1100
1101 @menu
1102 * Visibilità e colore degli oggetti::
1103 * Dimensione degli oggetti::
1104 * Lunghezza e spessore degli oggetti::
1105 @end menu
1106
1107 @node Visibilità e colore degli oggetti
1108 @subsection Visibilità e colore degli oggetti
1109 @translationof Visibility and color of objects
1110
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?
1117
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.
1128
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
1139 volta.
1140
1141 @menu
1142 * La proprietà stencil::
1143 * La proprietà break-visibility::
1144 * La proprietà transparent::
1145 * La proprietà color::
1146 @end menu
1147
1148 @node La proprietà stencil
1149 @unnumberedsubsubsec La proprietà @code{stencil}
1150 @translationof The stencil property
1151
1152 @cindex proprietà stencil
1153 @cindex stencil, proprietà
1154
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}:
1160
1161 @cindex BarLine, esempio di sovrascrittura
1162 @cindex proprietà stencil, esempio
1163 @cindex stencil, esempio
1164
1165 @lilypond[quote,ragged-right,verbatim]
1166 \relative {
1167   \time 12/16
1168   \override BarLine.stencil = ##f
1169   c''4 b8 c d16 c d8 |
1170   g,8 a16 b8 c d4 e16 |
1171   e8
1172 }
1173 @end lilypond
1174
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:
1186
1187 @cindex BarLine, esempio di sovrascrittura
1188 @cindex proprietà stencil, esempio
1189 @cindex stencil, esempio
1190
1191 @lilypond[quote,ragged-right,verbatim]
1192 \relative {
1193   \time 12/16
1194   \override Staff.BarLine.stencil = ##f
1195   c''4 b8 c d16 c d8 |
1196   g,8 a16 b8 c d4 e16 |
1197   e8
1198 }
1199 @end lilypond
1200
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}:
1204 @funindex \omit
1205
1206 @lilypond[quote,ragged-right,verbatim]
1207 \relative {
1208   \time 12/16
1209   \omit Staff.BarLine
1210   c''4 b8 c d16 c d8 |
1211   g,8 a16 b8 c d4 e16 |
1212   e8
1213 }
1214 @end lilypond
1215
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
1222 zero:
1223
1224 @lilypond[quote,verbatim]
1225 \relative {
1226   c''4 c
1227   \once \override NoteHead.stencil = #point-stencil
1228   c4 c
1229 }
1230 @end lilypond
1231
1232 @node La proprietà break-visibility
1233 @unnumberedsubsubsec La proprietà @code{break-visibility}
1234 @translationof The break-visibility property
1235
1236 @cindex proprietà break-visibility
1237 @cindex break-visibility, proprietà
1238
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}.
1250
1251 @cindex BarLine, esempio di sovrascrittura
1252 @cindex proprietà break-visibility, esempio
1253 @cindex break-visibility, esempio
1254
1255 @lilypond[quote,ragged-right,verbatim]
1256 \relative {
1257   \time 12/16
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 |
1261   e8
1262 }
1263 @end lilypond
1264
1265 E vediamo che anche questo comando elimina tutte le stanghette.
1266
1267 @node La proprietà transparent
1268 @unnumberedsubsubsec La proprietà @code{transparent}
1269 @translationof The transparent property
1270
1271 @cindex proprietà transparent
1272 @cindex transparent, proprietà
1273 @cindex trasparenza
1274
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 è:
1286
1287 @cindex TimeSignature, esempio di sovrascrittura
1288 @cindex proprietà transparent, esempio
1289 @cindex transparent, esempio
1290
1291 @lilypond[quote,ragged-right,verbatim]
1292 \relative {
1293   \time 12/16
1294   \override Staff.TimeSignature.transparent = ##t
1295   c''4 b8 c d16 c d8 |
1296   g,8 a16 b8 c d4 e16 |
1297   e8
1298 }
1299 @end lilypond
1300
1301 @noindent
1302 Impostare la proprietà @code{transparent} è un'operazione piuttosto
1303 frequente, perciò è stata creata la scorciatoia @code{\hide}:
1304 @funindex \hide
1305
1306 @lilypond[quote,ragged-right,verbatim]
1307 \relative {
1308   \time 12/16
1309   \hide Staff.TimeSignature
1310   c''4 b8 c d16 c d8 |
1311   g,8 a16 b8 c d4 e16 |
1312   e8
1313 }
1314 @end lilypond
1315
1316 @noindent
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}:
1322
1323 @cindex TimeSignature, esempio di sovrascrittura
1324 @cindex proprietà stencil, esempio
1325 @cindex stencil, esempio
1326
1327 @lilypond[quote,ragged-right,verbatim]
1328 \relative {
1329   \time 12/16
1330   \omit Staff.TimeSignature
1331   c''4 b8 c d16 c d8 |
1332   g,8 a16 b8 c d4 e16 |
1333   e8
1334 }
1335 @end lilypond
1336
1337 @noindent
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.
1341
1342 @node La proprietà color
1343 @unnumberedsubsubsec La proprietà @code{color}
1344 @translationof The color property
1345
1346 @cindex proprietà color
1347 @cindex color, proprietà
1348
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.)
1356
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:
1365
1366 @cindex BarLine, esempio di sovrascrittura
1367 @cindex proprietà color
1368 @cindex color, proprietà
1369
1370 @lilypond[quote,ragged-right,verbatim]
1371 \relative {
1372   \time 12/16
1373   \override Staff.BarLine.color = #white
1374   c''4 b8 c d16 c d8 |
1375   g,8 a16 b8 c d4 e16 |
1376   e8
1377 }
1378 @end lilypond
1379
1380 @noindent
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
1388 nella lista.
1389
1390 @cindex color, X11
1391 @cindex colori X11
1392 @cindex X11, colori
1393
1394 @funindex x11-color
1395
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
1400 di valori interni:
1401
1402 @cindex BarLine, esempio di sovrascrittura
1403 @cindex proprietà color, esempio
1404 @cindex color, esempio
1405
1406 @lilypond[quote,ragged-right,verbatim]
1407 \relative {
1408   \time 12/16
1409   \override Staff.BarLine.color = #(x11-color 'white)
1410   c''4 b8 c d16 c d8 |
1411   g,8 a16 b8 c d4 e16 |
1412   e8
1413 }
1414 @end lilypond
1415
1416 @noindent
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.
1421
1422 @cindex colori rgb
1423 @cindex rgb, colori
1424 @cindex color, rgb
1425
1426 @funindex rgb-color
1427
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)}:
1434
1435 @cindex BarLine, esempio di sovrascrittura
1436 @cindex proprietà color, esempio
1437 @cindex color, esempio
1438
1439 @lilypond[quote,ragged-right,verbatim]
1440 \relative {
1441   \time 12/16
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 |
1445   e8
1446 }
1447 @end lilypond
1448
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:
1454
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
1464
1465 @lilypond[quote,ragged-right,verbatim]
1466 \relative {
1467   \time 12/16
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 |
1476   e8
1477 }
1478 @end lilypond
1479
1480 @noindent
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.
1489
1490
1491 @node Dimensione degli oggetti
1492 @subsection Dimensione degli oggetti
1493 @translationof Size of objects
1494
1495 @cindex modificare la dimensione degli oggetti
1496 @cindex dimensione degli oggetti
1497 @cindex oggetti, dimensione degli
1498 @cindex oggetti, modificare la dimensione degli
1499
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}.
1503
1504 @cindex proprietà alignAboveContext, esempio
1505 @cindex @code{\with}, esempio
1506
1507 @lilypond[quote,ragged-right,verbatim]
1508 \new Staff ="main" {
1509   \relative {
1510     r4 g'8 g c4 c8 d |
1511     e4 r8
1512     <<
1513       { f8 c c }
1514       \new Staff \with {
1515         alignAboveContext = #"main" }
1516       { f8 f c }
1517     >>
1518     r4 |
1519   }
1520 }
1521 @end lilypond
1522
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ì:
1528
1529 @cindex proprietà alignAboveContext, esempio
1530 @cindex @code{\with}, esempio
1531 @funindex \omit
1532 @cindex Clef, esempio di sovrascrittura
1533 @cindex TimeSignature, esempio di sovrascrittura
1534
1535 @lilypond[quote,ragged-right,verbatim]
1536 \new Staff ="main" {
1537   \relative {
1538     r4 g'8 g c4 c8 d |
1539     e4 r8
1540     <<
1541       { f8 c c }
1542       \new Staff \with {
1543         alignAboveContext = #"main"
1544       }
1545       {
1546         \omit Staff.Clef
1547         \omit Staff.TimeSignature
1548         { f8 f c }
1549       }
1550     >>
1551     r4 |
1552   }
1553 }
1554 @end lilypond
1555
1556 @noindent
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.
1560
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.
1573
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.
1580
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.
1587
1588 Dunque possiamo sostituire l'esempio precedente con
1589
1590 @cindex alignAboveContext property, esempio
1591 @cindex @code{\with}, esempio
1592 @cindex Clef, esempio di sovrascrittura
1593 @cindex TimeSignature, esempio di sovrascrittura
1594
1595 @lilypond[quote,ragged-right,verbatim]
1596 \new Staff ="main" {
1597   \relative {
1598     r4 g'8 g c4 c8 d |
1599     e4 r8
1600     <<
1601       { f8 c c }
1602       \new Staff \with {
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
1608       }
1609       { f8 f c }
1610     >>
1611     r4 |
1612   }
1613 }
1614 @end lilypond
1615
1616 Si possono usare anche le scorciatoie @code{\hide} e @code{\omit} per
1617 impostare la proprietà @code{transparent} e togliere lo @code{stencil}
1618
1619 @lilypond[quote,ragged-right,verbatim]
1620 \new Staff ="main" {
1621   \relative {
1622     r4 g'8 g c4 c8 d |
1623     e4 r8
1624     <<
1625       { f8 c c }
1626       \new Staff \with {
1627         alignAboveContext = #"main"
1628         % Nasconde le chiavi di questo rigo
1629         \omit Clef
1630         % Nasconde le indicazioni di tempo di questo rigo
1631         \omit TimeSignature
1632       }
1633       { f8 f c }
1634     >>
1635     r4 |
1636   }
1637 }
1638 @end lilypond
1639
1640 Infine arriviamo a modificare la dimensione degli oggetti di formattazione.
1641
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.
1654
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
1659
1660 @example
1661 \override NoteHead.font-size = #-2
1662 @end example
1663
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}).
1667
1668 @example
1669 \set fontSize = #-2
1670 @end example
1671
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%.
1675
1676 Proviamolo nel nostro esempio dell'ossia:
1677
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
1684
1685 @lilypond[quote,ragged-right,verbatim]
1686 \new Staff ="main" {
1687   \relative {
1688     r4 g'8 g c4 c8 d |
1689     e4 r8
1690     <<
1691       { f8 c c }
1692       \new Staff \with {
1693         alignAboveContext = #"main"
1694         \omit Clef
1695         \omit TimeSignature
1696         % Riduce la dimensione di tutti i tipi di carattere di circa il 24%
1697         fontSize = #-2
1698       }
1699       { f8 f c }
1700     >>
1701     r4 |
1702   }
1703 }
1704 @end lilypond
1705
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
1710 farlo.
1711
1712 @node Lunghezza e spessore degli oggetti
1713 @subsection Lunghezza e spessore degli oggetti
1714 @translationof Length and thickness of objects
1715
1716 @cindex distanze
1717 @cindex thickness, proprietà
1718 @cindex spessore
1719 @cindex lunghezza
1720 @cindex magstep
1721 @cindex dimensione, modificare la
1722 @cindex lunghezza del gambo, modificare la
1723 @cindex spaziatura delle linee del rigo, modificare la
1724
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}.
1735
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
1743 questo modo:
1744
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
1759
1760 @lilypond[quote,ragged-right,verbatim]
1761 \new Staff ="main" {
1762   \relative {
1763     r4 g'8 g c4 c8 d |
1764     e4 r8
1765     <<
1766       { f8 c c }
1767       \new Staff \with {
1768         alignAboveContext = #"main"
1769         \omit Clef
1770         \omit TimeSignature
1771         fontSize = #-2
1772         % Riduce proporzionalmente la lunghezza dei gambi e la spaziatura tra le linee
1773         \override StaffSymbol.staff-space = #(magstep -2)
1774       }
1775       { f8 f c }
1776     >>
1777     r4 |
1778   }
1779 }
1780 @end lilypond
1781
1782 @noindent
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.
1793
1794 Questo completa la creazione dell'ossia.  Le dimensioni e le lunghezze
1795 di tutti gli altri oggetti possono essere modificati in modi analoghi.
1796
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.
1806
1807
1808 @node Posizionamento degli oggetti
1809 @section Posizionamento degli oggetti
1810 @translationof Placement of objects
1811
1812 @menu
1813 * Comportamento automatico::
1814 * Oggetti interni al rigo::
1815 * Oggetti esterni al rigo::
1816 @end menu
1817
1818
1819 @node Comportamento automatico
1820 @subsection Comportamento automatico
1821 @translationof Automatic behavior
1822
1823 @cindex within-staff, oggetti
1824 @cindex outside-staff, oggetti
1825 @cindex oggetti dentro il rigo
1826 @cindex oggetti fuori dal rigo
1827
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).
1831
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
1840 vedremo tra poco.
1841
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.
1849
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
1860 più vicino al rigo.
1861
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
1865 sotto @q{Testo2}.
1866
1867 @cindex markup, esempio
1868
1869 @lilypond[quote,fragment,ragged-right,verbatim]
1870 c''2^"Testo1"
1871 c''2^"Testo2" |
1872 c''2^"Testo3"
1873 c''2^"Testo4" |
1874 @end lilypond
1875
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:
1881
1882 @lilypond[quote,ragged-right,verbatim]
1883 <<
1884   \new Staff {
1885     \relative { c'4 a, }
1886   }
1887   \new Staff {
1888     \relative { c''''4 a, }
1889   }
1890 >>
1891 @end lilypond
1892
1893
1894 @node Oggetti interni al rigo
1895 @subsection Oggetti interni al rigo
1896 @translationof Within-staff objects
1897
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.
1911
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}.
1917
1918 @menu
1919 * La proprietà direction::
1920 * Diteggiatura::
1921 @end menu
1922
1923 @node La proprietà direction
1924 @unnumberedsubsubsec La proprietà @code{direction}
1925 @translationof The direction property
1926
1927 @cindex down
1928 @cindex direzione, giù
1929 @cindex up
1930 @cindex direzione, su
1931 @cindex center
1932 @cindex direzione, centrale
1933 @cindex neutral
1934 @cindex direzione, neutrale
1935
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.
1942
1943 @cindex Slur, esempio di sovrascrittura
1944 @cindex legatura di portamento, esempio di sovrascrittura
1945 @cindex proprietà direction, esempio
1946 @cindex direction, esempio
1947
1948 @lilypond[quote,fragment,verbatim]
1949 a'4( g') c''( a') |
1950 \override Slur.direction = #DOWN
1951 a'4( g') c''( a') |
1952 \override Slur.direction = #UP
1953 a'4( g') c''( a') |
1954 \revert Slur.direction
1955 a'4( g') c''( a') |
1956 @end lilypond
1957
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}.
1964
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
1968 non è ovvio.
1969
1970 @multitable @columnfractions .2 .2 .25 .35
1971 @headitem Giù/Sinistra
1972   @tab Su/Destra
1973   @tab Ripristina
1974   @tab Effetto
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}
1980   @tab @code{\dotsUp}
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}
1986   @tab
1987 @item @code{\phrasingSlurDown}
1988   @tab @code{\phrasingSlurUp}
1989   @tab @code{\phrasingSlurNeutral}
1990   @tab Nota: è diverso dai comandi slur
1991 @item @code{\slurDown}
1992   @tab @code{\slurUp}
1993   @tab @code{\slurNeutral}
1994   @tab
1995 @item @code{\stemDown}
1996   @tab @code{\stemUp}
1997   @tab @code{\stemNeutral}
1998   @tab
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}
2004   @tab @code{\tieUp}
2005   @tab @code{\tieNeutral}
2006   @tab
2007 @item @code{\tupletDown}
2008   @tab @code{\tupletUp}
2009   @tab @code{\tupletNeutral}
2010   @tab I gruppi irregolare sono sotto/sopra le note
2011 @end multitable
2012
2013
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.
2019
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{_}:
2023
2024 @lilypond[quote,fragment,verbatim]
2025 a'4( g') c''( a') |
2026 a'4^( g') c''_( a') |
2027 @end lilypond
2028
2029
2030 @node Diteggiatura
2031 @unnumberedsubsubsec Diteggiatura
2032 @translationof Fingering
2033
2034 @cindex diteggiatura, posizionamento
2035 @cindex diteggiatura, accordi
2036
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.
2043
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}:
2048
2049 @cindex Fingering, esempio di sovrascrittura
2050 @cindex proprietà direction, esempio
2051 @cindex direction, esempio
2052
2053 @lilypond[quote,verbatim]
2054 \relative {
2055   c''4-5 a-3 f-1 c'-5 |
2056   \override Fingering.direction = #DOWN
2057   c4-5 a-3 f-1 c'-5 |
2058   \override Fingering.direction = #UP
2059   c4-5 a-3 f-1 c'-5 |
2060 }
2061 @end lilypond
2062
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:
2068
2069 @cindex fingering, esempio
2070
2071 @lilypond[quote,verbatim]
2072 \relative {
2073   c''4-5 a-3 f-1 c'-5 |
2074   c4_5 a_3 f_1 c'_5 |
2075   c4^5 a^3 f^1 c'^5 |
2076 }
2077 @end lilypond
2078
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:
2083
2084 @cindex fingering, esempio
2085
2086 @lilypond[quote,verbatim]
2087 \relative {
2088   <c''-5 g-3>4
2089   <c-5 g-3 e-2>4
2090   <c-5 g-3 e-2 c-1>4
2091 }
2092 @end lilypond
2093
2094 @noindent
2095 ma può essere sovrascritta per forzare manualmente in su o in giù tutti o
2096 alcuni dei singoli numeri della diteggiatura:
2097
2098 @cindex fingering, esempio
2099
2100 @lilypond[quote,verbatim]
2101 \relative {
2102   <c''-5 g-3 e-2 c-1>4
2103   <c^5 g_3 e_2 c_1>4
2104   <c^5 g^3 e^2 c_1>4
2105 }
2106 @end lilypond
2107
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 è:
2111
2112 @example
2113 \set fingeringOrientations = #'([up] [left/right] [down])
2114 @end example
2115
2116 @noindent
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}.
2120
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.
2130
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.}
2134
2135 Ecco alcuni esempi:
2136
2137 @cindex fingering, esempio
2138 @cindex @code{\set}, esempio di utilizzo
2139 @cindex proprietà fingeringOrientations, esempio
2140
2141 @lilypond[quote,ragged-right,verbatim]
2142 \relative {
2143   \set fingeringOrientations = #'(left)
2144   <f'-2>4
2145   <c-1 e-2 g-3 b-5>4
2146   \set fingeringOrientations = #'(left)
2147   <f-2>4
2148   <c-1 e-2 g-3 b-5>4 |
2149   \set fingeringOrientations = #'(up left down)
2150   <f-2>4
2151   <c-1 e-2 g-3 b-5>4
2152   \set fingeringOrientations = #'(up left)
2153   <f-2>4
2154   <c-1 e-2 g-3 b-5>4 |
2155   \set fingeringOrientations = #'(right)
2156   <f-2>4
2157   <c-1 e-2 g-3 b-5>4
2158 }
2159 @end lilypond
2160
2161 @noindent
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
2166 con @w{@code{-7}}:
2167
2168 @lilypond[quote,ragged-right,verbatim]
2169 \relative {
2170   \override Fingering.font-size = #-7
2171   \set fingeringOrientations = #'(left)
2172   <f'-2>4
2173   <c-1 e-2 g-3 b-5>4
2174   \set fingeringOrientations = #'(left)
2175   <f-2>4
2176   <c-1 e-2 g-3 b-5>4 |
2177   \set fingeringOrientations = #'(up left down)
2178   <f-2>4
2179   <c-1 e-2 g-3 b-5>4
2180   \set fingeringOrientations = #'(up left)
2181   <f-2>4
2182   <c-1 e-2 g-3 b-5>4 |
2183   \set fingeringOrientations = #'(right)
2184   <f-2>4
2185   <c-1 e-2 g-3 b-5>4
2186 }
2187 @end lilypond
2188
2189 @node Oggetti esterni al rigo
2190 @subsection Oggetti esterni al rigo
2191 @translationof Outside-staff objects
2192
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.
2196
2197 @menu
2198 * La proprietà outside-staff-priority::
2199 * Il comando textLengthOn::
2200 * Posizionamento delle dinamiche::
2201 * Dimensione dei grob::
2202 @end menu
2203
2204
2205 @node La proprietà outside-staff-priority
2206 @unnumberedsubsubsec La proprietà @code{outside-staff-priority}
2207 @translationof The outside-staff-priority property
2208
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.
2219
2220 @cindex estensori (spanner)
2221 @cindex spanner
2222
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
2233 tra loro collegate.
2234
2235 @multitable @columnfractions .3 .15 .45
2236 @headitem Oggetto di formattazione
2237   @tab Priorità
2238   @tab Controlla la posizione di:
2239 @item @code{RehearsalMark}
2240   @tab @code{1500}
2241   @tab Numeri di chiamata (e oggetti di testo analoghi)
2242 @item @code{MetronomeMark}
2243   @tab @code{1000}
2244   @tab Indicazioni metronomiche
2245 @item @code{SostenutoPedalLineSpanner}
2246   @tab @code{1000}
2247   @tab Indicazione del pedale
2248 @item @code{SustainPedalLineSpanner}
2249   @tab @code{1000}
2250   @tab
2251 @item @code{UnaCordaPedalLineSpanner}
2252   @tab @code{1000}
2253   @tab
2254 @item @code{MeasureCounter}
2255   @tab @code{750}
2256   @tab Numero della misura
2257 @item @code{VoltaBracketSpanner}
2258   @tab @code{600}
2259   @tab Delimitatori dei finali alternativi delle ripetizioni
2260 @item @code{InstrumentSwitch}
2261   @tab @code{500}
2262   @tab Testo per il cambio di strumento
2263 @item @code{TextScript}
2264   @tab @code{450}
2265   @tab Oggetti di testo
2266 @item @code{MultiMeasureRestText}
2267   @tab @code{450}
2268   @tab Testi sopra pause multiple
2269 @item @code{CombineTextScript}
2270   @tab @code{450}
2271   @tab Testo per il combinatore delle parti
2272 @item @code{OttavaBracket}
2273   @tab @code{400}
2274   @tab Estensioni del segno d'ottava
2275 @item @code{TextSpanner}
2276   @tab @code{350}
2277   @tab Estensori del testo
2278 @item @code{DynamicLineSpanner}
2279   @tab @code{250}
2280   @tab Tutte le indicazioni dinamiche
2281 @item @code{BarNumber}
2282   @tab @code{100}
2283   @tab Numeri di battuta
2284 @item @code{TrillSpanner}
2285   @tab @code{50}
2286   @tab Linee ondulate del trillo
2287 @item @code{AccidentalSuggestion}
2288   @tab @code{0}
2289   @tab Alterazioni con nota
2290 @end multitable
2291
2292 Ecco un esempio che mostra il posizionamento predefinito di alcuni di
2293 questi oggetti.
2294
2295 @cindex estensore del testo
2296 @cindex segno del cambio d'ottava
2297
2298 @funindex \startTextSpan
2299 @funindex \stopTextSpan
2300
2301 @cindex TextSpanner, esempio di sovrascrittura
2302 @cindex proprietà bound-details, esempio
2303 @cindex bound-details, esempio
2304
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
2310 \dynamicUp
2311 % Start Ottava Bracket
2312 \ottava #1
2313 c''4 \startTextSpan
2314 % Add Dynamic Text and hairpin
2315 c''4\pp\<
2316 c''4
2317 % Add Text Script
2318 c''4^Text |
2319 c''4 c''
2320 % Add Dynamic Text and terminate hairpin
2321 c''4\ff c'' \stopTextSpan |
2322 % Stop Ottava Bracket
2323 \ottava #0
2324 c'4 c' c' c' |
2325 @end lilypond
2326
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}.
2332
2333 Mostra anche come si creano le estensioni del segno d'ottava.
2334
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
2341
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}:
2350
2351 @cindex TextSpanner, esempio di sovrascrittura
2352 @cindex proprietà bound-details, esempio
2353 @cindex bound-details, esempio
2354
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
2360 \dynamicUp
2361 % Start Ottava Bracket
2362 \ottava #1
2363 c''4 \startTextSpan
2364 % Add Dynamic Text and hairpin
2365 c''4\pp\<
2366 c''4
2367 % Add Text Script
2368 c''4^Text |
2369 c''4 c''
2370 % Add Dynamic Text and terminate hairpin
2371 c''4\ff c'' \stopTextSpan |
2372 % Stop Ottava Bracket
2373 \ottava #0
2374 c'4 c' c' c' |
2375 @end lilypond
2376
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.
2381
2382 @cindex legature di portamento e outside-staff-priority
2383 @cindex legature di portamento e articolazioni
2384 @cindex articolazioni e legature di portamento
2385
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:
2398
2399 @lilypond[quote,verbatim]
2400 \relative c'' {
2401   c4( c^\markup { \tiny \sharp } d4.) c8 |
2402   c4(
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 |
2408 }
2409 @end lilypond
2410
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:
2419
2420 @cindex TextScript, esempio di sovrascrittura
2421 @cindex proprietà outside-staff-priority, esempio
2422 @cindex outside-staff-priority, esempio
2423
2424 @lilypond[quote,fragment,ragged-right,verbatim]
2425 c''2^"Testo1"
2426 c''2^"Testo2" |
2427 \once \override TextScript.outside-staff-priority = #500
2428 c''2^"Testo3"
2429 c''2^"Testo4" |
2430 @end lilypond
2431
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}.
2439
2440 @node Il comando textLengthOn
2441 @unnumberedsubsubsec Il comando @code{@bs{}textLengthOn}
2442 @translationof The textLengthOn command
2443
2444 @cindex note, distanziarle insieme al testo
2445
2446 @funindex \textLengthOn
2447 @funindex \textLengthOff
2448
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:
2453
2454 @lilypond[quote,fragment,ragged-right,verbatim]
2455 \textLengthOn  % Fa sì che le note si distanzino per introdurre il testo
2456 c''2^"Text1"
2457 c''2^"Text2" |
2458 c''2^"Text3"
2459 c''2^"Text4" |
2460 @end lilypond
2461
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}.
2469
2470 @cindex testo a margine, permettere le collisioni
2471
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.
2476
2477 @cindex TextScript, esempio di sovrascrittura
2478 @cindex proprietà outside-staff-priority, esempio
2479 @cindex outside-staff-priority, esempio
2480
2481 @lilypond[quote,fragment,ragged-right,verbatim]
2482 \relative {
2483   % Questo testo è abbastanza corto per starci senza creare collisioni
2484   c2^"Tes" c'' |
2485   R1 |
2486
2487   % Questo è troppo lungo per starci, quindi è spostato più in alto
2488   c,,2^"Testo" c'' |
2489   R1 |
2490
2491   % Disattiva l'elusione delle collisioni
2492   \once \override TextScript.outside-staff-priority = ##f
2493   c,,2^"Testo Lungo   " c'' |
2494   R1 |
2495
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
2500   c''2 |
2501 }
2502 @end lilypond
2503
2504
2505 @node Posizionamento delle dinamiche
2506 @unnumberedsubsubsec Posizionamento delle dinamiche
2507 @translationof Dynamics placement
2508
2509 @cindex modificare il posizionamento delle dinamiche
2510 @cindex dinamiche, modificare il posizionamento
2511
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
2518 questo esempio:
2519
2520 @lilypond[quote,ragged-right,verbatim]
2521 \relative {
2522   \clef "bass"
2523   \key aes \major
2524   \time 9/8
2525   \dynamicUp
2526   bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2527   ees,2.~\)\mf ees4 r8 |
2528 }
2529 @end lilypond
2530
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:
2536
2537 @lilypond[quote,ragged-right,verbatim,fragment]
2538 \dynamicUp
2539 \relative { a'4\f b\mf a\mp b\p }
2540 @end lilypond
2541
2542 @noindent
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}.
2549
2550 @node Dimensione dei grob
2551 @unnumberedsubsubsec Dimensione dei grob
2552 @translationof Grob sizing
2553
2554 @subheading Estensione dei grob
2555
2556 @cindex estensione dei grob
2557 @cindex grob, estensione
2558
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}.
2570
2571 @cindex @code{extra-spacing-width}
2572
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:
2583
2584 @example
2585 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2586 @end example
2587
2588 @noindent
2589 Vediamo se funziona nell'esempio precedente:
2590
2591 @cindex DynamicText, esempio di sovrascrittura
2592 @cindex proprietà extra-spacing-width, esempio
2593 @cindex extra-spacing-width, esempio
2594
2595 @lilypond[quote,fragment,ragged-right,verbatim]
2596 \dynamicUp
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 }
2600 @end lilypond
2601
2602 @noindent
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}).
2608
2609
2610 @node Spaziatura verticale
2611 @section Spaziatura verticale
2612 @translationof Vertical spacing
2613
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:
2617
2618 @lilypond[quote,fragment,ragged-right]
2619 <<
2620   \new ChoirStaff
2621   <<
2622     \new Staff {
2623       \new Voice = "music" {
2624         b'2 c' c' c'
2625       }
2626     }
2627     \new Lyrics
2628     \lyricsto "music" {
2629       Here are some lyrics
2630     }
2631     \new Staff {
2632       \clef bass e'2 f e c
2633     }
2634   >>
2635   \new PianoStaff
2636   <<
2637     \new Staff {
2638       g''2 c'' c'' a''
2639     }
2640     \new Staff {
2641       \clef bass e2 f c e
2642     }
2643   >>
2644 >>
2645 @end lilypond
2646
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.
2652
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.
2662
2663 @lilypond[quote,fragment,ragged-right,verbatim]
2664 <<
2665   \new ChoirStaff
2666   <<
2667     \new Staff {
2668       \new Voice = "music" {
2669         b'2 c' c' c'
2670       }
2671     }
2672     \new Lyrics \with {
2673       \override VerticalAxisGroup.
2674         nonstaff-relatedstaff-spacing.padding = #5
2675       \override VerticalAxisGroup.
2676         nonstaff-unrelatedstaff-spacing.padding = #5
2677     }
2678     \lyricsto "music" {
2679       Here are some lyrics
2680     }
2681     \new Staff {
2682       \clef bass e'2 f e c
2683     }
2684   >>
2685   \new PianoStaff
2686   <<
2687     \new Staff {
2688       g''2 c'' c'' a''
2689     }
2690     \new Staff {
2691       \clef bass e2 f c e
2692     }
2693   >>
2694 >>
2695 @end lilypond
2696
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.
2700
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}.
2706
2707 @lilypond[quote,fragment,ragged-right,verbatim]
2708 <<
2709   \new ChoirStaff \with {
2710     \override StaffGrouper.
2711       staffgroup-staff-spacing.basic-distance = #15
2712   }
2713   <<
2714     \new Staff {
2715       \new Voice = "music" {
2716         b'2 c' c' c'
2717       }
2718     }
2719     \new Lyrics \with {
2720       \override VerticalAxisGroup.
2721         nonstaff-relatedstaff-spacing.padding = #2
2722       \override VerticalAxisGroup.
2723         nonstaff-unrelatedstaff-spacing.padding = #2
2724     }
2725     \lyricsto "music" {
2726       Here are some lyrics
2727     }
2728     \new Staff {
2729       \clef bass e'2 f e c
2730     }
2731   >>
2732   \new PianoStaff
2733   <<
2734     \new Staff {
2735       g''2 c'' c'' a''
2736     }
2737     \new Staff {
2738       \clef bass e2 f c e
2739     }
2740   >>
2741 >>
2742 @end lilypond
2743
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:
2747
2748 @lilypond[quote,fragment,ragged-right,verbatim]
2749 <<
2750   \new ChoirStaff \with {
2751     \override StaffGrouper.
2752       staffgroup-staff-spacing.basic-distance = #15
2753   }
2754   <<
2755     \new Staff {
2756       \new Voice = "music" {
2757         b'2 c' c' c'
2758       }
2759     }
2760     \new Lyrics \with {
2761       \override VerticalAxisGroup.
2762         nonstaff-relatedstaff-spacing.padding = #2
2763       \override VerticalAxisGroup.
2764         nonstaff-unrelatedstaff-spacing.padding = #2
2765     }
2766     \lyricsto "music" {
2767       Here are some lyrics
2768     }
2769     \new Staff {
2770       \clef bass e'2 f e c
2771     }
2772   >>
2773   \new PianoStaff \with {
2774     \override StaffGrouper.staff-staff-spacing = #'(
2775                             (basic-distance . 0)
2776                             (padding . 0))
2777   }
2778   <<
2779     \new Staff {
2780       g''2 c'' c'' a''
2781     }
2782     \new Staff {
2783       \clef bass e2 f c e
2784     }
2785   >>
2786 >>
2787 @end lilypond
2788
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}.
2792
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}.
2801
2802
2803 @node Collisioni tra oggetti
2804 @section Collisioni tra oggetti
2805 @translationof Collisions of objects
2806
2807 @menu
2808 * Spostare gli oggetti::
2809 * Correggere la sovrapposizione di elementi della notazione::
2810 * Esempio musicale::
2811 @end menu
2812
2813 @node Spostare gli oggetti
2814 @subsection Spostare gli oggetti
2815 @translationof Moving objects
2816
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
2822
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
2828 spazio intorno.
2829
2830 Esistono tre principali approcci per risolvere la sovrapposizione
2831 degli elementi della notazione.  Vediamoli nel seguente ordine:
2832
2833 @enumerate
2834 @item
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.
2842
2843 @item
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:
2850
2851 @itemize
2852
2853 @item
2854 @code{direction}
2855
2856 Questa è già stata trattata in dettaglio (vedi
2857 @ref{Oggetti interni al rigo}).
2858
2859 @item
2860 @code{padding}, @code{right-padding}, @code{staff-padding}
2861
2862 @cindex distanza
2863 @cindex spaziatura
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à
2870
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}.
2879
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.
2889
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.
2899
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.
2905
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
2909 o minore.
2910
2911 @item
2912 @code{self-alignment-X}
2913
2914 @cindex proprietà self-alignment-X
2915 @cindex self-alignment-X, proprietà
2916
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
2930 del testo.
2931
2932 @item
2933 @code{extra-spacing-width}
2934
2935 @cindex proprietà extra-spacing-width
2936 @cindex extra-spacing-width, proprietà
2937
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).
2947
2948 @item
2949 @code{staff-position}
2950
2951 @cindex proprietà staff-position
2952 @cindex staff-position, proprietà
2953
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.
2961
2962 @item
2963 @code{horizontal-shift}
2964
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
2971 @funindex \shiftOff
2972 @funindex \shiftOn
2973 @funindex \shiftOnn
2974 @funindex \shiftOnnn
2975
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.
2993
2994
2995 @item
2996 @code{force-hshift}
2997
2998 @cindex proprietà force-hshift
2999 @cindex force-hshift, proprietà
3000
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.
3013
3014 @end itemize
3015
3016 @item
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:
3029
3030 @table @code
3031 @item extra-offset
3032
3033 @cindex proprietà extra-offset
3034 @cindex extra-offset, proprietà
3035
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.
3043
3044 @item positions
3045
3046 @cindex proprietà positions
3047 @cindex positions, proprietà
3048
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.
3059 @end table
3060
3061 @end enumerate
3062
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
3066 modificare.
3067
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.
3072
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}
3085 @end multitable
3086
3087
3088 @node Correggere la sovrapposizione di elementi della notazione
3089 @subsection Correggere la sovrapposizione di elementi della notazione
3090 @translationof Fixing overlapping notation
3091
3092 Vediamo ora come le proprietà presentate nella sezione precedente possano
3093 aiutare a risolvere la sovrapposizione degli elementi della notazione.
3094
3095 @menu
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::
3104 @end menu
3105
3106 @node La proprietà padding
3107 @unnumberedsubsubsec La proprietà @code{padding}
3108 @translationof The padding property
3109
3110 @cindex padding
3111 @cindex spaziatura
3112 @cindex correggere la sovrapposizione di elementi della notazione
3113 @cindex sovrapposizione degli elementi della notazione
3114
3115 La proprietà @code{padding} serve a aumentare (o diminuire)
3116 la distanza tra i simboli che si trovano sopra o sotto le
3117 note.
3118
3119 @cindex Script, esempio di sovrascrittura
3120 @cindex proprietà padding, esempio
3121 @cindex padding, esempio
3122
3123 @lilypond[quote,fragment,verbatim]
3124 c'2\fermata
3125 \override Script.padding = #3
3126 b2\fermata
3127 @end lilypond
3128
3129 @cindex MetronomeMark, esempio di sovrascrittura
3130 @cindex proprietà padding, esempio
3131 @cindex padding, esempio
3132
3133 @lilypond[quote,fragment,verbatim]
3134 % Questo non funziona, vedi sotto
3135 \override MetronomeMark.padding = #3
3136 \tempo 4 = 120
3137 c'1 |
3138 % Questo funziona
3139 \override Score.MetronomeMark.padding = #3
3140 \tempo 4 = 80
3141 d'1 |
3142 @end lilypond
3143
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à}.
3149
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.
3154
3155
3156 @node La proprietà right-padding
3157 @unnumberedsubsubsec La proprietà @code{right-padding}
3158 @translationof The right-padding property
3159
3160 @cindex proprietà right-padding
3161 @cindex right-padding, proprietà
3162
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:
3169
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
3178
3179 @lilypond[quote,ragged-right,verbatim]
3180 sesquisharp = \markup { \sesquisharp }
3181 \relative {
3182   c''4
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
3186   cis4 c
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
3191   cis4 |
3192 }
3193 @end lilypond
3194
3195 @noindent
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}.
3203
3204 @noindent
3205
3206 @node La proprietà staff-padding
3207 @unnumberedsubsubsec La proprietà @code{staff-padding}
3208 @translationof The staff-padding property
3209
3210 @cindex allineare gli oggetti a una base
3211 @cindex oggetti, allinearli a una base
3212
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:
3221
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
3228
3229 @lilypond[quote,fragment,ragged-right,verbatim]
3230 \override DynamicLineSpanner.staff-padding = #3
3231 \relative { a'4\f b\mf a\p b\mp }
3232 @end lilypond
3233
3234
3235 @node La proprietà self-alignment-X
3236 @unnumberedsubsubsec La proprietà @code{self-alignment-X}
3237 @translationof The self-alignment-X property
3238
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:
3242
3243 @cindex StringNumber, esempio di sovrascrittura
3244 @cindex proprietà self-alignment-X, esempio
3245 @cindex self-alignment-X, esempio
3246
3247 @lilypond[quote,fragment,ragged-right,verbatim]
3248 \voiceOne
3249 <a''\2>
3250 \once \override StringNumber.self-alignment-X = #RIGHT
3251 <a''\2>
3252 @end lilypond
3253
3254
3255 @node La proprietà staff-position
3256 @unnumberedsubsubsec La proprietà @code{staff-position}
3257 @translationof The staff-position property
3258
3259 @cindex collisione tra oggetti all'interno del rigo
3260
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:
3268
3269 @lilypond[quote,verbatim,ragged-right]
3270 << \relative { c'4 c c c } \\ { R1 } >>
3271 @end lilypond
3272
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}}.
3279
3280 @cindex MultiMeasureRest, esempio di sovrascrittura
3281 @cindex proprietà staff-position, esempio
3282 @cindex staff-position, esempio
3283
3284 @lilypond[quote,verbatim,ragged-right]
3285 <<
3286   \relative { c'4 c c c }
3287   \\
3288   \override MultiMeasureRest.staff-position = #-8
3289   { R1 }
3290 >>
3291 @end lilypond
3292
3293 Questa soluzione è preferibile all'uso di @code{extra-offset}, perché
3294 il taglio addizionale sopra la pausa è inserito automaticamente.
3295
3296 @node La proprietà extra-offset
3297 @unnumberedsubsubsec La proprietà @code{extra-offset}
3298 @translationof The extra-offset property
3299
3300 @cindex posizionare gli oggetti
3301 @cindex posizionare i grob
3302 @cindex oggetti, posizionarli
3303 @cindex grob, posizionarli
3304
3305 La proprietà @code{extra-offset} fornisce un controllo completo
3306 sul posizionamento di un oggetto sia in orizzontale che in verticale.
3307
3308 Nell'esempio seguente, la seconda diteggiatura viene spostata un po' a
3309 sinistra e in basso di 1.8 spazi rigo:
3310
3311 @cindex Fingering, esempio di sovrascrittura
3312 @cindex proprietà extra-offset, esempio
3313 @cindex extra-offset, esempio
3314
3315 @lilypond[quote,fragment,relative=1,verbatim]
3316 \stemUp
3317 f4-5
3318 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3319 f4-5
3320 @end lilypond
3321
3322
3323 @node La proprietà positions
3324 @unnumberedsubsubsec La proprietà @code{positions}
3325 @translationof The positions property
3326
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
3332
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:
3338
3339 @lilypond[quote,verbatim,ragged-right]
3340 \relative { a'8 \( ( a'16 ) a \) }
3341 @end lilypond
3342
3343 @cindex PhrasingSlur, esempio di sovrascrittura
3344 @cindex proprietà positions, esempio
3345 @cindex positions, esempio
3346
3347 @noindent
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:
3353
3354 @lilypond[quote,verbatim,fragment,ragged-right]
3355 \once \override PhrasingSlur.positions = #'(2.5 . 4.5)
3356 a'8 \( ( a''16 ) a'' \)
3357 @end lilypond
3358
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}.
3367
3368 Ecco un altro esempio.  Vediamo che le travature collidono
3369 con le legature di valore:
3370
3371 @lilypond[quote,verbatim,fragment,ragged-right]
3372 {
3373   \time 4/2
3374   <<
3375     { c'1 ~ 2. e'8 f' }
3376     \\
3377     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
3378   >>
3379   <<
3380     { c'1 ~ 2. e'8 f' }
3381     \\
3382     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
3383   >>
3384 }
3385 @end lilypond
3386
3387 @noindent
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:
3391
3392 @cindex Beam, esempio di sovrascrittura
3393 @cindex proprietà positions, esempio
3394 @cindex positions, esempio
3395
3396 @lilypond[quote,verbatim,fragment,ragged-right]
3397 {
3398   \time 4/2
3399   <<
3400     { c'1 ~ 2. e'8 f' }
3401     \\
3402     {
3403       \override Beam.positions = #'(-1 . -1)
3404       e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g''
3405     }
3406   >>
3407   <<
3408     { c'1 ~ 2. e'8 f' }
3409     \\
3410     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
3411   >>
3412 }
3413 @end lilypond
3414
3415 @noindent
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.
3420
3421 @node La proprietà force-hshift
3422 @unnumberedsubsubsec La proprietà @code{force-hshift}
3423 @translationof The force-hshift property
3424
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
3427 lasciato così:
3428
3429 @lilypond[quote,verbatim,fragment,ragged-right]
3430 \new Staff \relative {
3431   \key aes \major
3432   <<
3433     { c''2 aes4. bes8 }
3434     \\
3435     { <ees, c>2 des }
3436     \\
3437     \\
3438     { aes'2 f4 fes }
3439   >> |
3440   <c ees aes c>1 |
3441 }
3442 @end lilypond
3443
3444 @noindent
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}.
3448
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.
3458
3459 Ecco il risultato finale:
3460
3461 @cindex NoteColumn, esempio di sovrascrittura
3462 @cindex proprietà force-hshift, esempio
3463 @cindex force-hshift, esempio
3464
3465 @lilypond[quote,verbatim,fragment,ragged-right]
3466 \new Staff \relative {
3467   \key aes \major
3468   <<
3469     { c''2 aes4. bes8 }
3470     \\
3471     { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des }
3472     \\
3473     \\
3474     { \once \shiftOff aes'2 \once \shiftOff f4 fes }
3475   >> |
3476   <c ees aes c>1 |
3477 }
3478 @end lilypond
3479
3480
3481 @node Esempio musicale
3482 @subsection Esempio musicale
3483 @translationof Real music example
3484
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!
3492
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.
3498
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 {
3504   \new Voice {
3505     r2 c''4.\( g8 |
3506     \once \override Tie.staff-position = #3.5
3507     bes1~ |
3508     \bar "||"
3509     \time 6/4
3510     \mergeDifferentlyHeadedOn
3511     \mergeDifferentlyDottedOn
3512     bes2.\tempo "Moderato" r8
3513     <<
3514       { c,8 d fis bes a }
3515       \new Voice {
3516         \voiceTwo
3517         c,8~
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
3522         \shiftOnn
3523         c2
3524       }
3525       \new Voice {
3526         \voiceThree
3527         s8
3528         % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3529         \stemDown
3530         % Il gambo di d2 deve essere invisibile
3531         \tweak Stem.transparent ##t
3532         d2
3533       }
3534       \new Voice {
3535         \voiceFour
3536         s4 fis4.
3537       }
3538     >> |
3539     \mergeDifferentlyHeadedOff
3540     \mergeDifferentlyDottedOff
3541     g2.\)
3542   }
3543 }
3544
3545 lhMusic = \relative {
3546   r2 <c' g ees>2( |
3547   <d g, d>1)\arpeggio |
3548   r2. d,,4 r4 r |
3549   r4
3550 }
3551
3552 \score {
3553   \new PianoStaff <<
3554     \new Staff = "RH"  <<
3555       \key g \minor
3556       \rhMusic
3557     >>
3558     \new Staff = "LH" <<
3559       \key g \minor
3560       \clef "bass"
3561       \lhMusic
3562     >>
3563   >>
3564 }
3565 @end lilypond
3566
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.
3579
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:
3583
3584 @c line-width ensures no break
3585 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3586 rhMusic = \relative {
3587   \new Voice {
3588     r2 c''4. g8 |
3589     bes1~ |
3590     \time 6/4
3591     bes2. r8
3592     % Inizia la sezione polifonica a quattro voci
3593     <<
3594       { c,8 d fis bes a }  % continuazione della voce principale
3595       \new Voice {
3596         \voiceTwo
3597         c,8~ 2
3598       }
3599       \new Voice {
3600         \voiceThree
3601         s8 d2
3602       }
3603       \new Voice {
3604         \voiceFour
3605         s4 fis4.
3606       }
3607     >> |
3608     g2.  % continuazione della voce principale
3609   }
3610 }
3611
3612 lhMusic = \relative {
3613   r2 <c' g ees>2 |
3614   <d g, d>1 |
3615   r2. d,,4 r4 r |
3616   r4
3617 }
3618
3619 \score {
3620   \new PianoStaff <<
3621     \new Staff = "RH"  <<
3622       \key g \minor
3623       \rhMusic
3624     >>
3625     \new Staff = "LH" <<
3626       \key g \minor
3627       \clef "bass"
3628       \lhMusic
3629     >>
3630   >>
3631 }
3632 @end lilypond
3633
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:
3641
3642 @c line-width ensures no break
3643 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3644 rhMusic = \relative {
3645   \new Voice {
3646     r2 c''4.\( g8 |
3647     bes1~ |
3648     \time 6/4
3649     bes2. r8
3650     % Inizia la sezione polifonica a quattro voci
3651     <<
3652       { c,8 d fis bes a }  % continuazione della voce principale
3653       \new Voice {
3654         \voiceTwo
3655         c,8~ 2
3656       }
3657       \new Voice {
3658         \voiceThree
3659         s8 d2
3660       }
3661       \new Voice {
3662         \voiceFour
3663         s4 fis4.
3664       }
3665     >> |
3666     g2.\)  % continuazione della voce principale
3667   }
3668 }
3669
3670 lhMusic = \relative {
3671   r2 <c' g ees>2( |
3672   <d g, d>1) |
3673   r2. d,,4 r4 r |
3674   r4
3675 }
3676
3677 \score {
3678   \new PianoStaff <<
3679     \new Staff = "RH"  <<
3680       \key g \minor
3681       \rhMusic
3682     >>
3683     \new Staff = "LH" <<
3684       \key g \minor
3685       \clef "bass"
3686       \lhMusic
3687     >>
3688   >>
3689 }
3690 @end lilypond
3691
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:
3707
3708 @code{\once \override Tie.staff-position = #3.5}
3709
3710 Questo completa la seconda battuta:
3711
3712 @c line-width ensures no break
3713 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3714 rhMusic = \relative {
3715   \new Voice {
3716     r2 c''4.\( g8 |
3717     \once \override Tie.staff-position = #3.5
3718     bes1~ |
3719     \bar "||"
3720     \time 6/4
3721     bes2. r8
3722     % Inizia la sezione polifonica a quattro voci
3723     <<
3724       { c,8 d fis bes a }  % continuazione della voce principale
3725       \new Voice {
3726         \voiceTwo
3727         c,8~ 2
3728       }
3729       \new Voice {
3730         \voiceThree
3731         s8 d2
3732       }
3733       \new Voice {
3734         \voiceFour
3735         s4 fis4.
3736       }
3737     >> |
3738     g2.\)  % continuazione della voce principale
3739   }
3740 }
3741
3742 lhMusic = \relative {
3743   r2 <c' g ees>2( |
3744   <d g, d>1)\arpeggio |
3745   r2. d,,4 r4 r |
3746   r4
3747 }
3748
3749 \score {
3750   \new PianoStaff <<
3751     \new Staff = "RH"  <<
3752       \key g \minor
3753       \rhMusic
3754     >>
3755     \new Staff = "LH" <<
3756       \key g \minor
3757       \clef "bass"
3758       \lhMusic
3759     >>
3760   >>
3761 }
3762 @end lilypond
3763
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
3775
3776 @example
3777 \mergeDifferentlyHeadedOn
3778 \mergeDifferentlyDottedOn
3779 @end example
3780
3781 @noindent
3782 all'inizio di questa sezione e
3783
3784 @example
3785 \mergeDifferentlyHeadedOff
3786 \mergeDifferentlyDottedOff
3787 @end example
3788
3789 @noindent
3790 alla fine, ottenendo:
3791
3792 @c line-width ensures no break
3793 @lilypond[quote,ragged-right,line-width=6\in]
3794 rhMusic = \relative {
3795   \new Voice {
3796     r2 c''4.\( g8 |
3797     \once \override Tie.staff-position = #3.5
3798     bes1~ |
3799     \bar "||"
3800     \time 6/4
3801     bes2.\tempo "Moderato" r8
3802     \mergeDifferentlyHeadedOn
3803     \mergeDifferentlyDottedOn
3804     % Inizia la sezione polifonica a quattro voci
3805     <<
3806       { c,8 d fis bes a }  % continuazione della voce principale
3807       \new Voice {
3808         \voiceTwo
3809         c,8~ 2
3810       }
3811       \new Voice {
3812         \voiceThree
3813         s8 d2
3814       }
3815       \new Voice {
3816         \voiceFour
3817         s4 fis4.
3818       }
3819     >> |
3820     \mergeDifferentlyHeadedOff
3821     \mergeDifferentlyDottedOff
3822     g2.\)  % continuazione della voce principale
3823   }
3824 }
3825
3826 lhMusic = \relative {
3827   r2 <c' g ees>2( |
3828   <d g, d>1)\arpeggio |
3829   r2. d,,4 r4 r |
3830   r4
3831 }
3832
3833 \score {
3834   \new PianoStaff <<
3835     \new Staff = "RH"  <<
3836       \key g \minor
3837       \rhMusic
3838     >>
3839     \new Staff = "LH" <<
3840       \key g \minor
3841       \clef "bass"
3842       \lhMusic
3843     >>
3844   >>
3845 }
3846 @end lilypond
3847
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:
3862
3863 @cindex Tie, esempio di sovrascrittura
3864 @cindex proprietà staff-position, esempio
3865 @cindex staff-position, esempio
3866
3867 @c line-width ensures no break
3868 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3869 rhMusic = \relative {
3870   \new Voice {
3871     r2 c''4.\( g8 |
3872     \once \override Tie.staff-position = #3.5
3873     bes1~ |
3874     \bar "||"
3875     \time 6/4
3876     bes2.\tempo "Moderato" r8
3877     \mergeDifferentlyHeadedOn
3878     \mergeDifferentlyDottedOn
3879     % Inizia la sezione polifonica a quattro voci
3880     <<
3881       { c,8 d fis bes a }  % continuazione della voce principale
3882       \new Voice {
3883         \voiceTwo
3884         % Sposta il c2 fuori dalla colonna della nota principale
3885         % in modo che l'unione di note funzioni
3886         c,8~ \shiftOnn c2
3887       }
3888       \new Voice {
3889         \voiceThree
3890         % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3891         s8 \stemDown d2
3892       }
3893       \new Voice {
3894         \voiceFour
3895         s4 fis4.
3896       }
3897     >> |
3898     \mergeDifferentlyHeadedOff
3899     \mergeDifferentlyDottedOff
3900     g2.\)  % continuazione della voce principale
3901   }
3902 }
3903
3904 lhMusic = \relative {
3905   r2 <c' g ees>2( |
3906   <d g, d>1)\arpeggio |
3907   r2. d,,4 r4 r |
3908   r4
3909 }
3910
3911 \score {
3912   \new PianoStaff <<
3913     \new Staff = "RH"  <<
3914       \key g \minor
3915       \rhMusic
3916     >>
3917     \new Staff = "LH" <<
3918       \key g \minor
3919       \clef "bass"
3920       \lhMusic
3921     >>
3922   >>
3923 }
3924 @end lilypond
3925
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:
3931
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
3938
3939 @c line-width ensures no break
3940 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3941 rhMusic = \relative {
3942   \new Voice {
3943     r2 c''4.\( g8 |
3944     \once \override Tie.staff-position = #3.5
3945     bes1~ |
3946     \bar "||"
3947     \time 6/4
3948     bes2.^\markup { \bold "Moderato" } r8
3949     \mergeDifferentlyHeadedOn
3950     \mergeDifferentlyDottedOn
3951     % Inizia la sezione polifonica a quattro voci
3952     <<
3953       { c,8 d fis bes a }  % continuazione della voce principale
3954       \new Voice {
3955         \voiceTwo
3956         c,8~
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
3961         \shiftOnn
3962         c2
3963       }
3964       \new Voice {
3965         \voiceThree
3966         s8
3967         % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3968         \stemDown
3969         % Il gambo di d2 deve essere invisibile
3970         \tweak Stem.transparent ##t
3971         d2
3972       }
3973       \new Voice {
3974         \voiceFour
3975         s4 fis4.
3976       }
3977     >> |
3978     \mergeDifferentlyHeadedOff
3979     \mergeDifferentlyDottedOff
3980     g2.\)  % continuazione della voce principale
3981   }
3982 }
3983
3984 lhMusic = \relative {
3985   r2 <c' g ees>2( |
3986   <d g, d>1)\arpeggio |
3987   r2. d,,4 r4 r |
3988   r4
3989 }
3990
3991 \score {
3992   \new PianoStaff <<
3993     \new Staff = "RH"  <<
3994       \key g \minor
3995       \rhMusic
3996     >>
3997     \new Staff = "LH" <<
3998       \key g \minor
3999       \clef "bass"
4000       \lhMusic
4001     >>
4002   >>
4003 }
4004 @end lilypond
4005
4006
4007 @node Altre modifiche
4008 @section Altre modifiche
4009 @translationof Further tweaking
4010
4011 @menu
4012 * Altri usi delle modifiche con \tweak::
4013 * Uso delle variabili per modificare la formattazione::
4014 * Fogli di stile::
4015 * Altre fonti di informazione::
4016 * Modifiche avanzate con Scheme::
4017 @end menu
4018
4019 @node Altri usi delle modifiche con \tweak
4020 @subsection Altri usi delle modifiche con @code{\tweak}
4021 @translationof Other uses for tweaks
4022
4023 @menu
4024 * Legature di valore tra note di voci diverse::
4025 * Simulare una corona nel MIDI::
4026 @end menu
4027
4028 @cindex rimuovere gli oggetti
4029 @cindex oggetti, rimuoverli
4030
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
4034
4035 @cindex legature di valore tra note di voci diverse
4036
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
4041
4042 @lilypond[quote]
4043 << { b'8~ 8\noBeam } \\ { b'8[ g'] } >>
4044 @end lilypond
4045
4046 @noindent
4047 e si toglie il primo gambo di quella voce e la sua coda, la legatura sembra
4048 attraversare le voci:
4049
4050 @cindex Stem, esempio di rimozione
4051 @cindex Flag, esempio di rimozione
4052 @cindex @code{\omit}, esempio
4053
4054 @lilypond[quote,verbatim]
4055 <<
4056   {
4057     \once \omit Stem
4058     \once \omit Flag
4059     b'8~ 8\noBeam
4060   }
4061 \\
4062   { b'8[ g'] }
4063 >>
4064 @end lilypond
4065
4066 @seealso
4067 Manuale di apprendimento:
4068 @ref{Il prefisso once,,Il prefisso @code{@bs{}once}},
4069 @ref{La proprietà stencil}.
4070
4071
4072 @node Simulare una corona nel MIDI
4073 @unnumberedsubsubsec Simulare una corona nel MIDI
4074 @translationof Simulating a fermata in MIDI
4075
4076 @cindex proprietà stencil, uso della
4077 @cindex corona, usarla nel MIDI
4078
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.
4085
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:
4092
4093 @cindex MetronomeMark, esempio di sovrascrittura
4094 @cindex proprietà transparent, esempio
4095 @cindex transparent, esempio
4096
4097 @lilypond[quote,verbatim,ragged-right]
4098 \score {
4099   \relative {
4100     % Indicazione di tempo visibile
4101     \tempo 4=120
4102     a'4 a a
4103     \once \hide Score.MetronomeMark
4104     % Indicazione di tempo invisibile per allungare la fermata nel MIDI
4105     \tempo 4=80
4106     a4\fermata |
4107     % Nuovo tempo per la sezione successiva
4108     \tempo 4=100
4109     a4 a a a |
4110   }
4111   \layout { }
4112   \midi { }
4113 }
4114 @end lilypond
4115
4116 @cindex MetronomeMark, esempio di sovrascrittura
4117 @cindex proprietà stencil, esempio
4118 @cindex stencil, esempio
4119
4120 @lilypond[quote,verbatim,ragged-right]
4121 \score {
4122   \relative {
4123     % Indicazione di tempo visibile
4124     \tempo 4=120
4125     a'4 a a
4126     \once \omit Score.MetronomeMark
4127     % Indicazione di tempo invisibile per allungare la fermata nel MIDI
4128     \tempo 4=80
4129     a4\fermata |
4130     % Nuovo tempo per la sezione successiva
4131     \tempo 4=100
4132     a4 a a a |
4133   }
4134   \layout { }
4135   \midi { }
4136 }
4137 @end lilypond
4138
4139 @noindent
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.
4145
4146 @seealso
4147 Glossario musicale:
4148 @rglosnamed{system,sistema}.
4149
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
4153
4154 @cindex variabili, usarle per le sovrascritture
4155 @cindex sovrascritture, usare le variabili per
4156 @cindex formattazione, usare le variabili per modificare la
4157
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.
4162
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}?
4170
4171 @example
4172 \override Lyrics.LyricText.font-shape = #'italic
4173 \override Lyrics.LyricText.font-series = #'bold
4174
4175 \revert Lyrics.LyricText.font-shape
4176 \revert Lyrics.LyricText.font-series
4177 @end example
4178
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ù
4187 rapidamente:
4188
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
4194
4195 @lilypond[quote,verbatim]
4196 emphasize = {
4197   \override Lyrics.LyricText.font-shape = #'italic
4198   \override Lyrics.LyricText.font-series = #'bold
4199 }
4200
4201 normal = {
4202   \revert Lyrics.LyricText.font-shape
4203   \revert Lyrics.LyricText.font-series
4204 }
4205
4206 global = { \key c \major \time 4/4 \partial 4 }
4207
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 }
4212
4213 VerseOne = \lyrics {
4214   E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
4215 }
4216
4217 VerseTwo = \lyricmode {
4218   O | \once \emphasize Christ, whose voice the | wa -- ters heard,
4219 }
4220
4221 VerseThree = \lyricmode {
4222   O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
4223 }
4224
4225 VerseFour = \lyricmode {
4226   O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
4227 }
4228
4229 \score {
4230   \new ChoirStaff <<
4231     \new Staff <<
4232       \clef "treble"
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 }
4239     >>
4240     \new Staff <<
4241       \clef "bass"
4242       \new Voice = "Tenor" { \voiceOne \TenorMusic }
4243       \new Voice = "Bass"  { \voiceTwo \BassMusic }
4244     >>
4245   >>
4246 }
4247 @end lilypond
4248
4249
4250 @node Fogli di stile
4251 @subsection Fogli di stile
4252 @translationof Style sheets
4253
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?
4258 È molto semplice.
4259
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}.
4263
4264 @lilypond[quote,verbatim,ragged-right]
4265 mpdolce =
4266   \tweak self-alignment-X #-0.6
4267   #(make-dynamic-script
4268     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4269
4270 inst =
4271 #(define-music-function
4272      (string)
4273      (string?)
4274    #{ <>^\markup \bold \box #string #})
4275
4276 \relative {
4277   \tempo 4=50
4278   a'4.\mpdolce d8 cis4--\glissando a |
4279   b4 bes a2 |
4280   \inst "Clarinet"
4281   cis4.\< d8 e4 fis |
4282   g8(\! fis)-. e( d)-. cis2 |
4283 }
4284 @end lilypond
4285
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:
4292
4293 @example
4294 %%% salva queste righe in un file chiamato "definitions.ily"
4295 mpdolce =
4296   \tweak self-alignment-X #-0.6
4297   #(make-dynamic-script
4298     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4299
4300
4301 inst =
4302 #(define-music-function
4303      (string)
4304      (string?)
4305    #@{ <>^\markup \bold \box #string #@})
4306 @end example
4307
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}).
4312
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.
4315
4316 @example
4317 \include "definitions.ily"
4318
4319 \relative @{
4320   \tempo 4=50
4321   a'4.\mpdolce d8 cis4--\glissando a |
4322   b4 bes a2 |
4323   \inst "Clarinet"
4324   cis4.\< d8 e4 fis |
4325   g8(\! fis)-. e( d)-. cis2 |
4326 @}
4327 @end example
4328
4329 @lilypond[quote,ragged-right]
4330 mpdolce =
4331   \tweak self-alignment-X #-0.6
4332   #(make-dynamic-script
4333     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4334
4335 inst =
4336 #(define-music-function
4337      (string)
4338      (string?)
4339    #{ <>^\markup \bold \box #string #})
4340
4341 \relative {
4342   \tempo 4=50
4343   a'4.\mpdolce d8 cis4--\glissando a |
4344   b4 bes a2 |
4345   \inst "Clarinet"
4346   cis4.\< d8 e4 fis |
4347   g8(\! fis)-. e( d)-. cis2 |
4348 }
4349 @end lilypond
4350
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.
4356
4357 Ma non devi cambiare @file{music.ly} bensì @file{definitions.ily}, in
4358 questo modo:
4359
4360 @example
4361 %%%  definitions.ily
4362 mpdolce =
4363   \tweak self-alignment-X #-0.6
4364   #(make-dynamic-script
4365     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4366
4367 inst =
4368 #(define-music-function
4369      (string)
4370      (string?)
4371    #@{ <>^\markup \bold \box #string #@})
4372
4373 \layout@{
4374   \context @{
4375     \Score
4376     \override MetronomeMark.extra-offset = #'(-5 . 0)
4377     \override MetronomeMark.padding = #'3
4378   @}
4379   \context @{
4380     \Staff
4381     \override TimeSignature.style = #'numbered
4382   @}
4383   \context @{
4384     \Voice
4385     \override Glissando.thickness = #3
4386     \override Glissando.gap = #0.1
4387   @}
4388 @}
4389 @end example
4390
4391 @lilypond[quote,ragged-right]
4392 mpdolce =
4393   \tweak self-alignment-X #-0.6
4394   #(make-dynamic-script
4395     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4396
4397 inst =
4398 #(define-music-function
4399      (string)
4400      (string?)
4401    #{ <>^\markup \bold \box #string #})
4402
4403 \layout{
4404   \context {
4405     \Score
4406     \override MetronomeMark.extra-offset = #'(-5 . 0)
4407     \override MetronomeMark.padding = #'3
4408   }
4409   \context {
4410     \Staff
4411     \override TimeSignature.style = #'numbered
4412   }
4413   \context {
4414     \Voice
4415     \override Glissando.thickness = #3
4416     \override Glissando.gap = #0.1
4417   }
4418 }
4419
4420 \relative {
4421   \tempo 4=50
4422   a'4.\mpdolce d8 cis4--\glissando a |
4423   b4 bes a2 |
4424   \inst "Clarinet"
4425   cis4.\< d8 e4 fis |
4426   g8(\! fis)-. e( d)-. cis2 |
4427 }
4428 @end lilypond
4429
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.
4436
4437 @example
4438 %%%  web-publish.ily
4439 mpdolce =
4440   \tweak self-alignment-X #-0.6
4441   #(make-dynamic-script
4442     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4443
4444 inst =
4445 #(define-music-function
4446      (string)
4447      (string?)
4448    #@{ <>^\markup \bold \box #string #@})
4449
4450 #(set-global-staff-size 23)
4451
4452 \layout@{
4453   \context @{
4454     \Score
4455     \override MetronomeMark.extra-offset = #'(-5 . 0)
4456     \override MetronomeMark.padding = #'3
4457   @}
4458   \context @{
4459     \Staff
4460   @}
4461   \context @{
4462     \Voice
4463     \override Glissando.thickness = #3
4464     \override Glissando.gap = #0.1
4465   @}
4466 @}
4467 @end example
4468
4469 @lilypond[quote,ragged-right]
4470 mpdolce =
4471   \tweak self-alignment-X #-0.6
4472   #(make-dynamic-script
4473     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4474
4475 inst =
4476 #(define-music-function
4477      (string)
4478      (string?)
4479    #{ <>^\markup \bold \box #string #})
4480
4481 #(set-global-staff-size 23)
4482
4483 \layout{
4484   \context { \Score
4485     \override MetronomeMark.extra-offset = #'(-5 . 0)
4486     \override MetronomeMark.padding = #'3
4487   }
4488   \context { \Voice
4489     \override Glissando.thickness = #3
4490     \override Glissando.gap = #0.1
4491   }
4492 }
4493
4494 \relative {
4495   \tempo 4=50
4496   a'4.\mpdolce d8 cis4--\glissando a |
4497   b4 bes a2 |
4498   \inst "Clarinet"
4499   cis4.\< d8 e4 fis |
4500   g8(\! fis)-. e( d)-. cis2 |
4501 }
4502 @end lilypond
4503
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ì:
4513
4514 @example
4515 \include "definitions.ily"
4516
4517 %%% Una sola di queste linee deve essere commentata
4518 \include "web-publish.ily"
4519 %\include "university.ily"
4520 @end example
4521
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
4526
4527 @example
4528 %%%   global.ily
4529 \version @w{"@version{}"}
4530
4531 #(ly:set-option 'point-and-click #f)
4532
4533 \include "../init/init-defs.ly"
4534 \include "../init/init-layout.ly"
4535 \include "../init/init-headers.ly"
4536 \include "../init/init-paper.ly"
4537 @end example
4538
4539
4540 @node Altre fonti di informazione
4541 @subsection Altre fonti di informazione
4542 @translationof Other sources of information
4543
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:
4553
4554 @subsubheading Scaricato da lilypond.org
4555
4556 @itemize @bullet
4557 @item GNU/Linux
4558
4559 Vai in
4560 @example
4561 @file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/}
4562 @end example
4563
4564 @item MacOS X
4565
4566 Vai in
4567 @example
4568 @file{@var{INSTALLDIR}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4569 @end example
4570
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}.
4574
4575 @item Windows
4576
4577 Con Windows Explorer vai in
4578 @example
4579 @file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/}
4580 @end example
4581
4582 @end itemize
4583
4584 @subsubheading Istallato da un gestore di pacchetti o compilato da sorgenti
4585
4586 Vai in
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.
4591
4592 @smallspace
4593
4594 All'interno di questa directory le due sottodirectory interessanti sono
4595
4596 @itemize
4597 @item @file{ly/} - contiene i file nel linguaggio di LilyPond
4598 @item @file{scm/} - contiene i file nel linguaggio Scheme
4599 @end itemize
4600
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ì:
4609
4610 @example
4611 tieDotted = @{
4612   \override Tie.dash-period = #0.75
4613   \override Tie.dash-fraction = #0.1
4614 @}
4615 @end example
4616
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.
4620
4621 Ecco i file più utili che si trovano in @file{ly/}:
4622
4623 @multitable @columnfractions .4 .6
4624 @headitem Nome del file
4625   @tab Contenuti
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})
4636 @end multitable
4637
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}).
4646
4647 Nel caso tu conosca Scheme, i file che potrebbero essere di interesse sono:
4648
4649 @multitable @columnfractions .4 .6
4650 @headitem Nome del file
4651   @tab Contenuti
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
4667 @end multitable
4668
4669
4670 @node Modifiche avanzate con Scheme
4671 @subsection Modifiche avanzate con Scheme
4672 @translationof Advanced tweaks with Scheme
4673
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}.
4682
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.
4690
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
4696
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)
4701                                7)))
4702      (case mod-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
4711        )))
4712
4713 \relative {
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 |
4717 }
4718 @end lilypond
4719
4720 Altri esempi che mostrano l'uso di queste interfacce programmabili
4721 si trovano in @rextend{Callback functions}.