]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/it/learning/tweaks.itely
ce875aefece6f2172c02c03e08ab52dd1cb4eabb
[lilypond.git] / Documentation / it / learning / tweaks.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
2
3 @ignore
4     Translation of GIT committish: 28add695953862ef4a87f9fbeadd1d02dc299244
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{Contexts and engravers}, 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 Esistono anche dei grob @q{astratti} che non stampano niente da soli, bensì
113 raccolgono, posizionano e gestiscono altri grob.  Esempi comuni sono
114 @code{DynamicLineSpanner}, @code{BreakAlignment}, @code{NoteColumn},
115 @code{VerticalAxisGroup}, @code{NonMusicalPaperColumn} e simili.  Vedremo
116 in seguito come si usano alcuni di questi.
117
118 Resta da spiegare cosa sono le «Interfacce».  Molti oggetti, pur essendo
119 piuttosto diversi, condividono delle caratteristiche comuni che devono
120 essere elaborate nello stesso modo.  Ad esempio, tutti i @emph{grob} hanno un
121 colore, una dimensione, una posizione, etc.; tutte queste proprietà vengono
122 elaborate nello stesso modo durante l'interpretazione del file di input.  Per
123 semplificare queste operazioni interne, le azioni e proprietà comuni
124 sono riunite in un oggetto chiamato @code{grob-interface}.
125 Esistono molti altri raggruppamenti di proprietà comuni come queste, ognuno
126 con un nome che finisce con @code{interface}.  In totale ci sono più di
127 100 interfacce.  Vedremo in seguito perché questo sia di interesse
128 e di utilità per l'utente.
129
130 Questi sono dunque i termini principali riguardanti gli oggetti che useremo
131 in questo capitolo.
132
133 @node Convenzioni per i nomi di oggetti e proprietà
134 @subsection Convenzioni per i nomi di oggetti e proprietà
135 @translationof Naming conventions of objects and properties
136
137 @cindex convenzioni per i nomi di oggetti
138 @cindex convenzioni per i nomi di proprietà
139 @cindex oggetti, convenzioni per i nomi di
140 @cindex proprietà, convenzioni per i nomi di
141
142 Abbiamo già visto, in @ref{Contexts and engravers}, le convenzioni per i
143 nomi di oggetti.  Ecco una lista dei più comuni tipi di oggetti e
144 proprietà insieme alle convenzioni usate per nominarli e alcuni
145 esempi di nomi reali.  Abbiamo usato @q{A} per indicare un
146 qualsiasi carattere alfabetico maiuscolo e @q{aaa} per indicare un qualsiasi
147 numero di caratteri alfabetici minuscoli.  Gli altri caratteri sono indicati
148 normalmente.
149
150 @multitable @columnfractions .33 .33 .33
151 @headitem Tipo di oggetto/proprietà
152   @tab Convenzione per il nome
153   @tab Esempi
154 @item Contesti
155   @tab Aaaa o AaaaAaaaAaaa
156   @tab Staff, GrandStaff
157 @item Oggetti di formattazione
158   @tab Aaaa o AaaaAaaaAaaa
159   @tab Slur, NoteHead
160 @item Incisori
161   @tab Aaaa_aaa_engraver
162   @tab Clef_engraver, Note_heads_engraver
163 @item Interfacce
164   @tab aaa-aaa-interface
165   @tab grob-interface, break-aligned-interface
166 @item Proprietà del contesto
167   @tab aaa o aaaAaaaAaaa
168   @tab alignAboveContext, skipBars
169 @item Proprietà degli oggetti di formattazione
170   @tab aaa o aaa-aaa-aaa
171   @tab direction, beam-thickness
172 @end multitable
173
174 Come vedremo tra poco, ogni tipo di oggetto richiede un comando diverso
175 per modificare le sue proprietà, dunque è utile poter riconoscere i tipi
176 di oggetti e proprietà dai loro nomi.
177
178
179 @node Metodi di modifica
180 @subsection Metodi di modifica
181 @translationof Tweaking methods
182
183 @cindex metodi di modifica
184 @cindex modifica, metodi
185
186 @menu
187 * Il comando override::
188 * Il comando revert::
189 * Il prefisso once::
190 * Il comando overrideProperty::
191 * Il comando tweak::
192 * Il prefisso single::
193 @end menu
194
195 @node Il comando override
196 @unnumberedsubsubsec Il comando @code{@bs{}override}
197 @translationof The override command
198
199 @cindex override, comando
200 @cindex override, sintassi
201
202 @funindex \override
203 @funindex override
204
205 Abbiamo già incontrato i comandi @code{\set} e @code{\with}, che servono
206 a modificare le proprietà dei @strong{contesti} e a togliere o aggiungere
207 gli @strong{incisori}, nei paragrafi @ref{Modifying context properties} e
208 @ref{Adding and removing engravers}.  Ora dobbiamo introdurre alcuni
209 comandi più importanti.
210
211 Il comando che cambia le proprietà degli @strong{oggetti di formattazione} è
212 @code{\override}.  Dato che questo comando ha il compito di modificare
213 le caratteristiche interne fondamentali di LilyPond, la sua sintassi non è
214 semplice come quella dei comandi presentati finora.  Deve sapere esattamente
215 quale proprietà di quale oggetto in quale contesto deve essere
216 modificata e quale deve essere il suo nuovo valore.  Vediamo come
217 funziona.
218
219 La sintassi generale di questo comando è:
220
221 @example
222 \override @var{Contesto}.@var{OggettoDiFormattazione}.@var{proprietà-formattazione} = #@var{valore}
223 @end example
224
225 @noindent
226 Questo comando assegnerà alla proprietà chiamata @var{proprietà-formattazione}
227 dell'oggetto di formattazione chiamato @var{OggettoDiFormattazione}, che fa
228 parte del contesto @var{Contesto}, il valore @var{valore}.
229
230 Il @var{Contesto} può essere omesso (e di solito lo è) quando il
231 contesto richiesto è implicito e si trova a uno dei livelli più
232 bassi dei contesti, come ad esempio @code{Voice}, @code{ChordNames} o
233 @code{Lyrics}.  Lo ometteremo in molti degli esempi seguenti; vedremo
234 poi quando deve essere specificato.
235
236 Le sezioni successive tratteranno in modo dettagliato le proprietà e
237 i loro valori, si veda @ref{Types of properties}; in questa sezione, invece,
238 useremo soltanto alcune proprietà e valori di facile comprensione,
239 in modo da spiegare il formato e l'uso di questo comando.
240
241 Le espressioni fondamentali di LilyPond sono gli elementi musicali come le note,
242 le durate e le annotazioni.  Le espressioni basilari come numeri,
243 stringhe di testo e liste sono elaborate nella @q{modalità Scheme}, che viene
244 invocata inserendo @samp{#} prima del valore.  Sebbene i valori possano
245 avere talvolta una valida rappresentazione nella modalità musicale di LilyPond,
246 per coerenza questo manuale li farà sempre precedere da @samp{#}.  Per maggiori
247 informazioni sulla modalità Scheme, si veda @rextend{LilyPond Scheme syntax}.
248
249 @code{\override} è il comando più usato nelle modifiche e quasi tutto
250 il resto del capitolo ha lo scopo di mostrare alcuni esempi
251 di utilizzo.  Ecco un semplice esempio che mostra come cambiare
252 il colore della testa di nota:
253
254 @cindex proprietà del colore, esempio
255 @cindex colore, proprietà del
256 @cindex NoteHead, esempio di sovrascrittura
257
258 @lilypond[quote,ragged-right,verbatim]
259 \relative {
260   c'4 d
261   \override NoteHead.color = #red
262   e4 f |
263   \override NoteHead.color = #green
264   g4 a b c |
265 }
266 @end lilypond
267
268 @node Il comando revert
269 @unnumberedsubsubsec Il comando @code{@bs{}revert}
270 @translationof The revert command
271
272 @cindex revert, comando
273 @cindex ripristino, comando \revert
274
275 @funindex \revert
276 @funindex revert
277
278 Quando viene sovrascritta, la proprietà mantiene il suo nuovo valore finché
279 non viene sovrascritta di nuovo o non si incontra un comando @code{\revert}.
280 Il comando @code{\revert} fa sì che il valore della proprietà sia ripristinato
281 al suo valore predefinito.  Attenzione: non al suo valore precedente (nel caso
282 siano stati inseriti vari comandi @code{\override}).  Impiega la seguente sintassi:
283
284 @example
285 \revert @var{Contesto}.@var{OggettoDiFormmattazione}.@var{proprietà-formattazione}
286 @end example
287
288 Anche in questo caso, come per il comando @code{\override}, @var{Contesto} di
289 solito non è necessario e verrà omesso in molti degli esempi seguenti.
290 In questo esempio ripristiniamo il colore della testa delle ultime due
291 note al valore predefinito:
292
293 @cindex proprietà del colore, esempio
294 @cindex colore, proprietà del
295 @cindex NoteHead, esempio di sovrascrittura
296
297 @lilypond[quote,ragged-right,verbatim]
298 \relative {
299   c'4 d
300   \override NoteHead.color = #red
301   e4 f |
302   \override NoteHead.color = #green
303   g4 a
304   \revert NoteHead.color
305   b4 c |
306 }
307 @end lilypond
308
309 @node Il prefisso once
310 @unnumberedsubsubsec Il prefisso @code{@bs{}once}
311 @translationof The once prefix
312
313 @funindex \once
314 @funindex once
315
316 I comandi @code{\override}, @code{revert}, @code{\set} e @code{\unset} possono
317 essere preceduti da @code{\once}.  Questo fa sì che tale comando sia operativo
318 solo in quel determinato momento musicale, prima che la proprietà sia
319 ripristinata al suo valore precedente (che può essere diverso da quello
320 predefinito se un altro @code{\override} è ancora attivo).  Usando lo stesso
321 esempio, possiamo cambiare il colore di una singola nota in questo modo:
322
323 @cindex proprietà del colore, esempio
324 @cindex colore, proprietà del
325 @cindex NoteHead, esempio di sovrascrittura
326
327 @lilypond[quote,verbatim]
328 \relative {
329   c'4 d
330   \override NoteHead.color = #red
331   e4 f |
332   \once \override NoteHead.color = #green
333   g4 a
334   \revert NoteHead.color
335   b c |
336 }
337 @end lilypond
338
339 Il prefisso @code{\once} può essere usato anche di fronte a molti
340 comandi predefiniti per limitare il loro effetto a un momento musicale:
341
342 @lilypond[quote,verbatim]
343 \relative {
344   c'4( d)
345   \once \slurDashed
346   e4( f) |
347   g4( a)
348   \once \hideNotes
349   b( c) |
350 }
351 @end lilypond
352
353
354 @node Il comando overrideProperty
355 @unnumberedsubsubsec Il comando @code{@bs{}overrideProperty}
356 @translationof The overrideProperty command
357
358 @cindex overrideProperty, comando
359
360 @funindex \overrideProperty
361 @funindex overrideProperty
362
363 Esiste un'altra forma di comando di sovrascrittura,
364 @code{\overrideProperty}, che si rende necessario raramente.
365 Lo menzioniamo qui per completezza, ma per approfondire l'argomento
366 si veda @rextend{Difficult tweaks}.
367 @c Maybe explain in a later iteration  -td
368
369 @node Il comando tweak
370 @unnumberedsubsubsec Il comando @code{@bs{}tweak}
371 @translationof The tweak command
372
373 @cindex tweak, comando
374
375 @funindex \tweak
376 @funindex tweak
377
378 L'ultimo comando di modifica a disposizione è @code{\tweak}.  Si usa
379 quando vari oggetti compaiono nello stesso momento musicale,
380 ma si vogliono modificare soltanto le proprietà di alcuni oggetti, come
381 ad esempio una singola nota all'interno di un accordo.  Se si usa @code{\override}
382 la modifica ha effetto su tutte le note di un accordo, mentre @code{\tweak} ha
383 effetto solo sul singolo elemento che segue.
384
385 Per esempio, supponiamo di voler modificare la dimensione della
386 testa della nota centrale (il Mi) in un accordo di Do maggiore.  Vediamo prima
387 cosa succede se si usa @code{\once \override}:
388
389 @cindex proprietà font-size, esempio
390 @cindex font-size, esempio
391 @cindex NoteHead, esempio di sovrascrittura
392
393 @lilypond[quote,ragged-right,verbatim]
394 \relative {
395   <c' e g>4
396   \once \override NoteHead.font-size = #-3
397   <c e g>4
398   <c e g>4
399 }
400 @end lilypond
401
402 Come si vede, la sovrascrittura riguarda @emph{tutte} le teste di nota
403 dell'accordo.  Ciò è dovuto al fatto che tutte le note di un accordo
404 si trovano nello stesso @emph{momento musicale} e l'azione di @code{\once}
405 consiste nell'applicare la sovrascrittura a tutti gli oggetti di formattazione
406 del tipo specificato che si trovano nello stesso momento musicale del comando
407 @code{\override} stesso.
408
409 Il comando @code{\tweak} funziona in modo diverso.  Agisce sull'elemento
410 immediatamente successivo nel flusso di codice.  Nella sua forma più
411 semplice funziona solo sugli oggetti creati direttamente dall'elemento
412 seguente, in particolare teste di nota e articolazioni.
413
414 Tornando al nostro esempio, la dimensione della nota centrale
415 di un accordo si cambia in questo modo:
416
417 @cindex proprietà font-size, esempio
418 @cindex font-size, esempio
419 @cindex @code{\tweak}, esempio
420
421 @lilypond[quote,ragged-right,verbatim]
422 \relative {
423   <c' e g>4
424   <c \tweak font-size #-3 e g>4
425 }
426 @end lilypond
427
428 Si noti che la sintassi di @code{\tweak} è diversa da quella di
429 @code{\override}.  Il contesto non deve essere specificato; anzi,
430 se lo fosse verrebbe generato un errore.  Sia il contesto che l'oggetto
431 di formattazione sono sottintesi dall'elemento che segue nel flusso di
432 input.  Nota anche che non ci devono essere segni di uguale (@code{=}).  Dunque la
433 forma semplice del comando @code{\tweak} è
434
435 @example
436 \tweak @var{proprietà-formattazione} #@var{valore}
437 @end example
438
439 Il comando @code{\tweak} serve anche a modificare soltanto una di una serie
440 di articolazioni:
441
442 @cindex proprietà del colore, esempio
443 @cindex colore, proprietà del
444 @cindex @code{\tweak}, esempio
445
446 @lilypond[quote,fragment,ragged-right,verbatim]
447 a'4^"Black"
448   -\tweak color #red ^"Red"
449   -\tweak color #green _"Green"
450 @end lilypond
451
452 @noindent
453 Nota che il comando @code{\tweak} deve essere preceduto da un segno di
454 articolazione, perché la stessa espressione modificata deve essere applicata come articolazione.  In caso di più sovrascritture della
455 direzione (@code{^} o @code{_}), prevale la sovrascrittura posizionata più a sinistra,
456 perché viene applicata per ultima.
457
458 @cindex @code{\tweak}, alterazione
459 @cindex @code{\tweak}, oggetto di formattazione specifico
460
461 Alcuni oggetti, come gambi e alterazioni, vengono creati dopo, non
462 direttamente dall'evento che segue.  È comunque possibile usare
463 @code{\tweak} con questi oggetti creati indirettamente se si indica
464 esplicitamente l'oggetto di formattazione, purché LilyPond riesca a
465 seguire la sua origine fino all'evento originale:
466
467 @lilypond[quote,fragment,ragged-right,verbatim]
468 <\tweak Accidental.color #red   cis''4
469  \tweak Accidental.color #green es''
470  g''>
471 @end lilypond
472
473 Questa forma estesa del comando @code{\tweak} può essere descritta così
474 @example
475 \tweak @var{OggettoFormattazione}.@var{proprietà-formattazione} #@var{valore}
476 @end example
477
478 @cindex gruppi irregolari, annidati
479 @cindex terzine, annidate
480 @cindex parentesi, gruppo irregolare
481 @cindex parentesi, terzina
482 @cindex parentesi del gruppo irregolare
483 @cindex parentesi della terzina
484
485 @funindex TupletBracket
486
487 Il comando @code{\tweak} è necessario anche quando si vuole cambiare
488 l'aspetto di uno di una serie di gruppi irregolari annidati che iniziano
489 nello stesso momento musicale.  Nell'esempio seguente, la prima lunga
490 parentesi del gruppo irregolare e la prima delle tre brevi parentesi
491 iniziano nello stesso momento musicale, quindi qualsiasi comando
492 @code{\override} produrrebbe degli effetti su entrambi.  In questo esempio,
493 si usa @code{\tweak} per distinguerli.  Il primo comando @code{\tweak}
494 indica che la lunga parentesi del gruppo irregolare deve essere posizionata
495 sopra le note e il secondo indica che il numero del primo gruppo irregolare
496 deve essere in rosso.
497
498 @cindex @code{\tweak}, esempio
499 @cindex proprietà della direzione, esempio
500 @cindex direzione, esempio
501 @cindex proprietà del colore, esempio
502 @cindex colore, esempio
503
504 @lilypond[quote,ragged-right,verbatim]
505 \relative c'' {
506   \tweak direction #up
507   \tuplet 3/4 {
508     \tweak color #red
509     \tuplet 3/2 { c8[ c c] }
510     \tuplet 3/2 { c8[ c c] }
511     \tuplet 3/2 { c8[ c c] }
512   }
513 }
514 @end lilypond
515
516 Se i gruppi irregolari annidati non iniziano nello stesso momento, il loro
517 aspetto può essere modificato come di consueto con i comandi @code{\override}:
518
519 @cindex proprietà text, esempio
520 @cindex text, esempio
521 @cindex funzione tuplet-number, esempio
522 @cindex proprietà transparent, esempio
523 @cindex transparent, esempio
524 @cindex TupletNumber, esempio di sovrascrittura
525
526 @c NOTE Tuplet brackets collide if notes are high on staff
527 @c See issue 509
528 @lilypond[quote,ragged-right,verbatim]
529 \relative {
530   \tuplet 3/2 { c'8[ c c] }
531   \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
532   \tuplet 3/2 {
533     c8[ c]
534     c8[ c]
535     \once \override TupletNumber.transparent = ##t
536     \tuplet 3/2 { c8[ c c] }
537     \tuplet 3/2 { c8[ c c] }
538   }
539 }
540 @end lilypond
541
542 @seealso
543 @c need to comment this until the node conflict is fixed - fb
544 Guida alla Notazione:
545 @ruser{The tweak command,,The tweak command}.
546
547
548 @node Il prefisso single
549 @unnumberedsubsubsec Il prefisso @code{@bs{}single}
550 @translationof The single prefix
551
552 @funindex \single
553 @cindex tweak, generato da override
554
555 Immaginiamo di voler enfatizzare alcune teste di nota in particolare
556 colorandole di rosso e aumentandone la dimensione; e immaginiamo anche
557 che per comodità abbiamo definito una funzione per fare ciò:
558
559 @lilypond[quote,verbatim]
560 emphNoteHead = {
561   \override NoteHead.color = #red
562   \override NoteHead.font-size = 2
563 }
564 \relative {
565   c''4 a \once \emphNoteHead f d |
566 }
567 @end lilypond
568
569 Il prefisso @code{\once} funziona bene se si desidera enfatizzare note
570 singole o interi accordi, ma non permette di enfatizzare una singola
571 nota @emph{dentro} un accordo.  Prima abbiamo visto come si possa usare
572 @code{\tweak} per fare ciò, vedi @ref{The tweak command}.
573 Ma non è possibile usare @code{\tweak} in una funzione; è in questo caso che
574 torna utile il comando @code{\single}:
575
576 @lilypond[quote,verbatim]
577 emphNoteHead = {
578   \override NoteHead.color = #red
579   \override NoteHead.font-size = 2
580 }
581 \relative {
582    <c'' a \single \emphNoteHead f d>4
583 }
584 @end lilypond
585
586 In sintesi, @code{\single} converte le modifiche introdotte dal comando
587 @code{\override} in modifiche eseguite dal comando @code{\tweak}.
588 Ciò significa che quando ci sono vari oggetti che si trovano nello stesso
589 momento musicale (come le teste di nota in un accordo), @code{\single} avrà
590 effetto su uno solo, quello generato dall'espressione musicale immediatamente
591 seguente; a differenza di @code{\once}, che ha effetto su tutti questi oggetti.
592
593 Usando @code{\single} in questo modo qualsiasi funzione usata come
594 scorciatoia che contiene soltanto @code{\override} può essere applicata
595 a note individuali in un accordo.  Tuttavia, @code{\single} non converte
596 @code{\revert}, @code{\set} e @code{\unset} in modifiche che hanno le
597 proprietà di @code{\tweak}.
598
599 @seealso
600 Manuale di apprendimento:
601 @ref{The tweak command},
602 @ref{Using variables for layout adjustments}.
603
604
605 @node Manuale del Funzionamento interno
606 @section Manuale del Funzionamento interno
607 @translationof The Internals Reference manual
608
609 @cindex Guida al Funzionamento interno
610
611 @menu
612 * Proprietà degli oggetti di formattazione::
613 * Proprietà presenti nelle interfacce::
614 * Tipi di proprietà::
615 @end menu
616
617 @node Proprietà degli oggetti di formattazione
618 @subsection Proprietà degli oggetti di formattazione
619 @translationof Properties of layout objects
620
621 @cindex proprietà degli oggetti di formattazione
622 @cindex proprietà degli oggetti grafici (grob)
623 @cindex ogggetti grafici, proprietà degli
624 @cindex oggetti di formattazione, proprietà degli
625 @cindex manuale del Funzionamento Interno
626
627 Immagina di avere una legatura di portamento che ai tuoi
628 occhi appare troppo sottile e che vorresti un po' più spessa.
629 Come fare?  Sai che LilyPond è molto flessibile e che quindi
630 dovrebbe essere possibile farlo; e probabilmente immagini
631 che sia necessario un comando @code{\override}.  Ma esiste una
632 proprietà che controlla lo spessore di una legatura? E se esiste
633 come può essere modificata?  Qui entra in gioco il manuale del Funzionamento
634 Interno, che contiene tutte le informazioni necessarie per costruire
635 tutti i comandi @code{\override}.
636
637 Prima di dare un'occhiata alla guida al Funzionamento Interno, vogliamo
638 avvisarti: si tratta di un documento di @strong{riferimento}, che significa
639 che ci sono poche o nessune spiegazioni al suo interno, dato che il suo
640 scopo è presentare le informazioni in modo preciso e conciso.  Dunque potrà
641 sembrare scoraggiante al primo impatto.  Ma non ti preoccupare!  I consigli
642 e le spiegazioni presentate qui, insieme a un po' di pratica, ti permetteranno
643 di estrarre da solo da quella guida le informazioni che cerchi.
644
645 @cindex esempio di sovrascrittura
646 @cindex sovrascrittura, esempio
647 @cindex Guida al Funzionamento Interno, esempio d'uso
648 @cindex @code{\addlyrics}, esempio
649
650 Partiamo da un esempio concreto, un semplice frammento di musica:
651
652 @c Mozart, Die Zauberflöte Nr.7 Duett
653
654 @lilypond[quote,verbatim]
655 {
656   \key es \major
657   \time 6/8
658   \relative {
659     r4 bes'8 bes[( g]) g |
660     g8[( es]) es d[( f]) as |
661     as8 g
662   }
663   \addlyrics {
664     The man who | feels love's sweet e -- | mo -- tion
665   }
666 }
667 @end lilypond
668
669 Supponiamo ora che si vogliano rendere un po' più spesse le
670 legature di portamento.  È possibile?  La legatura di portamento
671 è certamente un oggetto di formattazione, dunque la domanda è: @q{Esiste una
672 proprietà che appartiene a una legatura di portamento in grado di controllare
673 lo spessore?}  Per rispondere a questa domanda dobbiamo guardare
674 nella guida al Funzionamento interno.
675
676 Puoi trovare la guida nella versione di LilyPond che stai usando
677 sul sito di LilyPond: @uref{http://lilypond.org}.  Vai alla
678 pagina della documentazione e clicca sul link alla guida del Funzionamento
679 interno.  Per poter seguire questo manuale dovresti usare la versione HTML standard,
680 non quella in un'unica grande pagina né il PDF.  Nei prossimi paragrafi ti
681 servirà per seguire gli esempi che faremo.
682
683 Sotto il titolo vedrai cinque link.  Seleziona il
684 link al @strong{Backend}, dove si trovano le informazioni
685 sugli oggetti di formattazione (@emph{layout objects}).  Poi sotto il titolo
686 @emph{Backend}, seleziona il link a @strong{All layout objects}.
687 La pagina che compare elenca tutti gli oggetti di formattazione usati
688 nella tua versione di LilyPond, in ordine alfabetico.  Seleziona il link a
689 Slur (legatura di portamento) e verranno elencate le sue proprietà.
690
691 Si può trovare questa pagina anche dalla Guida alla notazione.  In una
692 delle pagine che tratta le legature di portamento potrai trovare un
693 link alla Guida al funzionamento interno.  Il link ti porterà direttamente
694 a questa pagina, ma se hai un'idea di quale sia l'oggetto di formattazione
695 da modificare, è più semplice andare direttamente nella guida del Funzionamento
696 interno e cercare lì.
697
698 La pagina sulla legatura di portamento (@emph{Slur}) ci dice per prima cosa che gli
699 oggetti Slur sono creati dall'incisore Slur_engraver.  Poi elenca le impostazioni
700 standard.  Scorrile cercando la proprietà che potrebbe controllare lo spessore
701 delle legature di portamento; dovresti trovare
702
703 @example
704 @code{thickness} (number)
705      @code{1.2}
706      Line thickness, generally measured in @code{line-thickness}
707 @end example
708
709 Sembra che sia quel che stiamo cercando.  Ci dice che il valore
710 di @code{thickness} (spessore) è un semplice @emph{numero},
711 che il valore predefinito è 1.2 e che le unità si trovano in
712 un'altra proprietà chiamata @code{line-thickness}.
713
714 Come abbiamo detto prima, ci sono poche spiegazioni nella guida al
715 Funzionamento interno, tuttavia abbiamo già informazioni sufficienti
716 per cercare di cambiare lo spessore delle legature di portamento.
717 Vediamo che il nome dell'oggetto di formattazione è @code{Slur}, che
718 il nome della proprietà da modificare è @code{thickness} e che il
719 nuovo valore dovrà essere un numero un po' più grande di 1.2
720 se vogliamo rendere più spesse le legature.
721
722 Ora possiamo costruire il comando @code{\override} sostituendo
723 i valori che abbiamo trovato per i nomi e omettendo il
724 contesto.  Inizialmente usiamo un valore molto grande per lo
725 spessore, per essere sicuri che il comando funzioni:
726
727 @example
728 \override Slur.thickness = #5.0
729 @end example
730
731 Non dimenticare il@tie{}@code{#} che precede il nuovo valore!
732
733 L'ultima domanda è: @q{dove va messo questo comando?}  Finché non sei sicuro
734 e stai ancora imparando, la risposta migliore è: @q{dentro la musica, prima della
735 prima legatura di portamento e accanto ad essa.}  Facciamolo:
736
737 @cindex legatura di portamento, esempio di sovrascrittura
738 @cindex proprietà thickness, esempio
739 @cindex thickness (spessore), esempio
740
741 @lilypond[quote,verbatim]
742 {
743   \key es \major
744   \time 6/8
745   \relative {
746     % Increase thickness of all following slurs from 1.2 to 5.0
747     \override Slur.thickness = #5.0
748     r4 bes'8 bes[( g]) g |
749     g8[( es]) es d[( f]) as |
750     as8 g
751   }
752   \addlyrics {
753     The man who | feels love's sweet e -- | mo -- tion
754   }
755 }
756 @end lilypond
757
758 @noindent
759 e vediamo che la legatura di portamento è davvero più grossa.
760
761 Questi sono i fondamenti per costruire i comandi @code{\override}.  Incontreremo
762 delle situazioni più complesse nelle sezioni successive, ma ora possiedi già
763 tutte le conoscenze di base che ti permetteranno di costruire i tuoi comandi.
764 Ti manca solo un po' di pratica, che potrai fare grazie ai prossimi esempi.
765
766 @subsubheading Trovare il contesto
767
768 @cindex contesto, trovare il
769 @cindex contesto, identificare il corretto
770
771 E se avessimo bisogno di specificare il contesto?
772 Quale dovrebbe essere?  Potremmo immaginare che le legature
773 di portamento si trovino nel contesto Voice, dato che sono ovviamente
774 collegate strettamente alle singole voci, ma possiamo
775 esserne sicuri?  Per scoprirlo, vai in cima alla pagina del Funzionamento
776 Interno relativa a «Slur», dove dice @q{Slur objects are created by: Slur
777 engraver}.  Significa che le legature di portamento sono create nel contesto
778 in cui si trova l'incisore @code{Slur_engraver}.  Segui il link alla pagina
779 @code{Slur_engraver}.  In fondo dice che lo @code{Slur_engraver} fa parte di
780 vari contesti Voice, incluso il contesto standard della voce, @code{Voice}.
781 Dunque la nostra supposizione era corretta.  E dato che @code{Voice} è uno dei
782 contesti che si trovano al livello più basso, come è sottinteso senza ambiguità
783 dal fatto che stiamo inserendo delle note, in questo caso possiamo ometterlo.
784
785 @subsubheading Sovrascrivere una volta sola
786
787 @cindex sovrascrivere una volta sola
788 @cindex \once \override
789
790 @funindex \once
791 @funindex once
792
793 Come puoi vedere, @emph{tutte} le legature di portamento sono più spesse nell'ultimo
794 esempio.  E se volessimo rendere più spessa solo la prima legatura di portamento?
795 Dovremmo usare il comando @code{\once}.  Se posto immediatamente prima
796 di @code{\override} fa sì che questo modifichi soltanto la legatura di portamento
797 che inizia sulla nota @strong{immediatamente seguente}.  Se la nota immediatamente
798 seguente non inizia la legatura, il comando non ha alcun effetto -- non è
799 ricordato finché non si incontra una legatura di portamento, ma
800 viene direttamente scartato.  Quindi il comando con @code{\once} deve essere riposizionato
801 nel modo seguente:
802
803 @cindex Slur, esempio di sovrascrittura
804 @cindex proprietà thickness, esempio
805 @cindex thickness (spessore), esempio
806
807 @lilypond[quote,verbatim]
808 {
809   \key es \major
810   \time 6/8
811   \relative {
812     r4 bes'8
813     % Aumenta lo spessore solo della legatura che segue
814     \once \override Slur.thickness = #5.0
815     bes8[( g]) g |
816     g8[( es]) es d[( f]) as |
817     as8 g
818   }
819   \addlyrics {
820     The man who | feels love's sweet e -- | mo -- tion
821   }
822 }
823 @end lilypond
824
825 @noindent
826 Ora solo la prima legatura è più spessa.
827
828 Il comando @code{\once} può essere usato anche prima del comando @code{\set}.
829
830 @subsubheading Ripristinare
831
832 @cindex revert
833 @cindex ripristinare le proprietà predefinite
834 @cindex proprietà predefinite, ripristinare le
835
836 @funindex \revert
837 @funindex revert
838
839 E se volessimo che soltanto le prime due legature di portamento fossero
840 più spesse?  Potremmo usare due comandi, ciascuno preceduto da
841 @code{\once}, messo immediatamente prima di ognuna delle note da cui
842 iniziano le legature:
843
844 @cindex Slur, esempio di sovrascrittura
845 @cindex proprietà thickness, esempio
846 @cindex thickness (spessore), esempio
847
848 @lilypond[quote,verbatim]
849 {
850   \key es \major
851   \time 6/8
852   \relative {
853     r4 bes'8
854     % Aumenta lo spessore solo della legatura che segue
855     \once \override Slur.thickness = #5.0
856     bes[( g]) g |
857     % Aumenta lo spessore solo della legatura che segue
858     \once \override Slur.thickness = #5.0
859     g8[( es]) es d[( f]) as |
860     as8 g
861   }
862   \addlyrics {
863     The man who | feels love's sweet e -- | mo -- tion
864   }
865 }
866 @end lilypond
867
868 @noindent
869 oppure potremmo omettere il comando @code{\once} e usare il comando @code{\revert}
870 per far sì che la proprietà @code{thickness} ritorni al valore predefinito
871 dopo la seconda legatura:
872
873 @cindex Slur, esempio di sovrascrittura
874 @cindex proprietà thickness, esempio
875 @cindex thickness (spessore), esempio
876
877 @lilypond[quote,verbatim]
878 {
879   \key es \major
880   \time 6/8
881   \relative {
882     r4 bes'8
883     % Aumenta lo spessore di tutte le legature di portamento che seguono da 1.2 a 5.0
884     \override Slur.thickness = #5.0
885     bes[( g]) g |
886     g8[( es]) es
887     % Ripristina lo spessore di tutte le legature di portamento che seguono al valore predefinito 1.2
888     \revert Slur.thickness
889     d8[( f]) as |
890     as8 g
891   }
892   \addlyrics {
893     The man who | feels love's sweet e -- | mo -- tion
894   }
895 }
896 @end lilypond
897
898 @noindent
899 Il comando @code{\revert} serve a riportare qualsiasi proprietà
900 modificata con @code{\override} al suo valore predefinito.
901 Puoi usare qualsiasi metodo si adatti meglio a quello che vuoi fare.
902
903 Si conclude l'introduzione alla guida al Funzionamento interno e ai metodi
904 di base delle modifiche.  Nelle sezioni successive di questo capitolo
905 seguiranno vari esempi, in parte per presentarti ulteriori caratteristiche
906 della guida al Funzionamento interno e in parte per farti esercitare
907 nell'estrarre informazioni da esso.  Questi esempi conterranno sempre meno
908 consigli e spiegazioni.
909
910
911 @node Proprietà presenti nelle interfacce
912 @subsection Proprietà presenti nelle interfacce
913 @translationof Properties found in interfaces
914
915 @cindex interfaccia
916 @cindex proprietà dell'interfaccia
917 @cindex proprietà nelle interfacce
918
919 Supponiamo ora di voler produrre un testo vocale in corsivo.  Che tipo di
920 comando @code{\override} ci serve?  Consultiamo prima la pagina
921 della guida al Funzionamento interno che elenca @q{All layout objects}, come
922 prima, e cerchiamo un oggetto che potrebbe controllare il testo (in inglese
923 @emph{lyrics}).  Troviamo @code{LyricText}, che sembra quello giusto.  Clicchiamo
924 su di esso e troviamo le proprietà del testo.  Queste comprendono @code{font-series}
925 e @code{font-size}, ma niente che possa dare una forma corsiva.  Ciò è dovuto
926 al fatto che la proprietà della forma è comune a tutti gli oggetti di tipi
927 di carattere (@emph{font}).  Quindi, invece di includerla in ogni oggetto di
928 formattazione, viene raggruppata insieme ad altre simili proprietà comuni
929 e inserita in un'@strong{Interfaccia}: @code{font-interface}.
930
931 Ora dobbiamo capire come trovare le proprietà delle interfacce e
932 come scoprire quali oggetti usano queste proprietà.
933
934 Torna a vedere la pagina che descrive LyricText.  In fondo alla
935 pagina c'è una lista di interfacce cliccabili supportate da LyricText.
936 La lista ha molti elementi, incluso @code{font-interface}.  Cliccando
937 su di essa arriviamo alle proprietà associate con questa interfaccia, che
938 sono anche le proprietà di tutti gli oggetti che la supportano, tra cui
939 LyricText.
940
941 Vediamo tutte le proprietà configurabili dall'utente che controllano i
942 tipi di carattere, compresa @code{font-shape(symbol)}, dove @code{symbol} può
943 essere impostato su @code{upright}, @code{italic} o @code{caps}.
944
945 Puoi notare che lì sono elencate anche @code{font-series} e @code{font-size}.
946 Ti potresti chiedere: perché le proprietà comuni dei tipi di carattere
947 @code{font-series} e @code{font-size} fanno parte sia dell'oggetto
948 @code{LyricText} sia dell'interfaccia @code{font-interface} mentre @code{font-shape}
949 è presente solo nell'interfaccia?  Ciò è dovuto al fatto che i valori globali
950 predefiniti di @code{font-series} e @code{font-size} cambiano quando viene
951 creato un oggetto @code{LyricText}, mentre i valori di @code{font-shape} non
952 cambiano.  Gli elementi in @code{LyricText} indicano quali sono i
953 valori per queste due proprietà che si applicano a @code{LyricText}.  Altri
954 oggetti che supportano @code{font-interface} imposteranno queste proprietà
955 in modo diverso quando vengono creati.
956
957 Vediamo se ora riusciamo a costruire il comando @code{\override}
958 per rendere il testo corsivo.  L'oggetto è @code{LyricText},
959 la proprietà è @code{font-shape} e il valore è
960 @code{italic}.  Come in precedenza, ometteremo il contesto.
961
962 Per inciso, è importante notare che alcune proprietà prendono come valori
963 dei simboli, ad esempio @code{italic}; in questo caso i valori devono essere
964 preceduti da un apostrofo, @code{'}.  I simboli vengono letti internamente da
965 LilyPond.  Nota che sono diversi dalle stringhe di testo arbitrarie, che
966 appaiono nella forma @code{"una stringa di testo"}; maggiori informazioni sui
967 simboli e le stringhe si trovano in @rextend{Scheme tutorial}.
968
969 Quindi il comando @code{\override} che rende il testo corsivo è:
970
971 @example
972 \override LyricText.font-shape = #'italic
973 @end example
974
975 @noindent
976 Deve essere posizionato proprio di fronte al testo che vogliamo modificare,
977 in questo modo:
978
979 @cindex proprietà font-shape, esempio
980 @cindex font-shape, esempio
981 @cindex italic, esempio
982 @cindex corsivo, esempio
983 @cindex LyricText, esempio di sovrascrittura
984 @cindex @code{\addlyrics}, esempio
985
986 @lilypond[quote,ragged-right,verbatim]
987 {
988   \key es \major
989   \time 6/8
990   \relative {
991     r4 bes'8 bes[( g]) g |
992     g8[( es]) es d[( f]) as |
993     as8 g
994   }
995   \addlyrics {
996     \override LyricText.font-shape = #'italic
997     The man who | feels love's sweet e -- | mo -- tion
998   }
999 }
1000 @end lilypond
1001
1002 @noindent
1003 e tutto il testo è in corsivo.
1004
1005 @warning{Nel testo bisogna lasciare sempre uno spazio bianco tra l'ultima
1006 sillaba e la parentesi graffa che chiude il blocco.}
1007
1008
1009 @seealso
1010 Estendere: @rextend{Scheme tutorial}.
1011
1012
1013 @node Tipi di proprietà
1014 @subsection Tipi di proprietà
1015 @translationof Types of properties
1016
1017 @cindex tipi di proprietà
1018 @cindex proprietà, tipi di
1019
1020 Finora abbiamo visto due tipi di proprietà: @code{number} e
1021 @code{symbol}.  Per essere valido, il valore dato a una proprietà
1022 deve essere del tipo corretto e obbedire alle regole di quel tipo.
1023 Nella guida al Funzionamento interno il tipo di proprietà è indicato
1024 tra parentesi dopo il nome della proprietà.  Ecco una lista dei tipi
1025 che ti possono servire, corredata dalle regole per ciascun tipo e da alcuni
1026 esempi.  Ovviamente, se inseriti in un comando @code{\override}, devono
1027 essere sempre preceduti dal simbolo di cancelletto,@tie{}@code{#}, anche se
1028 il valore stesso già inizia con@tie{}@code{#}.  In questa sede diamo solo
1029 esempi di costanti: se si desidera elaborare un valore con Scheme, si veda
1030 @rextend{Calculations in Scheme}.
1031
1032 @multitable @columnfractions .2 .45 .35
1033 @headitem Tipo di proprietà
1034   @tab Regole
1035   @tab Esempi
1036 @item Boolean
1037   @tab O Vero (True) o Falso (False), rappresentato da #t o #f
1038   @tab @code{#t}, @code{#f}
1039 @item Dimension (in staff space)
1040   @tab Un numero decimale (nell'unità di misura dello spazio del rigo)
1041   @tab @code{2.5}, @code{0.34}
1042 @item Direction
1043   @tab Una valida direzione costante o il suo equivalente numerico
1044   (@code{0} o @code{CENTER} indicano una direzione neutrale)
1045   @tab @code{LEFT}, @code{CENTER}, @code{UP},
1046        @code{1}, @w{@code{-1}}
1047 @item Integer
1048   @tab Un numero intero
1049   @tab @code{3}, @code{-1}
1050 @item List
1051   @tab Una sequenza di costanti o simboli separata da spazi, racchiusa
1052   tra parentesi e preceduta da un apostrofo
1053   @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
1054        @code{'(1.0 0.25 0.5)}
1055 @item Markup
1056   @tab Qualsiasi valido blocco markup
1057   @tab @code{\markup @{ \italic "cresc." @}}, @code{"bagpipe"}
1058 @item Moment
1059   @tab Una frazione di una nota intera costruita con la
1060 funzione make-moment
1061   @tab @code{(ly:make-moment 1/4)},
1062        @code{(ly:make-moment 3/8)}
1063 @item Number
1064   @tab Qualsiasi valore positivo o negativo, possibilmente decimale
1065   @tab @code{3}, @w{@code{-2.45}}
1066 @item Pair (of numbers)
1067   @tab Due numeri separati da un @q{spazio . spazio} e racchiusi tra
1068 parentesi precedute da un apostrofo
1069   @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1070 @item Symbol
1071   @tab Qualsiasi insieme di simboli ammesso per quella proprietà,
1072 preceduto da un apostrofo
1073   @tab @code{'italic}, @code{'inside}
1074 @item Unknown
1075   @tab Una procedura o un valore @code{#f} che impedisca l'azione
1076   @tab @code{bend::print}, @code{ly:text-interface::print},
1077        @code{#f}
1078 @item Vector
1079   @tab Costanti
1080   racchiuse tra @code{#(}@dots{}@code{)}.
1081   @tab @code{#(#t #t #f)}
1082 @end multitable
1083
1084
1085 @seealso
1086 Estendere: @rextend{Scheme tutorial}.
1087
1088
1089 @node Aspetto degli oggetti
1090 @section Aspetto degli oggetti
1091 @translationof Appearance of objects
1092
1093 Mettiamo in pratica quello che abbiamo imparato con un po' di
1094 esempi che mostrano come modificare l'aspetto degli elementi
1095 di una partitura.
1096
1097 @menu
1098 * Visibilità e colore degli oggetti::
1099 * Dimensione degli oggetti::
1100 * Lunghezza e spessore degli oggetti::
1101 @end menu
1102
1103 @node Visibilità e colore degli oggetti
1104 @subsection Visibilità e colore degli oggetti
1105 @translationof Visibility and color of objects
1106
1107 Potremmo voler creare una partitura priva di alcuni elementi a
1108 scopo didattico, perché lo studente possa esercitarsi
1109 a inserirli.  Vediamo un semplice esempio e immaginiamo che
1110 l'esercizio consista nell'inserire le stanghette mancanti
1111 di un brano.  Ma di norma le stanghette sono inserite
1112 automaticamente: come lo possiamo impedire?
1113
1114 Prima di iniziare, occorre ricordare che le proprietà degli oggetti sono
1115 raggruppate nelle cosiddette @emph{interfacce} -- si veda @ref{Properties
1116 found in interfaces}.  Queste servono semplicemente a raggruppare quelle
1117 proprietà che possono essere usate insieme per modificare un oggetto
1118 grafico -- se una di queste è ammessa per un oggetto, lo sono anche le
1119 altre.  Alcuni oggetti usano le proprietà di alcune interfacce, altri
1120 quelle di altre interfacce.  Le interfacce che contengono le proprietà
1121 usate da un particolare grob (oggetto grafico) sono elencate nella guida al
1122 Funzionamento interno in fondo alla pagina che descrive il grob; queste
1123 proprietà possono essere individuate consultando quelle interfacce.
1124
1125 In @ref{Properties of layout objects} abbiamo spiegato come trovare le
1126 informazioni sui grob.  Usando lo stesso approccio, andiamo nella guida
1127 al Funzionamento interno per trovare l'oggetto grafico relativo alla
1128 stanghetta (@emph{bar line}).  Passando da @emph{Backend} e @emph{All layout objects}
1129 troviamo un oggetto grafico chiamato @code{BarLine}.  Tra le sue proprietà ce ne sono
1130 due che controllano la visibilità: @code{break-visibility} e @code{stencil}.  Anche
1131 Barline supporta varie interfacce, tra cui la @code{grob-interface},
1132 dove troviamo le proprietà @code{transparent} e @code{color}.
1133 Tutte queste proprietà hanno degli effetti sulla visibilità delle stanghette (e,
1134 ovviamente, anche di molti altri oggetti grafici).  Vediamole una per
1135 volta.
1136
1137 @menu
1138 * La proprietà stencil::
1139 * La proprietà break-visibility::
1140 * La proprietà transparent::
1141 * La proprietà color::
1142 @end menu
1143
1144 @node La proprietà stencil
1145 @unnumberedsubsubsec La proprietà @code{stencil}
1146 @translationof The stencil property
1147
1148 @cindex proprietà stencil
1149 @cindex stencil, proprietà
1150
1151 Questa proprietà controlla l'aspetto delle stanghette specificando il
1152 simbolo (glifo) da usare.  Come nel caso di molte altre proprietà,
1153 si può far in modo che non usi nessun simbolo impostando il suo
1154 valore su @code{#f}.  Proviamo, come prima, omettendo il contesto
1155 implicito, @code{Voice}:
1156
1157 @cindex BarLine, esempio di sovrascrittura
1158 @cindex proprietà stencil, esempio
1159 @cindex stencil, esempio
1160
1161 @lilypond[quote,ragged-right,verbatim]
1162 \relative {
1163   \time 12/16
1164   \override BarLine.stencil = ##f
1165   c''4 b8 c d16 c d8 |
1166   g,8 a16 b8 c d4 e16 |
1167   e8
1168 }
1169 @end lilypond
1170
1171 Le stanghette sono ancora visibili.  Cosa abbiamo sbagliato?  Torna alla
1172 guida del Funzionamento interno e scorri di nuovo la pagina che elenca
1173 le proprietà di BarLine.  In cima alla pagina dice @qq{Barline objects are
1174 created by: Bar_engraver}.  Vai alla pagina @code{Bar_engraver}.  In fondo
1175 si trova una lista dei contesti nel quale opera l'incisore della battuta.
1176 Tutti questi sono di tipo @code{Staff}, dunque la ragione per cui il comando
1177 @code{\override} precedente non funziona è che @code{Barline} non si trova
1178 nel contesto predefinito, @code{Voice}.  Se il contesto indicato non è
1179 corretto, il comando non funziona.  Non viene generato alcun messaggio
1180 di errore e non viene registrato niente nel file di log.  Proviamo a
1181 correggerlo specificando il contesto giusto:
1182
1183 @cindex BarLine, esempio di sovrascrittura
1184 @cindex proprietà stencil, esempio
1185 @cindex stencil, esempio
1186
1187 @lilypond[quote,ragged-right,verbatim]
1188 \relative {
1189   \time 12/16
1190   \override Staff.BarLine.stencil = ##f
1191   c''4 b8 c d16 c d8 |
1192   g,8 a16 b8 c d4 e16 |
1193   e8
1194 }
1195 @end lilypond
1196
1197 Ora le stanghette sono sparite.  Impostare la proprietà @code{stencil}
1198 su @code{#f} è un'operazione talmente frequente che è stata creata una
1199 scorciatoia, @code{\omit}:
1200 @funindex \omit
1201
1202 @lilypond[quote,ragged-right,verbatim]
1203 \relative {
1204   \time 12/16
1205   \omit Staff.BarLine
1206   c''4 b8 c d16 c d8 |
1207   g,8 a16 b8 c d4 e16 |
1208   e8
1209 }
1210 @end lilypond
1211
1212 Si noti però che impostare la proprietà @code{stencil} su @code{#f}
1213 causerà degli errori nel caso in cui le dimensioni dell'oggetto
1214 siano necessarie per elaborarlo correttamente.  Ad esempio, si creano
1215 degli errori se la proprietà @code{stencil} dell'oggetto @code{NoteHead} è
1216 impostata su @code{#f}.  In questo caso è possibile usare invece la funzione
1217 @code{point-stencil}, che trasforma lo stencil in un oggetto a dimensione
1218 zero:
1219
1220 @lilypond[quote,verbatim]
1221 \relative {
1222   c''4 c
1223   \once \override NoteHead.stencil = #point-stencil
1224   c4 c
1225 }
1226 @end lilypond
1227
1228 @node La proprietà break-visibility
1229 @unnumberedsubsubsec La proprietà @code{break-visibility}
1230 @translationof The break-visibility property
1231
1232 @cindex proprietà break-visibility
1233 @cindex break-visibility, proprietà
1234
1235 Nella pagina di @code{BarLine} della guida al Funzionamento interno
1236 vediamo che la proprietà @code{break-visibility} richiede un vettore di
1237 tre valori booleani.
1238 Questi valori controllano rispettivamente se le stanghette debbano
1239 comparire alla fine, in mezzo o all'inizio dei righi.  Dato
1240 che nel nostro esempio vogliamo sopprimere tutte le stanghette, il valore
1241 che ci serve è @code{#(#f #f #f)} (equivalente al nome @code{all-invisible}).
1242 Proviamo, ricordando di includere il contesto @code{Staff}.  Si noti che prima
1243 della parentesi di apertura abbiamo @code{##}.  Un @code{#} è necessario
1244 perché introduce un vettore, mentre il primo@tie{}@code{#} deve precedere, come
1245 sempre, il valore del comando @code{\override}.
1246
1247 @cindex BarLine, esempio di sovrascrittura
1248 @cindex proprietà break-visibility, esempio
1249 @cindex break-visibility, esempio
1250
1251 @lilypond[quote,ragged-right,verbatim]
1252 \relative {
1253   \time 12/16
1254   \override Staff.BarLine.break-visibility = ##(#f #f #f)
1255   c''4 b8 c d16 c d8 |
1256   g,8 a16 b8 c d4 e16 |
1257   e8
1258 }
1259 @end lilypond
1260
1261 E vediamo che anche questo comando elimina tutte le stanghette.
1262
1263 @node La proprietà transparent
1264 @unnumberedsubsubsec La proprietà @code{transparent}
1265 @translationof The transparent property
1266
1267 @cindex proprietà transparent
1268 @cindex transparent, proprietà
1269 @cindex trasparenza
1270
1271 Nelle proprietà specificate nella pagina @code{grob-interface} della
1272 guida al Funzionamento interno vediamo che la proprietà @code{transparent} è
1273 un booleano.  Quindi deve essere impostata su @code{#t} («true», 'vero') per
1274 rendere trasparente il grob.  Nel prossimo esempio rendiamo trasparente
1275 il segno di tempo invece delle stanghette.  Per farlo dobbiamo trovare
1276 il nome del grob del segno di tempo (in inglese @emph{time signature}).
1277 Torniamo alla pagina @q{All layout objects} per scoprire quali sono le
1278 proprietà dell'oggetto di formattazione @code{TimeSignature}.  Tale grob
1279 è generato dall'incisore @code{Time_signature_engraver}, che opera
1280 nel contesto @code{Staff} e supporta l'interfaccia @code{grob-interface}.
1281 Quindi il comando che rende trasparente l'indicazione di tempo è:
1282
1283 @cindex TimeSignature, esempio di sovrascrittura
1284 @cindex proprietà transparent, esempio
1285 @cindex transparent, esempio
1286
1287 @lilypond[quote,ragged-right,verbatim]
1288 \relative {
1289   \time 12/16
1290   \override Staff.TimeSignature.transparent = ##t
1291   c''4 b8 c d16 c d8 |
1292   g,8 a16 b8 c d4 e16 |
1293   e8
1294 }
1295 @end lilypond
1296
1297 @noindent
1298 Impostare la proprietà @code{transparent} è un'operazione piuttosto
1299 frequente, perciò è stata creata la scorciatoia @code{\hide}:
1300 @funindex \hide
1301
1302 @lilypond[quote,ragged-right,verbatim]
1303 \relative {
1304   \time 12/16
1305   \hide Staff.TimeSignature
1306   c''4 b8 c d16 c d8 |
1307   g,8 a16 b8 c d4 e16 |
1308   e8
1309 }
1310 @end lilypond
1311
1312 @noindent
1313 L'indicazione di tempo è scomparsa; è rimasto però uno spazio al suo posto.  Magari
1314 questo è quello che si desidera, ad esempio per creare un esercizio in cui uno
1315 studente deve riempire degli spazi vuoti.  Ma in altre circostanze ciò può
1316 non essere gradito.  Per eliminare lo spazio vuoto bisogna impostare la
1317 proprietà stencil su @code{#f}:
1318
1319 @cindex TimeSignature, esempio di sovrascrittura
1320 @cindex proprietà stencil, esempio
1321 @cindex stencil, esempio
1322
1323 @lilypond[quote,ragged-right,verbatim]
1324 \relative {
1325   \time 12/16
1326   \omit Staff.TimeSignature
1327   c''4 b8 c d16 c d8 |
1328   g,8 a16 b8 c d4 e16 |
1329   e8
1330 }
1331 @end lilypond
1332
1333 @noindent
1334 la differenza è ovvia: se si imposta lo stencil su @code{#f} (possibilmente
1335 con @code{\omit}) l'oggetto scompare del tutto; se si rende l'oggetto
1336 @code{trasparente} questo resta dove è, anche se invisibile.
1337
1338 @node La proprietà color
1339 @unnumberedsubsubsec La proprietà @code{color}
1340 @translationof The color property
1341
1342 @cindex proprietà color
1343 @cindex color, proprietà
1344
1345 Infine, proviamo a rendere le stanghette invisibili colorandole
1346 di bianco.  (Si tratta di un metodo problematico perché la
1347 stanghetta bianca può imbiancare o meno le linee del rigo che
1348 incrocia.  Puoi vedere in alcuni degli esempi successivi che questo
1349 accade in modo imprevedibile.  I motivi per cui questo accade e il
1350 modo in cui è possibile controllarlo sono esposti in @ruser{Painting objects white}.
1351 Ma per il momento stiamo imparando la proprietà color, quindi accettiamo questa limitazione.)
1352
1353 L'interfaccia @code{grob-interface} stabilisce che il valore della
1354 proprietà color è una lista, ma non spiega cosa debba essere questa
1355 lista.  La lista di cui ha bisogno è in realtà una lista di valori
1356 in unità interne, ma per evitare di dover imparare quali siano queste
1357 unità vengono forniti vari modi di specificare un colore.  Il primo
1358 modo consiste nell'usare uno dei colori @q{normali} elencati nella
1359 prima tabella in @ruser{List of colors}.  Per rendere bianche le
1360 stanghette scriviamo:
1361
1362 @cindex BarLine, esempio di sovrascrittura
1363 @cindex proprietà color
1364 @cindex color, proprietà
1365
1366 @lilypond[quote,ragged-right,verbatim]
1367 \relative {
1368   \time 12/16
1369   \override Staff.BarLine.color = #white
1370   c''4 b8 c d16 c d8 |
1371   g,8 a16 b8 c d4 e16 |
1372   e8
1373 }
1374 @end lilypond
1375
1376 @noindent
1377 e di nuovo vediamo che le stanghette non sono visibili.  Si noti
1378 che @emph{white} non è preceduto da un apostrofo, perché non
1379 è un simbolo, ma una @emph{variabile}.  Quando viene esaminata, fornisce
1380 la lista di valori interni necessari per impostare il colore su
1381 bianco.  Gli altri colori nella lista normale sono anch'essi
1382 delle variabili.  Per convincerti che funziona potresti provare a
1383 cambiare il colore e usare una delle altre variabili presenti
1384 nella lista.
1385
1386 @cindex color, X11
1387 @cindex colori X11
1388 @cindex X11, colori
1389
1390 @funindex x11-color
1391
1392 Il secondo modo per cambiare il colore è attraverso la lista
1393 di nomi di colori X11 che si trova in @ruser{List of colors}.
1394 Questi colori vengono trasformati in valori reali dalla funzione
1395 @code{x11-color}, che converte i simboli di colore X11 nella lista
1396 di valori interni:
1397
1398 @cindex BarLine, esempio di sovrascrittura
1399 @cindex proprietà color, esempio
1400 @cindex color, esempio
1401
1402 @lilypond[quote,ragged-right,verbatim]
1403 \relative {
1404   \time 12/16
1405   \override Staff.BarLine.color = #(x11-color 'white)
1406   c''4 b8 c d16 c d8 |
1407   g,8 a16 b8 c d4 e16 |
1408   e8
1409 }
1410 @end lilypond
1411
1412 @noindent
1413 Si noti che in questo caso la funzione @code{x11-color} prende
1414 un simbolo come argomento, dunque il simbolo deve essere preceduto
1415 da un apostrofo per impedire che sia considerato una variabile e
1416 l'intera funzione deve essere racchiusa tra parentesi.
1417
1418 @cindex colori rgb
1419 @cindex rgb, colori
1420 @cindex color, rgb
1421
1422 @funindex rgb-color
1423
1424 Esiste un'altra funzione, che converte i valori RGB in colori
1425 interni, la funzione @code{rgb-color}.  Prende tre argomenti
1426 che specificano l'intensità dei colori rosso, verde e blu.
1427 I valori vanno da 0 a 1.  Quindi per avere il colore rosso
1428 il valore sarà @code{(rgb-color 1 0 0)}
1429 e per avere il bianco sarà @code{(rgb-color 1 1 1)}:
1430
1431 @cindex BarLine, esempio di sovrascrittura
1432 @cindex proprietà color, esempio
1433 @cindex color, esempio
1434
1435 @lilypond[quote,ragged-right,verbatim]
1436 \relative {
1437   \time 12/16
1438   \override Staff.BarLine.color = #(rgb-color 1 1 1)
1439   c''4 b8 c d16 c d8 |
1440   g,8 a16 b8 c d4 e16 |
1441   e8
1442 }
1443 @end lilypond
1444
1445 Infine, è disponibile anche una scala di grigi, appartenente all'insieme
1446 di colori X11.  Questi vanno dal nero, @code{'grey0},
1447 al bianco, @code{'grey100}, con cadenza di 1.  Ecco un
1448 esempio in cui tutti gli oggetti di formattazione sono
1449 impostati su diverse tonalità di grigio:
1450
1451 @cindex StaffSymbol, esempio di sovrascrittura
1452 @cindex TimeSignature, esempio di sovrascrittura
1453 @cindex Clef, esempio di sovrascrittura
1454 @cindex NoteHead, esempio di sovrascrittura
1455 @cindex Stem, esempio di sovrascrittura
1456 @cindex BarLine, esempio di sovrascrittura
1457 @cindex proprietà color, esempio
1458 @cindex color, esempio
1459 @cindex x11-color, esempio di utilizzo
1460
1461 @lilypond[quote,ragged-right,verbatim]
1462 \relative {
1463   \time 12/16
1464   \override Staff.StaffSymbol.color = #(x11-color 'grey30)
1465   \override Staff.TimeSignature.color = #(x11-color 'grey60)
1466   \override Staff.Clef.color = #(x11-color 'grey60)
1467   \override Voice.NoteHead.color = #(x11-color 'grey85)
1468   \override Voice.Stem.color = #(x11-color 'grey85)
1469   \override Staff.BarLine.color = #(x11-color 'grey10)
1470   c''4 b8 c d16 c d8 |
1471   g,8 a16 b8 c d4 e16 |
1472   e8
1473 }
1474 @end lilypond
1475
1476 @noindent
1477 Nota i contesti associati a ciascuno degli oggetti di formattazione.
1478 È importante scegliere quelli giusti, altrimenti i comandi non
1479 funzioneranno!  Ricorda, il contesto è quello in cui si trova il
1480 relativo incisore.  Il contesto predefinito per gli incisori si trova
1481 partendo dall'oggetto di formattazione (@emph{layout object}) per poi
1482 andare all'incisore che lo produce: la pagina dell'incisore nella
1483 guida al Funzionamento interno riporterà a quale contesto
1484 appartenga di norma l'incisore.
1485
1486
1487 @node Dimensione degli oggetti
1488 @subsection Dimensione degli oggetti
1489 @translationof Size of objects
1490
1491 @cindex modificare la dimensione degli oggetti
1492 @cindex dimensione degli oggetti
1493 @cindex oggetti, dimensione degli
1494 @cindex oggetti, modificare la dimensione degli
1495
1496 Iniziamo rivedendo l'esempio precedente (vedi
1497 @ref{Nesting music expressions}) che mostrava come
1498 inserire un nuovo rigo temporaneo, come in un @rglos{ossia}.
1499
1500 @cindex proprietà alignAboveContext, esempio
1501 @cindex @code{\with}, esempio
1502
1503 @lilypond[quote,ragged-right,verbatim]
1504 \new Staff ="main" {
1505   \relative {
1506     r4 g'8 g c4 c8 d |
1507     e4 r8
1508     <<
1509       { f8 c c }
1510       \new Staff \with {
1511         alignAboveContext = #"main" }
1512       { f8 f c }
1513     >>
1514     r4 |
1515   }
1516 }
1517 @end lilypond
1518
1519 Gli ossia di norma vengono scritti senza chiave e senza indicazione di
1520 tempo e hanno solitamente una dimensione leggermente inferiore a
1521 quella del rigo principale.  Sappiamo già come togliere la chiave e
1522 il segno di tempo, cioè impostando semplicemente la proprietà stencil di
1523 ciascun oggetto su @code{#f}, così:
1524
1525 @cindex proprietà alignAboveContext, esempio
1526 @cindex @code{\with}, esempio
1527 @funindex \omit
1528 @cindex Clef, esempio di sovrascrittura
1529 @cindex TimeSignature, esempio di sovrascrittura
1530
1531 @lilypond[quote,ragged-right,verbatim]
1532 \new Staff ="main" {
1533   \relative {
1534     r4 g'8 g c4 c8 d |
1535     e4 r8
1536     <<
1537       { f8 c c }
1538       \new Staff \with {
1539         alignAboveContext = #"main"
1540       }
1541       {
1542         \omit Staff.Clef
1543         \omit Staff.TimeSignature
1544         { f8 f c }
1545       }
1546     >>
1547     r4 |
1548   }
1549 }
1550 @end lilypond
1551
1552 @noindent
1553 dove l'ulteriore coppia di parentesi dopo il blocco @code{\with} è
1554 necessaria perché le sovrascritture e la musica racchiusi
1555 siano applicati al rigo dell'ossia.
1556
1557 Ma qual è la differenza tra modificare il contesto del rigo con
1558 @code{\with} e modificare la proprietà stencil della chiave e
1559 del segno di tempo con @code{\override} o in questo caso @code{\omit}?  La
1560 principale differenza è che le modifiche inserite in un blocco @code{\with}
1561 vengono applicate nel momento in cui viene creato il contesto e permangono
1562 come valori @strong{predefiniti} per la durata di quel contesto, mentre i
1563 comandi @code{\set} o @code{\override} incorporati nel blocco
1564 della musica sono dinamici -- le loro modifiche sono sincronizzate
1565 con un punto preciso della musica.  Se le modifiche sono disattivate o
1566 ripristinate con @code{\unset} o @code{\revert} tornano ai valori
1567 stabiliti nel blocco @code{\with} o, in mancanza di impostazioni
1568 al suo interno, a quelli predefiniti.
1569
1570 Alcune proprietà di contesto possono essere modificate solo nei blocchi
1571 @code{\with}.  Si tratta di quelle proprietà che non si possono
1572 modificare in seguito alla creazione del contesto.  @code{alignAboveContext} e
1573 @code{alignBelowContext} sono due di esse: dopo la creazione
1574 del rigo il suo allineamento è fissato, e non ha
1575 senso tentare di cambiarlo successivamente.
1576
1577 I valori predefiniti delle proprietà degli oggetti di formattazione possono
1578 essere definiti anche nei blocchi @code{\with}.  Basta usare il normale comando
1579 @code{\override} senza specificare il nome del contesto, dato che questo è
1580 definito senza ambiguità come il contesto che il blocco @code{\with} sta
1581 modificando.  Anzi, viene generato un errore se si specifica un contesto
1582 in questa situazione.
1583
1584 Dunque possiamo sostituire l'esempio precedente con
1585
1586 @cindex alignAboveContext property, esempio
1587 @cindex @code{\with}, esempio
1588 @cindex Clef, esempio di sovrascrittura
1589 @cindex TimeSignature, esempio di sovrascrittura
1590
1591 @lilypond[quote,ragged-right,verbatim]
1592 \new Staff ="main" {
1593   \relative {
1594     r4 g'8 g c4 c8 d |
1595     e4 r8
1596     <<
1597       { f8 c c }
1598       \new Staff \with {
1599         alignAboveContext = #"main"
1600         % Nasconde le chiavi di questo rigo
1601         \override Clef.stencil = ##f
1602         % Nasconde le indicazioni di tempo di questo rigo
1603         \override TimeSignature.stencil = ##f
1604       }
1605       { f8 f c }
1606     >>
1607     r4 |
1608   }
1609 }
1610 @end lilypond
1611
1612 Si possono usare anche le scorciatoie @code{\hide} e @code{\omit} per
1613 impostare la proprietà @code{transparent} e togliere lo @code{stencil}
1614
1615 @lilypond[quote,ragged-right,verbatim]
1616 \new Staff ="main" {
1617   \relative {
1618     r4 g'8 g c4 c8 d |
1619     e4 r8
1620     <<
1621       { f8 c c }
1622       \new Staff \with {
1623         alignAboveContext = #"main"
1624         % Nasconde le chiavi di questo rigo
1625         \omit Clef
1626         % Nasconde le indicazioni di tempo di questo rigo
1627         \omit TimeSignature
1628       }
1629       { f8 f c }
1630     >>
1631     r4 |
1632   }
1633 }
1634 @end lilypond
1635
1636 Infine arriviamo a modificare la dimensione degli oggetti di formattazione.
1637
1638 Alcuni oggetti di formattazione sono dei glifi scelti da un tipo di
1639 carattere.  Ad esempio le teste di nota, le alterazioni, le annotazioni,
1640 le chiavi, le indicazioni di tempo, le dinamiche, il testo vocale.  La loro dimensione
1641 varia se si modifica la proprietà @code{font-size}, come vedremo a
1642 breve.  Altri oggetti di formattazione come le legature di portamento e
1643 di valore -- in generale, tutti gli oggetti estensori (@emph{spanner}) -- vengono
1644 disegnati individualmente, dunque non esiste un @code{font-size} a loro
1645 associato.  Questi oggetti generalmente derivano la loro dimensione dagli
1646 oggetti a cui sono connessi, quindi di solito non è necessario modificare
1647 la loro dimensione a mano.  Altre proprietà, come la lunghezza dei gambi
1648 e delle stanghette, lo spessore delle travature e di altre linee e la
1649 separazione delle linee del rigo, devono essere modificate in modi speciali.
1650
1651 Tornando all'esempio dell'ossia, proviamo prima a cambiare font-size.
1652 Possiamo farlo in due modi.  Possiamo modificare la dimensione dei
1653 tipi di carattere di ogni tipo di oggetto, come le teste di nota
1654 (@code{NoteHead}) con un comando di questo tipo
1655
1656 @example
1657 \override NoteHead.font-size = #-2
1658 @end example
1659
1660 oppure possiamo modificare la dimensione di tutti i tipi di carattere usando
1661 una proprietà speciale, @code{fontSize}, con @code{\set} oppure includendola
1662 in un blocco @code{\with} (ma senza @code{\set}).
1663
1664 @example
1665 \set fontSize = #-2
1666 @end example
1667
1668 Entrambe queste dichiarazioni fanno sì che la dimensione del tipo di carattere
1669 sia ridotta di due unità rispetto al valore precedente, dove ogni unità
1670 riduce o aumenta la dimensione di circa il 12%.
1671
1672 Proviamolo nel nostro esempio dell'ossia:
1673
1674 @cindex alignAboveContext property, esempio
1675 @cindex @code{\with}, esempio
1676 @cindex Clef, esempio di sovrascrittura
1677 @cindex TimeSignature, esempio di sovrascrittura
1678 @cindex proprietà fontSize, esempio
1679 @cindex fontSize, esempio
1680
1681 @lilypond[quote,ragged-right,verbatim]
1682 \new Staff ="main" {
1683   \relative {
1684     r4 g'8 g c4 c8 d |
1685     e4 r8
1686     <<
1687       { f8 c c }
1688       \new Staff \with {
1689         alignAboveContext = #"main"
1690         \omit Clef
1691         \omit TimeSignature
1692         % Riduce la dimensione di tutti i tipi di carattere di circa il 24%
1693         fontSize = #-2
1694       }
1695       { f8 f c }
1696     >>
1697     r4 |
1698   }
1699 }
1700 @end lilypond
1701
1702 L'esempio non è ancora a posto.  Le teste di nota e  le code sono
1703 più piccole, ma in proporzione i gambi sono troppo lunghi e le linee
1704 del rigo sono troppo separate.  Dovrebbero essere scalati in proporzione
1705 alla riduzione del tipo di carattere.  La prossima sezione spiega come
1706 farlo.
1707
1708 @node Lunghezza e spessore degli oggetti
1709 @subsection Lunghezza e spessore degli oggetti
1710 @translationof Length and thickness of objects
1711
1712 @cindex distanze
1713 @cindex thickness, proprietà
1714 @cindex spessore
1715 @cindex lunghezza
1716 @cindex magstep
1717 @cindex dimensione, modificare la
1718 @cindex lunghezza del gambo, modificare la
1719 @cindex spaziatura delle linee del rigo, modificare la
1720
1721 Distanze e lunghezze in LilyPond sono misurate generalmente in @code{staff-space},
1722 ovvero la distanza tra linee adiacenti del rigo (o talvolta la metà di uno
1723 spazio rigo), mentre gran parte delle proprietà che controllano lo spessore
1724 (@code{thickness}) sono misurate con l'unità di misura di una proprietà
1725 interna chiamata @code{line-thickness.}  Ad esempio, lo spessore predefinito
1726 delle linee delle forcine è di 1 unità di @code{line-thickness},
1727 mentre lo spessore (@code{thickness}) di un gambo di nota è 1.3.  Si noti
1728 che alcune proprietà dello spessore sono diverse; per esempio, lo spessore
1729 delle travature è controllato dal valore della proprietà @code{beam-thickness},
1730 che si misura in @code{staff-space}.
1731
1732 Dunque come si possono scalare le lunghezze in proporzione alla
1733 dimensione del carattere?
1734 È possibile ricorrendo a una funzione speciale chiamata
1735 @code{magstep}, che serve proprio a questo scopo.  Prende un
1736 argomento, la modifica della dimensione del tipo di carattere (#-2
1737 nell'esempio precedente) e restituisce un fattore di ridimensionamento
1738 adatto a ridurre gli altri oggetti proporzionalmente.  Si usa in
1739 questo modo:
1740
1741 @cindex proprietà alignAboveContext, esempio
1742 @cindex alignAboveContext, esempio
1743 @cindex @code{\with}, esempio
1744 @cindex Clef, esempio di sovrascrittura
1745 @cindex TimeSignature, esempio di sovrascrittura
1746 @cindex proprietà fontSize, esempio
1747 @cindex fontSize, esempio
1748 @cindex StaffSymbol, esempio di sovrascrittura
1749 @cindex funzione magstep, esempio di uso
1750 @cindex magstep, esempio di uso
1751 @cindex proprietà staff-space, esempio
1752 @cindex staff-space, esempio
1753 @cindex proprietà stencil, esempio
1754 @cindex stencil, esempio
1755
1756 @lilypond[quote,ragged-right,verbatim]
1757 \new Staff ="main" {
1758   \relative {
1759     r4 g'8 g c4 c8 d |
1760     e4 r8
1761     <<
1762       { f8 c c }
1763       \new Staff \with {
1764         alignAboveContext = #"main"
1765         \omit Clef
1766         \omit TimeSignature
1767         fontSize = #-2
1768         % Riduce proporzionalmente la lunghezza dei gambi e la spaziatura tra le linee
1769         \override StaffSymbol.staff-space = #(magstep -2)
1770       }
1771       { f8 f c }
1772     >>
1773     r4 |
1774   }
1775 }
1776 @end lilypond
1777
1778 @noindent
1779 Dato che la lunghezza dei gambi e molte altre proprietà relative alla
1780 lunghezza sono sempre calcolate in relazione al valore della proprietà
1781 @code{staff-space}, anche queste sono automaticamente ridimensionate
1782 in lunghezza.  Nota che ciò riguarda solo la scala verticale
1783 dell'ossia -- la scala orizzontale è determinata dalla formattazione
1784 della musica principale perché deve restare sincronizzata con quest'ultima,
1785 quindi le modifiche di dimensione non la riguardano.  Ovviamente, se
1786 la scala di tutta la musica principale venisse cambiata allora la
1787 spaziatura orizzontale cambierebbe.  Tratteremo questo argomento più
1788 avanti, nella parte relativa alla formattazione.
1789
1790 Questo completa la creazione dell'ossia.  Le dimensioni e le lunghezze
1791 di tutti gli altri oggetti possono essere modificati in modi analoghi.
1792
1793 Per piccole modifiche della dimensione, come nell'esempio precedente, non
1794 sono necessari solitamente degli aggiustamenti globali dello spessore delle
1795 varie linee disegnate (come stanghette, travature, forcine, legature di
1796 portamento, etc.).  Se si deve aggiustare lo spessore di un
1797 particolare oggetto di formattazione, è meglio sovrascrivere la sua
1798 proprietà @code{thickness}.  Un esempio di come modificare lo spessore
1799 delle legature di portamento è stato mostrato prima in @ref{Properties of layout objects}.
1800 Lo spessore di tutti gli oggetti disegnati (ovvero quelli non prodotti
1801 da un tipo di carattere) può essere cambiato nello stesso modo.
1802
1803
1804 @node Posizionamento degli oggetti
1805 @section Posizionamento degli oggetti
1806 @translationof Placement of objects
1807
1808 @menu
1809 * Comportamento automatico::
1810 * Oggetti interni al rigo::
1811 * Oggetti esterni al rigo::
1812 @end menu
1813
1814
1815 @node Comportamento automatico
1816 @subsection Comportamento automatico
1817 @translationof Automatic behavior
1818
1819 @cindex within-staff, oggetti
1820 @cindex outside-staff, oggetti
1821 @cindex oggetti dentro il rigo
1822 @cindex oggetti fuori dal rigo
1823
1824 Nella notazione musicale, alcuni oggetti appartengono al rigo, altri
1825 devono esserne posizionati al di fuori.  In LilyPond si chiamano rispettivamente oggetti within-staff
1826 (dentro il rigo) e oggetti outside-staff (fuori dal rigo).
1827
1828 Gli oggetti within-staff sono quelli che si trovano nel rigo, come
1829 le teste e i gambi delle note, le alterazioni, etc@dots{}  La loro posizione
1830 è determinata perlopiù dalla musica stessa: in verticale sono collocati
1831 su determinate posizioni del rigo o sono collegati
1832 ad altri oggetti disposti in questo modo. Di norma LilyPond evita
1833 automaticamente le collisioni tra teste di nota, gambi e alterazioni
1834 in accordi con note ravvicinate.  Esistono comunque dei comandi che
1835 permettono di modificare questo comportamento automatico, come
1836 vedremo tra poco.
1837
1838 Gli oggetti che appartengono allo spazio fuori dal rigo comprendono
1839 gli andamenti, i numeri di chiamata, il testo vocale, le indicazioni dinamiche. Il comportamento di
1840 LilyPond per il posizionamento verticale degli oggetti outside-staff
1841 prevede che questi vengano collocati il più vicino possibile al rigo, mantenendo
1842 però una distanza sufficiente da evitare collisioni con gli altri oggetti.  LilyPond
1843 usa la proprietà @code{outside-staff-priority} per determinare in quale ordine
1844 gli oggetti siano posizionati.
1845
1846 Per prima cosa LilyPond posiziona tutti gli oggetti within-staff.
1847 Poi ordina gli oggetti outside-staff in base alla loro proprietà
1848 @code{outside-staff-priority}.  Gli oggetti outside-staff vengono
1849 considerati uno a uno, a partire dall'oggetto che ha il valore più basso
1850 di priorità (@code{outside-staff-priority}), e disposti in modo
1851 da non entrare in collisione con alcun oggetto già posizionato.
1852 Questo significa che se due oggetti outside-staff si contendono lo
1853 stesso spazio, quello col valore più basso di @code{outside-staff-priority}
1854 sarà più vicino al rigo.  Se due oggetti presentano lo stesso valore per
1855 @code{outside-staff-priority}, quello incontrato per primo viene posizionato
1856 più vicino al rigo.
1857
1858 Nell'esempio seguente tutti i testi hanno la stessa priorità (perché
1859 questa non è impostata in modo esplicito).  Come puoi vedere, @q{Testo3}
1860 è di nuovo posto automaticamente in prossimità del rigo, infilato
1861 sotto @q{Testo2}.
1862
1863 @cindex markup, esempio
1864
1865 @lilypond[quote,fragment,ragged-right,verbatim]
1866 c''2^"Testo1"
1867 c''2^"Testo2" |
1868 c''2^"Testo3"
1869 c''2^"Testo4" |
1870 @end lilypond
1871
1872 Di norma, anche i righi sono collocati quanto più possibile ravvicinati
1873 (ma con una distanza minima).  Se delle note si estenderanno molto
1874 al di fuori del rigo, fino a quello adiacente, costringeranno i righi a distanziarsi
1875 solo in caso di sovrapposizione degli elementi della notazione.  L'esempio
1876 seguente mostra questo @q{annidamento} delle note su righi adiacenti:
1877
1878 @lilypond[quote,ragged-right,verbatim]
1879 <<
1880   \new Staff {
1881     \relative { c'4 a, }
1882   }
1883   \new Staff {
1884     \relative { c''''4 a, }
1885   }
1886 >>
1887 @end lilypond
1888
1889
1890 @node Oggetti interni al rigo
1891 @subsection Oggetti interni al rigo
1892 @translationof Within-staff objects
1893
1894 Abbiamo già visto come i comandi @code{\voiceXXX} influenzino
1895 la direzione di legature di portamento e di valore, delle diteggiature e
1896 di qualsiasi altro elemento che dipenda dalla direzione dei gambi (vedi
1897 @ref{Explicitly instantiating voices}).
1898 Questi comandi sono fondamentali quando si scrive musica polifonica,
1899 perché permettono di distinguere le linee melodiche che si intrecciano.
1900 Talvolta, però, capita di voler modificare questo comportamento
1901 automatico.  Si può fare per intere sezioni musicali o anche per
1902 una singola nota.  La proprietà che controlla questo comportamento
1903 è la proprietà @code{direction} di ogni oggetto di formattazione.
1904 Spieghiamo prima che cosa fa e poi presentiamo alcuni comandi
1905 già pronti, che ti eviteranno di dover scrivere sovrascritture
1906 esplicite per le modifiche più comuni.
1907
1908 Alcuni oggetti di formattazione, come le legature di portamento e di
1909 valore, si incurvano, si piegano o puntano verso l'alto o il basso; altri,
1910 come i gambi e le code, a seconda dell'orientamento si dispongono anche sulla
1911 destra o sulla sinistra.  Tutto questo viene controllato automaticamente
1912 quando si imposta la proprietà @code{direction}.
1913
1914 @menu
1915 * La proprietà direction::
1916 * Diteggiatura::
1917 @end menu
1918
1919 @node La proprietà direction
1920 @unnumberedsubsubsec La proprietà @code{direction}
1921 @translationof The direction property
1922
1923 @cindex down
1924 @cindex direzione, giù
1925 @cindex up
1926 @cindex direzione, su
1927 @cindex center
1928 @cindex direzione, centrale
1929 @cindex neutral
1930 @cindex direzione, neutrale
1931
1932 L'esempio seguente mostra il posizionamento predefinito delle legature di
1933 portamento nella prima battuta, con legature che iniziano sulle note
1934 alte poste sopra le note e quelle che iniziano sulle note basse posizionate
1935 sotto, seguita da una battuta con entrambe le legature forzate verso il
1936 basso, un'altra battuta con entrambe le legatura forzate verso l'alto e infine
1937 una battuta con entrambe le legature ripristinate al comportamento predefinito.
1938
1939 @cindex Slur, esempio di sovrascrittura
1940 @cindex legatura di portamento, esempio di sovrascrittura
1941 @cindex proprietà direction, esempio
1942 @cindex direction, esempio
1943
1944 @lilypond[quote,fragment,verbatim]
1945 a'4( g') c''( a') |
1946 \override Slur.direction = #DOWN
1947 a'4( g') c''( a') |
1948 \override Slur.direction = #UP
1949 a'4( g') c''( a') |
1950 \revert Slur.direction
1951 a'4( g') c''( a') |
1952 @end lilypond
1953
1954 Abbiamo usato le costanti @code{DOWN} (giù) e @code{UP} (su).
1955 Queste hanno rispettivamente i valori @w{@code{-1}} e @code{+1}, ed
1956 è possibile usare tali valori numerici al loro posto.  In alcuni casi
1957 si può usare anche il valore @code{0}, che significa @code{UP} per le
1958 legature di portamento, ma per alcuni oggetti significa @q{center} (centro).
1959 Esiste una costante, @code{CENTER} che ha valore @code{0}.
1960
1961 Tuttavia queste sovrascritture esplicite solitamente non vengono usate, perché
1962 ci sono dei comandi predefiniti equivalenti e più semplici.  Ecco una tabella
1963 con quelli più utilizzati; il significato di ognuno è esplicitato laddove
1964 non è ovvio.
1965
1966 @multitable @columnfractions .2 .2 .25 .35
1967 @headitem Giù/Sinistra
1968   @tab Su/Destra
1969   @tab Ripristina
1970   @tab Effetto
1971 @item @code{\arpeggioArrowDown}
1972   @tab @code{\arpeggioArrowUp}
1973   @tab @code{\arpeggioNormal}
1974   @tab Aggiunge una freccia in fondo, in cima o toglie la freccia
1975 @item @code{\dotsDown}
1976   @tab @code{\dotsUp}
1977   @tab @code{\dotsNeutral}
1978   @tab Direzione dello spostamento per evitare le linee del rigo
1979 @item @code{\dynamicDown}
1980   @tab @code{\dynamicUp}
1981   @tab @code{\dynamicNeutral}
1982   @tab
1983 @item @code{\phrasingSlurDown}
1984   @tab @code{\phrasingSlurUp}
1985   @tab @code{\phrasingSlurNeutral}
1986   @tab Nota: è diverso dai comandi slur
1987 @item @code{\slurDown}
1988   @tab @code{\slurUp}
1989   @tab @code{\slurNeutral}
1990   @tab
1991 @item @code{\stemDown}
1992   @tab @code{\stemUp}
1993   @tab @code{\stemNeutral}
1994   @tab
1995 @item @code{\textSpannerDown}
1996   @tab @code{\textSpannerUp}
1997   @tab @code{\textSpannerNeutral}
1998   @tab Il testo inserito come oggetto estensore (spanner) va sotto/sopra il rigo
1999 @item @code{\tieDown}
2000   @tab @code{\tieUp}
2001   @tab @code{\tieNeutral}
2002   @tab
2003 @item @code{\tupletDown}
2004   @tab @code{\tupletUp}
2005   @tab @code{\tupletNeutral}
2006   @tab I gruppi irregolare sono sotto/sopra le note
2007 @end multitable
2008
2009
2010 Le varianti neutral/normal di questi comandi usano @code{\revert} e queste
2011 @strong{non} possono essere precedute da @code{\once}.  Se desideri limitare
2012 l'effetto degli altri comandi (che usano @code{\override}) a un singolo
2013 momento temporale, devi farli precedere da @code{\once} come faresti con
2014 delle sovrascritture esplicite.
2015
2016 Oppure, se solo un oggetto della formattazione deve essere forzato verso
2017 l'alto o verso il basso, si possono usare gli indicatori di
2018 direzione, @code{^} o @code{_}:
2019
2020 @lilypond[quote,fragment,verbatim]
2021 a'4( g') c''( a') |
2022 a'4^( g') c''_( a') |
2023 @end lilypond
2024
2025
2026 @node Diteggiatura
2027 @unnumberedsubsubsec Diteggiatura
2028 @translationof Fingering
2029
2030 @cindex diteggiatura, posizionamento
2031 @cindex diteggiatura, accordi
2032
2033 Anche il posizionamento della diteggiatura sulle singole note può essere
2034 controllato dalla proprietà @code{direction}, ma la modifica di @code{direction}
2035 non produce effetti sugli accordi.  Come vedremo, ci sono comandi specifici
2036 che permettono di controllare la diteggiatura delle singole note degli
2037 accordi, col segno di diteggiatura posizionato sopra, sotto, a sinistra
2038 o a destra di ogni nota.
2039
2040 Vediamo innanzitutto l'effetto di @code{direction} sulla diteggiatura
2041 attaccata alle singole note.  La prima battuta mostra il comportamento
2042 predefinito e le due battute successive mostrano gli effetti dei valori
2043 @code{DOWN} e @code{UP}:
2044
2045 @cindex Fingering, esempio di sovrascrittura
2046 @cindex proprietà direction, esempio
2047 @cindex direction, esempio
2048
2049 @lilypond[quote,verbatim]
2050 \relative {
2051   c''4-5 a-3 f-1 c'-5 |
2052   \override Fingering.direction = #DOWN
2053   c4-5 a-3 f-1 c'-5 |
2054   \override Fingering.direction = #UP
2055   c4-5 a-3 f-1 c'-5 |
2056 }
2057 @end lilypond
2058
2059 Tuttavia sovrascrivere la proprietà @code{direction} non è il modo
2060 più semplice di definire a mano la diteggiatura sopra o sotto
2061 le note; di solito è preferibile usare @code{_} o @code{^} invece di @code{-}
2062 prima del numero della diteggiatura.  Ecco l'esempio precedente riscritto
2063 usando questo metodo:
2064
2065 @cindex fingering, esempio
2066
2067 @lilypond[quote,verbatim]
2068 \relative {
2069   c''4-5 a-3 f-1 c'-5 |
2070   c4_5 a_3 f_1 c'_5 |
2071   c4^5 a^3 f^1 c'^5 |
2072 }
2073 @end lilypond
2074
2075 La proprietà @code{direction} viene ignorata negli accordi, ma i
2076 prefissi direzionali, @code{_} e @code{^} funzionano.  Per impostazione
2077 predefinita, la diteggiatura viene disposta automaticamente sopra e
2078 sotto le note di un accordo:
2079
2080 @cindex fingering, esempio
2081
2082 @lilypond[quote,verbatim]
2083 \relative {
2084   <c''-5 g-3>4
2085   <c-5 g-3 e-2>4
2086   <c-5 g-3 e-2 c-1>4
2087 }
2088 @end lilypond
2089
2090 @noindent
2091 ma può essere sovrascritta per forzare manualmente in su o in giù tutti o
2092 alcuni dei singoli numeri della diteggiatura:
2093
2094 @cindex fingering, esempio
2095
2096 @lilypond[quote,verbatim]
2097 \relative {
2098   <c''-5 g-3 e-2 c-1>4
2099   <c^5 g_3 e_2 c_1>4
2100   <c^5 g^3 e^2 c_1>4
2101 }
2102 @end lilypond
2103
2104 È possibile avere un controllo ancora maggiore sulla disposizione della
2105 diteggiatura delle singole note di un accordo usando il comando
2106 @code{\set fingeringOrientations}.  Il formato di questo comando è:
2107
2108 @example
2109 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
2110 @end example
2111
2112 @noindent
2113 Si usa @code{\set} perché @code{fingeringOrientations} è una
2114 proprietà del contesto @code{Voice}, creato e usato dall'incisore
2115 @code{New_fingering_engraver}.
2116
2117 Questa proprietà accetta come valori una lista comprendente da uno a tre elementi.
2118 Stabilisce se la diteggiatura debba essere posizionata sopra (se nella
2119 lista c'è @code{up}), sotto (se c'è @code{down}), a sinistra (se c'è
2120 @code{left}) o a destra (se c'è @code{right}).  Nel caso vengano inseriti valori
2121 non accettati dalla lista, non sarà invece collocata alcuna diteggiatura.  LilyPond
2122 prende in considerazione questi limiti e trova la migliore disposizione per
2123 la diteggiatura delle note degli accordi che seguono.  Nota che @code{left} e
2124 @code{right} si escludono a vicenda -- la diteggiatura può essere posta
2125 solo da un lato o dall'altro, non da entrambi.
2126
2127 @warning{Per controllare la posizione della diteggiatura di una
2128 singola nota con questo comando bisogna scrivere la nota come un accordo
2129 con una nota sola, ovvero racchiuderla tra parentesi angolari.}
2130
2131 Ecco alcuni esempi:
2132
2133 @cindex fingering, esempio
2134 @cindex @code{\set}, esempio di utilizzo
2135 @cindex proprietà fingeringOrientations, esempio
2136
2137 @lilypond[quote,ragged-right,verbatim]
2138 \relative {
2139   \set fingeringOrientations = #'(left)
2140   <f'-2>4
2141   <c-1 e-2 g-3 b-5>4
2142   \set fingeringOrientations = #'(left)
2143   <f-2>4
2144   <c-1 e-2 g-3 b-5>4 |
2145   \set fingeringOrientations = #'(up left down)
2146   <f-2>4
2147   <c-1 e-2 g-3 b-5>4
2148   \set fingeringOrientations = #'(up left)
2149   <f-2>4
2150   <c-1 e-2 g-3 b-5>4 |
2151   \set fingeringOrientations = #'(right)
2152   <f-2>4
2153   <c-1 e-2 g-3 b-5>4
2154 }
2155 @end lilypond
2156
2157 @noindent
2158 Se la diteggiatura appare eccessivamente fitta, si può ridurre la dimensione del
2159 tipo di carattere modificando la proprietà @code{font-size}.  Si può vedere
2160 nell'oggetto @code{Fingering} della guida al Funzionamento interno che il
2161 valore predefinito di tale proprietà è @w{@code{-5}}, dunque proviamo
2162 con @w{@code{-7}}:
2163
2164 @lilypond[quote,ragged-right,verbatim]
2165 \relative {
2166   \override Fingering.font-size = #-7
2167   \set fingeringOrientations = #'(left)
2168   <f'-2>4
2169   <c-1 e-2 g-3 b-5>4
2170   \set fingeringOrientations = #'(left)
2171   <f-2>4
2172   <c-1 e-2 g-3 b-5>4 |
2173   \set fingeringOrientations = #'(up left down)
2174   <f-2>4
2175   <c-1 e-2 g-3 b-5>4
2176   \set fingeringOrientations = #'(up left)
2177   <f-2>4
2178   <c-1 e-2 g-3 b-5>4 |
2179   \set fingeringOrientations = #'(right)
2180   <f-2>4
2181   <c-1 e-2 g-3 b-5>4
2182 }
2183 @end lilypond
2184
2185 @node Oggetti esterni al rigo
2186 @subsection Oggetti esterni al rigo
2187 @translationof Outside-staff objects
2188
2189 Gli oggetti esterni al rigo sono disposti automaticamente in modo da evitare
2190 collisioni.  Ci sono vari modi per modificare la disposizione automatica
2191 se questa non è ottimale.
2192
2193 @menu
2194 * La proprietà outside-staff-priority::
2195 * Il comando textLengthOn::
2196 * Posizionamento delle dinamiche::
2197 * Dimensione dei grob::
2198 @end menu
2199
2200
2201 @node La proprietà outside-staff-priority
2202 @unnumberedsubsubsec La proprietà @code{outside-staff-priority}
2203 @translationof The outside-staff-priority property
2204
2205 Gli oggetti dai valori più bassi per la proprietà
2206 @code{outside-staff-priority} vengono posizionati più vicino al rigo,
2207 mentre gli altri oggetti esterni al rigo vengono distanziati quanto
2208 basta per evitare collisioni.  La proprietà @code{outside-staff-priority} è
2209 definita nell'interfaccia @code{grob-interface} ed è quindi una proprietà di
2210 tutti gli oggetti di formattazione.  Il valore predefinito è @code{#f} per
2211 tutti gli oggetti interni al rigo e un valore numerico appropriato, determinato
2212 al momento della creazione dell'oggetto, per ogni oggetto esterno al rigo.  La
2213 seguente tabella mostra i valori numerici predefiniti di alcuni dei più comuni
2214 oggetti esterni al rigo.
2215
2216 @cindex estensori (spanner)
2217 @cindex spanner
2218
2219 Si notino i nomi insoliti di alcuni oggetti: gli oggetti estensori (spanner)
2220 sono creati automaticamente per controllare la disposizione verticale dei
2221 grob che (potrebbero) iniziare e finire in diversi momenti musicali, quindi
2222 la modifica della proprietà @code{outside-staff-priority} del grob sottostante
2223 non produrrebbe alcun effetto.  Ad esempio, la modifica di
2224 @code{outside-staff-priority} dell'oggetto @code{Hairpin} non avrà alcun
2225 effetto sulla disposizione verticale delle forcelle.  Occorre invece modificare
2226 la proprietà @code{outside-staff-priority} dell'oggetto associato
2227 @code{DynamicLineSpanner}.  Questa sovrascrittura deve essere posta
2228 all'inizio dell'estensore, che potrebbe includere più forcelle e indicazioni dinamiche
2229 tra loro collegate.
2230
2231 @multitable @columnfractions .3 .3 .3
2232 @headitem Oggetto di formattazione
2233   @tab Priorità
2234   @tab Controlla la posizione di:
2235 @item @code{RehearsalMark}
2236   @tab @code{1500}
2237   @tab Numeri di chiamata (e oggetti di testo analoghi)
2238 @item @code{MetronomeMark}
2239   @tab @code{1000}
2240   @tab Indicazioni metronomiche
2241 @item @code{VoltaBracketSpanner}
2242   @tab @code{600}
2243   @tab Delimitatori dei finali alternativi delle ripetizioni
2244 @item @code{TextScript}
2245   @tab @code{450}
2246   @tab Oggetti di testo
2247 @item @code{MultiMeasureRestText}
2248   @tab @code{450}
2249   @tab Testi sopra pause di più misure
2250 @item @code{OttavaBracket}
2251   @tab @code{400}
2252   @tab Estensioni del segno d'ottava
2253 @item @code{TextSpanner}
2254   @tab @code{350}
2255   @tab Estensori del testo
2256 @item @code{DynamicLineSpanner}
2257   @tab @code{250}
2258   @tab Tutte le indicazioni dinamiche
2259 @item @code{BarNumber}
2260   @tab @code{ 100}
2261   @tab Numeri di battuta
2262 @item @code{TrillSpanner}
2263   @tab @code{50}
2264   @tab Linee ondulate del trillo
2265 @end multitable
2266
2267 Ecco un esempio che mostra il posizionamento predefinito di alcuni di
2268 questi oggetti.
2269
2270 @cindex estensore del testo
2271 @cindex segno del cambio d'ottava
2272
2273 @funindex \startTextSpan
2274 @funindex startTextSpan
2275 @funindex \stopTextSpan
2276 @funindex stopTextSpan
2277
2278 @cindex TextSpanner, esempio di sovrascrittura
2279 @cindex proprietà bound-details, esempio
2280 @cindex bound-details, esempio
2281
2282 @lilypond[quote,fragment,ragged-right,verbatim]
2283 % Set details for later Text Spanner
2284 \override TextSpanner.bound-details.left.text
2285     = \markup { \small \bold Slower }
2286 % Place dynamics above staff
2287 \dynamicUp
2288 % Start Ottava Bracket
2289 \ottava #1
2290 c''4 \startTextSpan
2291 % Add Dynamic Text and hairpin
2292 c''4\pp\<
2293 c''4
2294 % Add Text Script
2295 c''4^Text |
2296 c''4 c''
2297 % Add Dynamic Text and terminate hairpin
2298 c''4\ff c'' \stopTextSpan |
2299 % Stop Ottava Bracket
2300 \ottava #0
2301 c'4 c' c' c' |
2302 @end lilypond
2303
2304 Questo esempio mostra anche come creare gli estensori (spanner) del testo,
2305 ovvero testo con delle linee che si estendono sopra una sezione musicale.
2306 L'estensore si allunga dal comando @code{\startTextSpan} fino al comando
2307 @code{\stopTextSpan} e il formato del testo è definito dal comando
2308 @code{\override TextSpanner}.  Per maggiori dettagli si veda @ruser{Text spanners}.
2309
2310 Mostra anche come si creano le estensioni del segno d'ottava.
2311
2312 @cindex modificare il posizionamento del numero di battuta
2313 @cindex numeri di battuta, modificare il posizionamento
2314 @cindex modificare il posizionamento dell'indicazione metronomica
2315 @cindex indicazione metronomica, modificare il posizionamento
2316 @cindex modificare il posizionamento dei numeri di chiamata
2317 @cindex numeri di chiamata, modificare il posizionamento
2318
2319 Se i valori predefiniti di @code{outside-staff-priority} non producono
2320 il posizionamento desiderato, è possibile sovrascrivere la priorità di
2321 qualsiasi oggetto.  Immaginiamo di voler posizionare l'estensione del segno d'ottava
2322 sotto l'estensore del testo nell'esempio precedente.  Basta controllare la
2323 priorità dell'oggetto @code{OttavaBracket} nella guida al Funzionamento interno
2324 o nelle tabelle precedenti e ridurla a un valore inferiore di quello di un
2325 oggetto @code{TextSpanner}, ricordando che @code{OttavaBracket} è creato
2326 nel contesto @code{Staff}:
2327
2328 @cindex TextSpanner, esempio di sovrascrittura
2329 @cindex proprietà bound-details, esempio
2330 @cindex bound-details, esempio
2331
2332 @lilypond[quote,fragment,ragged-right,verbatim]
2333 % Set details for later Text Spanner
2334 \override TextSpanner.bound-details.left.text
2335     = \markup { \small \bold Slower }
2336 % Place dynamics above staff
2337 \dynamicUp
2338 % Start Ottava Bracket
2339 \ottava #1
2340 c''4 \startTextSpan
2341 % Add Dynamic Text and hairpin
2342 c''4\pp\<
2343 c''4
2344 % Add Text Script
2345 c''4^Text |
2346 c''4 c''
2347 % Add Dynamic Text and terminate hairpin
2348 c''4\ff c'' \stopTextSpan |
2349 % Stop Ottava Bracket
2350 \ottava #0
2351 c'4 c' c' c' |
2352 @end lilypond
2353
2354 Si noti che alcuni di questi oggetti, in particolare i numeri di
2355 battuta, i segni di metronomo e i numeri di chiamata, si trovano nel
2356 contesto @code{Score}; dunque, assicurati di richiamare il contesto
2357 giusto per sovrascriverli.
2358
2359 @cindex legature di portamento e outside-staff-priority
2360 @cindex legature di portamento e articolazioni
2361 @cindex articolazioni e legature di portamento
2362
2363 Le legature di portamento sono classificate come oggetti interni al rigo, anche
2364 se spesso sono poste sopra il rigo, se le note alle quali sono collegate si
2365 trovano nella parte superiore del pentagramma.  Questo può far sì che gli oggetti esterni al rigo,
2366 come le articolazioni, siano spinti troppo in alto, dato che la legatura viene
2367 posizionata prima.  La proprietà @code{avoid-slur} dell'articolazione
2368 può essere impostata su @code{'inside} per portare l'articolazione
2369 dentro la legatura, ma la proprietà @code{avoid-slur} funziona solo se anche
2370 @code{outside-staff-priority} è impostata su @code{#f}.
2371 Altrimenti, si può impostare la proprietà @code{outside-staff-priority} della
2372 legatura di portamento su un valore numerico, in modo che sia posizionata
2373 insieme ad altri oggetti esterni al rigo in base a quel valore.  Ecco un
2374 esempio che mostra l'effetto dei due metodi:
2375
2376 @lilypond[quote,verbatim]
2377 \relative c'' {
2378   c4( c^\markup { \tiny \sharp } d4.) c8 |
2379   c4(
2380     \once \override TextScript.avoid-slur = #'inside
2381     \once \override TextScript.outside-staff-priority = ##f
2382     c4^\markup { \tiny \sharp } d4.) c8 |
2383   \once \override Slur.outside-staff-priority = #500
2384     c4( c^\markup { \tiny \sharp } d4.) c8 |
2385 }
2386 @end lilypond
2387
2388 Attraverso la proprietà @code{outside-staff-priority} si può
2389 regolare anche la disposizone verticale di singoli oggetti;
2390 i risultati potrebbero tuttavia risultare non sempre ottimali.  Supponiamo
2391 di voler posizionare @qq{Testo3} sopra @qq{Testo4} nell'esempio
2392 precedente (si veda @ref{Automatic behavior}).
2393 Basta andare a cercare la priorità di @code{TextScript} nella
2394 guida al Funzionamento interno o nelle tabelle precedenti e
2395 aumentare la priorità di @qq{Testo3} assegnando un valore più alto:
2396
2397 @cindex TextScript, esempio di sovrascrittura
2398 @cindex proprietà outside-staff-priority, esempio
2399 @cindex outside-staff-priority, esempio
2400
2401 @lilypond[quote,fragment,ragged-right,verbatim]
2402 c''2^"Testo1"
2403 c''2^"Testo2" |
2404 \once \override TextScript.outside-staff-priority = #500
2405 c''2^"Testo3"
2406 c''2^"Testo4" |
2407 @end lilypond
2408
2409 Questo ovviamente pone @qq{Testo3} sopra @qq{Testo4}, ma anche
2410 sopra @qq{Testo2}, mentre @qq{Testo4} si sposta più in basso.  Forse questo
2411 risultato non ci soddisfa:  vorremmo piuttosto collocare
2412 tutti i testi alla stessa distanza dal rigo.  Per riuscirci,
2413 naturalmente, dobbiamo creare più spazio orizzontale tra le note per
2414 far posto al testo.  Lo si può ottenere con il comando
2415 @code{textLengthOn}.
2416
2417 @node Il comando textLengthOn
2418 @unnumberedsubsubsec Il comando @code{@bs{}textLengthOn}
2419 @translationof The textLengthOn command
2420
2421 @cindex note, distanziarle insieme al testo
2422
2423 @funindex \textLengthOn
2424 @funindex textLengthOn
2425 @funindex \textLengthOff
2426 @funindex textLengthOff
2427
2428 Per impostazione predefinita, finché si tratta di formattare la musica il
2429 testo prodotto dal comando @code{\markup} non occupa uno spazio orizzontale.
2430 Il comando @code{\textLengthOn} inverte questo comportamento e fa sì che
2431 le note si distanzino quanto basti per introdurre il testo:
2432
2433 @lilypond[quote,fragment,ragged-right,verbatim]
2434 \textLengthOn  % Fa sì che le note si distanzino per introdurre il testo
2435 c''2^"Text1"
2436 c''2^"Text2" |
2437 c''2^"Text3"
2438 c''2^"Text4" |
2439 @end lilypond
2440
2441 Il comando che ripristina il comportamento predefinito è
2442 @code{\textLengthOff}.  Altrimenti si può usare @code{\once}
2443 con @code{\textLengthOn} se l'effetto deve essere limitato
2444 a un singolo momento musicale.
2445 Analogalmente, la spaziatura per i segni di chiamata e le indicazioni
2446 di tempo è regolata in modo indipendente con i comandi @code{\markLengthOn}
2447 e @code{\markLengthOff}.
2448
2449 @cindex testo a margine, permettere le collisioni
2450
2451 Per parte sua, anche il testo a margine eviterà le note che si estendono sopra il
2452 rigo.  Se lo si vuole evitare, la disposizione automatica in alto può
2453 essere disattivata impostando la priorità su @code{#f}.  Ecco un esempio
2454 che mostra come il testo a margine interagisce con tali note.
2455
2456 @cindex TextScript, esempio di sovrascrittura
2457 @cindex proprietà outside-staff-priority, esempio
2458 @cindex outside-staff-priority, esempio
2459
2460 @lilypond[quote,fragment,ragged-right,verbatim]
2461 \relative {
2462   % Questo testo è abbastanza corto per starci senza creare collisioni
2463   c2^"Tes" c'' |
2464   R1 |
2465
2466   % Questo è troppo lungo per starci, quindi è spostato più in alto
2467   c,,2^"Testo" c'' |
2468   R1 |
2469
2470   % Disattiva l'elusione delle collisioni
2471   \once \override TextScript.outside-staff-priority = ##f
2472   c,,2^"Testo Lungo   " c'' |
2473   R1 |
2474
2475   % Disattiva l'elusione delle collisioni
2476   \once \override TextScript.outside-staff-priority = ##f
2477   \textLengthOn        % e attiva textLengthOn
2478   c,,2^"Testo Lungo   "  % Gli spazi finali vengono rispettati
2479   c''2 |
2480 }
2481 @end lilypond
2482
2483
2484 @node Posizionamento delle dinamiche
2485 @unnumberedsubsubsec Posizionamento delle dinamiche
2486 @translationof Dynamics placement
2487
2488 @cindex modificare il posizionamento delle dinamiche
2489 @cindex dinamiche, modificare il posizionamento
2490
2491 Le indicazioni dinamiche sono di norma poste sotto il
2492 rigo, ma possono essere collocati al di sopra del pentagramma col comando @code{\dynamicUp}.
2493 Vengono posizionati verticalmente rispetto alla figura cui
2494 si riferiscono e fluttuano sopra (o sotto) tutti gli oggetti
2495 interni al rigo come le legature di fraseggio e i numeri di battuta.
2496 Si ottengono risultati abbastanza accettabili, come dimostra
2497 questo esempio:
2498
2499 @lilypond[quote,ragged-right,verbatim]
2500 \relative {
2501   \clef "bass"
2502   \key aes \major
2503   \time 9/8
2504   \dynamicUp
2505   bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2506   ees,2.~\)\mf ees4 r8 |
2507 }
2508 @end lilypond
2509
2510 Tuttavia, se le note e le loro dinamiche sono molto vicine,
2511 la disposizione automatica eviterà le collisioni spostando
2512 più all'esterno i segni di dinamica successivi.  Questo
2513 potrebbe non essere però il posizionamento migliore, come mostra
2514 questo esempio piuttosto improbabile:
2515
2516 @lilypond[quote,ragged-right,verbatim,fragment]
2517 \dynamicUp
2518 \relative { a'4\f b\mf a\mp b\p }
2519 @end lilypond
2520
2521 @noindent
2522 Se si dovesse presentare una situazione simile in un @q{vero} brano musicale,
2523 converrebbe distanziare un po' di più le note, in modo che i segni di dinamica
2524 possano essere tutti collocati alla stessa distanza verticale dal rigo.  Abbiamo
2525 potuto farlo per il testo a margine usando il comando @code{\textLengthOn},
2526 ma non esiste un comando equivalente per i segni di dinamica.  Dunque
2527 dovremo scoprire come farlo usando i comandi @code{\override}.
2528
2529 @node Dimensione dei grob
2530 @unnumberedsubsubsec Dimensione dei grob
2531 @translationof Grob sizing
2532
2533 @subheading Estensione dei grob
2534
2535 @cindex estensione dei grob
2536 @cindex grob, estensione
2537
2538 Dobbiamo innanzitutto sapere come i grob occupano lo spazio.  Tutti i grob
2539 hanno al loro interno un punto di riferimento che viene usato
2540 per posizionarli in modo relativo all'oggetto genitore da cui derivano.  Questo
2541 punto nel grob viene poi disposto a una distanza orizzontale,
2542 @code{X-offset}, e a una distanza verticale, @code{Y-offset}, dall'oggetto
2543 genitore.  L'estensione (@emph{extent}) orizzontale dell'oggetto è data da una
2544 coppia di numeri, @code{X-extent}, che indica dove si trovano i margini
2545 sinistro e destro rispetto al punto di riferimento.  L'ampiezza verticale
2546 è ugualmente definita da una coppia di numeri, @code{Y-extent}.
2547 Queste proprietà appartengono a tutti i grob che supportano l'interfaccia
2548 @code{grob-interface}.
2549
2550 @cindex @code{extra-spacing-width}
2551
2552 Per impostazione predefinita, gli oggetti esterni al rigo presentano estensione
2553 pari a zero, in modo da potersi sovrapporre nella direzione orizzontale.
2554 Ciò si ottiene con un trucco, ovvero dando un valore infinito all'estensione
2555 sinistra e infinito negativo a quella destra, impostando la proprietà
2556 @code{extra-spacing-width} su @code{'(+inf.0 . -inf.0)}.  Per
2557 assicurarci che non si sovrappongano nella direzione orizzontale, dobbiamo
2558 sovrascrivere il valore di @code{extra-spacing-width} per dar loro un po' più
2559 di spazio.  Le unità sono lo spazio tra due linee del rigo, dunque spostare
2560 il margine sinistro di mezza unità a sinistra e quello destro di mezza unità
2561 a destra dovrebbe dare il risultato desiderato:
2562
2563 @example
2564 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2565 @end example
2566
2567 @noindent
2568 Vediamo se funziona nell'esempio precedente:
2569
2570 @cindex DynamicText, esempio di sovrascrittura
2571 @cindex proprietà extra-spacing-width, esempio
2572 @cindex extra-spacing-width, esempio
2573
2574 @lilypond[quote,fragment,ragged-right,verbatim]
2575 \dynamicUp
2576 % Aumenta la larghezza di 1 spazio rigo
2577 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2578 \relative { a'4\f b\mf a\mp b\p }
2579 @end lilypond
2580
2581 @noindent
2582 L'aspetto è migliore, ma sarebbe preferibile avere i segni di dinamica
2583 allineati alla stessa linea di base invece di spostarsi su e giù seguendo
2584 la posizione delle note.  La proprietà che permette di ottenere tale
2585 risultato è @code{staff-padding} ed è trattata nella sezione relativa
2586 alle collisioni (vedi @ref{Collisions of objects}).
2587
2588
2589 @node Spaziatura verticale
2590 @section Spaziatura verticale
2591 @translationof Vertical spacing
2592
2593 Di norma, la spaziatura verticale degli oggetti musicali decisa da
2594 LilyPond è molto buona.  Vediamo come si comporta con una semplice
2595 canzone, composta da due voci e un accompagnamento per pianoforte:
2596
2597 @lilypond[quote,fragment,ragged-right]
2598 <<
2599   \new ChoirStaff
2600   <<
2601     \new Staff {
2602       \new Voice = "music" {
2603         b'2 c' c' c'
2604       }
2605     }
2606     \new Lyrics
2607     \lyricsto "music" {
2608       Here are some lyrics
2609     }
2610     \new Staff {
2611       \clef bass e'2 f e c
2612     }
2613   >>
2614   \new PianoStaff
2615   <<
2616     \new Staff {
2617       g''2 c'' c'' a''
2618     }
2619     \new Staff {
2620       \clef bass e2 f c e
2621     }
2622   >>
2623 >>
2624 @end lilypond
2625
2626 Non c'è niente di sbagliato con la spaziatura verticale predefinita.  Tuttavia,
2627 supponiamo che si stia lavorando con un editore che abbia requisiti specifici
2628 per la spaziatura verticale dei righi e del testo vocale, ovvero maggior spazio
2629 tra testo e note, e tra l'accompagnamento del pianoforte e la linea vocale, e
2630 minor spazio tra i righi del pianoforte.  Iniziamo dal testo.
2631
2632 Il testo vocale si trova all'interno di un sistema, dunque i comandi per
2633 modificarne la spaziatura sono descritti in @ruser{Flexible vertical spacing within systems}.
2634 Quel paragrafo ci dice che il testo è costituito da linee che non appartengono
2635 al rigo (@code{non-staff lines}), quindi il comando per cambiarne la spaziatura
2636 sarà riferito alla proprietà @code{nonstaff}.  Per allontanarlo dal rigo a cui
2637 si riferiscono (la linea superiore) si usa la proprietà @code{relatedstaff}.
2638 Per allontanarli dalla linea più bassa si usa la proprietà @code{unrelatedstaff}.
2639 Le parti vocali fanno parte del @code{VerticalAxisGroup}, dunque dobbiamo
2640 aggiustare le sue proprietà.  Proviamo a vedere se funziona.
2641
2642 @lilypond[quote,fragment,ragged-right,verbatim]
2643 <<
2644   \new ChoirStaff
2645   <<
2646     \new Staff {
2647       \new Voice = "music" {
2648         b'2 c' c' c'
2649       }
2650     }
2651     \new Lyrics \with {
2652       \override VerticalAxisGroup.
2653         nonstaff-relatedstaff-spacing.padding = #5
2654       \override VerticalAxisGroup.
2655         nonstaff-unrelatedstaff-spacing.padding = #5
2656     }
2657     \lyricsto "music" {
2658       Here are some lyrics
2659     }
2660     \new Staff {
2661       \clef bass e'2 f e c
2662     }
2663   >>
2664   \new PianoStaff
2665   <<
2666     \new Staff {
2667       g''2 c'' c'' a''
2668     }
2669     \new Staff {
2670       \clef bass e2 f c e
2671     }
2672   >>
2673 >>
2674 @end lilypond
2675
2676 Funziona, ma forse non molto bene.  Quando impostiamo il
2677 @code{padding} su 5, LilyPond aggiunge 5 spazi rigo alla distanza
2678 tra gli oggetti, che è troppo in questo caso.  Useremo 2.
2679
2680 Ora allontaniamo la musica per pianoforte dalle parti vocali.  La musica
2681 vocale si trova nel rigo @code{ChoirStaff}, quindi dobbiamo aumentare lo
2682 spazio tra quel gruppo di righi e il rigo per pianoforte che si trova sotto.
2683 Lo faremo modificando la proprietà @code{basic-distance} del
2684 @code{staffgroup-staff-spacing} di @code{StaffGrouper}.
2685
2686 @lilypond[quote,fragment,ragged-right,verbatim]
2687 <<
2688   \new ChoirStaff \with {
2689     \override StaffGrouper.
2690       staffgroup-staff-spacing.basic-distance = #15
2691   }
2692   <<
2693     \new Staff {
2694       \new Voice = "music" {
2695         b'2 c' c' c'
2696       }
2697     }
2698     \new Lyrics \with {
2699       \override VerticalAxisGroup.
2700         nonstaff-relatedstaff-spacing.padding = #2
2701       \override VerticalAxisGroup.
2702         nonstaff-unrelatedstaff-spacing.padding = #2
2703     }
2704     \lyricsto "music" {
2705       Here are some lyrics
2706     }
2707     \new Staff {
2708       \clef bass e'2 f e c
2709     }
2710   >>
2711   \new PianoStaff
2712   <<
2713     \new Staff {
2714       g''2 c'' c'' a''
2715     }
2716     \new Staff {
2717       \clef bass e2 f c e
2718     }
2719   >>
2720 >>
2721 @end lilypond
2722
2723 Ottimo.  Non ci resta che avvicinare i righi del pianoforte.  Per farlo,
2724 modifichiamo di nuovo le proprietà di @code{StaffGrouper}, ma questa volta
2725 riduciamo sia @code{basic-distance} che @code{padding}.  Ecco come fare:
2726
2727 @lilypond[quote,fragment,ragged-right,verbatim]
2728 <<
2729   \new ChoirStaff \with {
2730     \override StaffGrouper.
2731       staffgroup-staff-spacing.basic-distance = #15
2732   }
2733   <<
2734     \new Staff {
2735       \new Voice = "music" {
2736         b'2 c' c' c'
2737       }
2738     }
2739     \new Lyrics \with {
2740       \override VerticalAxisGroup.
2741         nonstaff-relatedstaff-spacing.padding = #2
2742       \override VerticalAxisGroup.
2743         nonstaff-unrelatedstaff-spacing.padding = #2
2744     }
2745     \lyricsto "music" {
2746       Here are some lyrics
2747     }
2748     \new Staff {
2749       \clef bass e'2 f e c
2750     }
2751   >>
2752   \new PianoStaff \with {
2753     \override StaffGrouper.staff-staff-spacing = #'(
2754                             (basic-distance . 0)
2755                             (padding . 0))
2756   }
2757   <<
2758     \new Staff {
2759       g''2 c'' c'' a''
2760     }
2761     \new Staff {
2762       \clef bass e2 f c e
2763     }
2764   >>
2765 >>
2766 @end lilypond
2767
2768 In questo modo sono molto vicini, ma è quello che vuole l'editore.
2769 Se necessario, possono essere allontanati modificando @code{padding} o
2770 @code{basic-distance}.
2771
2772 Ci sono molti modi per modificare la spaziatura verticale.  Il punto fondamentale
2773 da ricordare è che la spaziatura degli oggetti in un contesto @code{StaffGroup}
2774 (come i gruppi @code{GrandStaff} o @code{PianoStaff}) è controllata dalle
2775 variabili spaziali di @code{StaffGrouper}.  La spaziatura relativa ai righi
2776 non raggruppati (come @code{Lyrics} e @code{Staff}) è regolata dalle variabili
2777 del @code{VerticalAxisGroup}.  Ulteriori dettagli in
2778 @ruser{Flexible vertical spacing paper variables} e
2779 @ruser{Flexible vertical spacing within systems}.
2780
2781
2782 @node Collisioni tra oggetti
2783 @section Collisioni tra oggetti
2784 @translationof Collisions of objects
2785
2786 @menu
2787 * Spostare gli oggetti::
2788 * Correggere la sovrapposizione di elementi della notazione::
2789 * Esempio musicale::
2790 @end menu
2791
2792 @node Spostare gli oggetti
2793 @subsection Spostare gli oggetti
2794 @translationof Moving objects
2795
2796 @cindex spostare gli oggetti che si sovrappongono
2797 @cindex spostare gli oggetti che collidono
2798 @cindex spostare i grob che collidono
2799 @cindex oggetti, spostarli se collidono
2800 @cindex grob, spostarli se collidono
2801
2802 Per quanto possa apparire sorprendente, LilyPond non è perfetto.  Alcuni elementi
2803 della notazione possono sovrapporsi.  Si tratta di un caso spiacevole, anche se in
2804 realtà piuttosto raro.  Di solito l'esigenza di spostare gli
2805 oggetti dipende da motivi di chiarezza o da ragioni estetiche: gli elementi
2806 possono ottenere un aspetto migliore con un po' più o un po' meno
2807 spazio intorno.
2808
2809 Esistono tre principali approcci per risolvere la sovrapposizione
2810 degli elementi della notazione.  Vediamoli nel seguente ordine:
2811
2812 @enumerate
2813 @item
2814 Si può cambiare la @strong{direzione} di uno degli oggetti che si
2815 sovrappongono usando i comandi predefiniti elencati prima, in riferimento agli
2816 oggetti interni al rigo (vedi @ref{Within-staff objects}).
2817 In questo modo si possono riposizionare facilmente gambi, legature di
2818 portamento e di valore, travature, segni di dinamica, testo e gruppi
2819 irregolari.  La limitazione è che si tratta di una scelta circoscritta a due sole
2820 posizioni, nessuna delle quali potrebbe essere appropriata.
2821
2822 @item
2823 Le @strong{proprietà degli oggetti}, che LilyPond usa quando dispone
2824 gli oggetti di formattazione, si possono modificare con @code{\override}.  I
2825 vantaggi dell'intervenire su questo tipo di proprietà sono che (a)
2826 gli altri oggetti saranno spostati automaticamente se è necessario far
2827 spazio, e (b) ogni sovrascrittura può essere applicata a tutte le occorrenze
2828 di oggetti dello stesso tipo.  Tali proprietà sono:
2829
2830 @itemize
2831
2832 @item
2833 @code{direction}
2834
2835 Questa è già stata trattata in dettaglio (vedi
2836 @ref{Within-staff objects}).
2837
2838 @item
2839 @code{padding}, @code{right-padding}, @code{staff-padding}
2840
2841 @cindex distanza
2842 @cindex spaziatura
2843 @cindex proprietà padding
2844 @cindex proprietà right-padding
2845 @cindex proprietà staff-padding
2846 @cindex padding, proprietà
2847 @cindex right-padding, proprietà
2848 @cindex staff-padding, proprietà
2849
2850 Quando un oggetto viene posizionato, il valore della sua proprietà
2851 @code{padding} specifica lo spazio intermedio da lasciare tra l'oggetto stesso
2852 e il bordo più vicino di quello accanto a cui si trova.  Nota che si
2853 tratta del valore di @code{padding} dell'oggetto che @strong{si sta
2854 posizionando}, mentre quello dell'oggetto già posizionato viene
2855 ignorato.  Gli spazi specificati da @code{padding} possono essere
2856 applicati a tutti gli oggetti che supportano l'interfaccia
2857 @code{side-position-interface}.
2858
2859 Invece che da @code{padding}, la disposizione dei gruppi di alterazioni
2860 è regolata da @code{right-padding}.  Questa proprietà appartiene all'oggetto
2861 @code{AccidentalPlacement} che si trova nel contesto @strong{Staff}.  Il
2862 processo di formattazione della partitura crea per prime le teste di
2863 nota e poi, se presenti, aggiunge le alterazioni alla sinistra delle
2864 teste di nota usando la proprietà @code{right-padding} per stabilire
2865 la distanza tra le teste e le singole alterazioni.
2866 Dunque, solo la proprietà @code{right-padding} dell'oggetto @code{AccidentalPlacement}
2867 produce un effetto sul posizionamento delle alterazioni.
2868
2869 La proprietà @code{staff-padding} è strettamente connessa alla proprietà
2870 @code{padding}: @code{padding} regola la quantità minima di spazio tra
2871 qualsiasi oggetto che supporti l'interfaccia @code{side-position-interface} e
2872 quello più vicino (solitamente, la nota o le linee del rigo); @code{staff-padding}
2873 si applica solo a quegli oggetti che stanno sempre fuori dal rigo e regola
2874 la distanza minima tra l'oggetto e il rigo.  Nota che
2875 @code{staff-padding} non ha alcun effetto sugli oggetti disposti relativamente
2876 alla nota invece che al rigo, anche se può essere sovrascritto senza generare
2877 degli errori per tali oggetti; quindi viene semplicemente ignorata.
2878
2879 Per scoprire quale proprietà padding è richiesta per l'oggetto che
2880 desideri riposizionare, devi tornare alla guida del Funzionamento
2881 interno e cercare le proprietà dell'oggetto.  Presta attenzione al fatto
2882 che le proprietà padding potrebbero non trovarsi nell'oggetto più
2883 ovvio; in tal caso devi cercare negli oggetti simili.
2884
2885 I valori delle proprietà padding sono misurati in spazi del rigo.  Il valore
2886 predefinito della maggior parte degli oggetti è circa 1.0 o meno (a seconda
2887 dell'oggetto).  Può essere sovrascritto per ottenere una distanza maggiore
2888 o minore.
2889
2890 @item
2891 @code{self-alignment-X}
2892
2893 @cindex proprietà self-alignment-X
2894 @cindex self-alignment-X, proprietà
2895
2896 Questa proprietà serve ad allineare l'oggetto a sinistra, a destra o
2897 al centro rispetto al punto di riferimento dell'oggetto genitore.
2898 Si può usare con tutti gli oggetti che supportano l'interfaccia
2899 @code{self-alignment-interface}.  Generalmente si tratta di oggetti
2900 che contengono testo.  I valori sono @code{LEFT} (sinistra), @code{RIGHT}
2901 (destra) o @code{CENTER} (centro).  Altrimenti, è possibile definire un valore
2902 numerico compreso tra @w{@code{-1}} e @code{+1}, dove @w{@code{-1}} indica
2903 allineamento a sinistra e @code{+1} allineamento a destra, mentre gli altri
2904 numeri spostano progressivamente il testo dall'allineamento a sinistra
2905 all'allineamento a destra.  È possibile specificare valori numerici maggiori
2906 di @code{1}, per spostare il testo ancora più a sinistra, o valori inferiori
2907 a @w{@code{-1}}, per spostarlo ancora più a destra.  Ogni modifica di @code{1}
2908 nel valore corrisponde a uno spostamento pari alla metà della lunghezza
2909 del testo.
2910
2911 @item
2912 @code{extra-spacing-width}
2913
2914 @cindex proprietà extra-spacing-width
2915 @cindex extra-spacing-width, proprietà
2916
2917 Questa proprietà è disponibile per tutti gli oggetti che supportano
2918 l'interfaccia @code{item-interface}. Accetta due numeri: il primo è
2919 aggiunto all'estensione più a sinistra, il secondo a quella più a
2920 destra.  I numeri negativi spostano il bordo verso sinistra, quelli
2921 positivi verso destra: quindi, per allargare un oggetto il primo
2922 numero deve essere negativo, il secondo deve essere positivo.
2923 Nota che non tutti gli oggetti rispettano entrambi i numeri.  Ad
2924 esempio, l'oggetto @code{Accidental} considera soltanto il primo
2925 numero (bordo sinistro).
2926
2927 @item
2928 @code{staff-position}
2929
2930 @cindex proprietà staff-position
2931 @cindex staff-position, proprietà
2932
2933 @code{staff-position} è una proprietà dell'interfaccia
2934 @code{staff-symbol-referencer-interface}, supportata dagli oggetti
2935 che vengono posizionati in relazione al rigo.  Specifica in unità
2936 di mezzo spazio di rigo la posizione verticale dell'oggetto rispetto
2937 alla linea centrale del rigo stesso.  È utile per risolvere collisioni
2938 tra oggetti come le pause di più misure, le legature di valore e le
2939 note in voci diverse.
2940
2941 @item
2942 @code{horizontal-shift}
2943
2944 @cindex horizontal-shift, proprietà
2945 @cindex proprietà horizontal-shift
2946 @cindex colonna di note
2947 @cindex collisioni di note
2948 @cindex note, collisioni
2949 @cindex shift, comandi
2950 @funindex \shiftOff
2951 @funindex shiftOff
2952 @funindex \shiftOn
2953 @funindex shiftOn
2954 @funindex \shiftOnn
2955 @funindex shiftOnn
2956 @funindex \shiftOnnn
2957 @funindex shiftOnnn
2958
2959 All'interno di una voce, tutte le note che si trovano nello stesso momento
2960 musicale sono raggruppate in una colonna di note, e viene creato un oggetto
2961 @code{NoteColumn} per controllare il posizionamento orizzontale di quel
2962 gruppo di note (vedi @qq{Colonne di note} in @ref{Explicitly instantiating voices}).  Se
2963 @emph{e solo se} due o più colonne di note in un solo contesto Staff, entrambe
2964 con i gambi nella stessa direzione, si trovano sullo stesso momento musicale,
2965 i valori delle loro proprietà @code{horizontal-shift} sono usati per attribuire
2966 un punteggio e le colonne che hanno un punteggio più alto vengono progressivamente spostate
2967 per evitare le collisioni delle teste di nota.  Questa proprietà viene impostata
2968 dai comandi @code{\voiceXXX} e può essere scavalcata direttamente con un
2969 comando @code{\override} o, di solito, dai comandi @code{\shiftOn}.
2970 Attenzione: questa proprietà viene usata per dare un @emph{punteggio} alle
2971 colonne di note per spostarle orizzontalmente; non specifica la grandezza dello
2972 spostamento, che viene aumentata progressivamente per gradi in base alla larghezza della
2973 testa di nota  per ogni punteggio.  I gradi sono solitamente di metà della
2974 larghezza della testa di nota, ma possono essere della larghezza intera della
2975 testa quando c'è un gruppo di note molto ravvicinate.
2976
2977
2978 @item
2979 @code{force-hshift}
2980
2981 @cindex proprietà force-hshift
2982 @cindex force-hshift, proprietà
2983
2984 La proprietà @code{force-hshift} appartiene a @code{NoteColumn}
2985 (più precisamente all'interfaccia @code{note-column-interface}).  Modificandola
2986 è possibile spostare la colonna di note in situazioni in cui le colonne di
2987 note sono sovrapposte.  Non ha effetto su colonne di note non sovrapposte.
2988 Viene specificata in unità appropriate per una colonna di note,  ovvero la
2989 larghezza della testa della nota nella prima voce.  Si usa
2990 in situazioni complesse in cui i normali comandi @code{\shiftOn} (vedi
2991 @ref{Explicitly instantiating voices}) non risolvono adeguatamente le collisioni tra le
2992 note.  Per questo scopo, è preferibile alla proprietà @code{extra-offset}
2993 perché non c'è bisogno di trovare la giusta distanza in spazi di rigo e
2994 lo spostamento delle note dentro o fuori da una @code{NoteColumn}
2995 si ripercuote su altre azioni, come il congiungimento delle teste delle note.
2996
2997 @end itemize
2998
2999 @item
3000 Infine, se i metodi precedenti non funzionano, si possono riposizionare
3001 verticalmente gli oggetti rispetto alla linea centrale del rigo
3002 oppure collocarli a una qualsiasi distanza rispetto a una nuova
3003 posizione.  Gli svantaggi di questo metodo consistono nel fatto che i corretti
3004 valori per il riposizionamento debbano essere trovati per tentativi e per ogni
3005 singolo oggetto; inoltre, dato che lo spostamento avviene dopo che LilyPond
3006 ha posizionato tutti gli altri oggetti, spetta all'utente evitare le
3007 eventuali collisioni.  La principale
3008 difficoltà che questo approccio comporta, però, è che i valori di riposizionamento
3009 potrebbero dover essere ricalcolati se la musica venisse successivamente
3010 modificata.  Le proprietà che si possono usare con questo tipo di
3011 riposizionamento manuale sono:
3012
3013 @table @code
3014 @item extra-offset
3015
3016 @cindex proprietà extra-offset
3017 @cindex extra-offset, proprietà
3018
3019 Questa proprietà si applica a qualsiasi oggetto di formattazione che supporta
3020 l'interfaccia @code{grob-interface}.  Accetta come valore una coppia di numeri
3021 che specificano l'ulteriore spostamento nelle direzioni orizzontale e verticale.
3022 I numeri negativi spostano l'oggetto a sinistra o in basso.  Le unità sono
3023 gli spazi del rigo.  Questo spostamento aggiuntivo è applicato dopo la formattazione
3024 degli oggetti, dunque gli oggetti possono essere riposizionati ovunque senza
3025 incidere sugli altri.
3026
3027 @item positions
3028
3029 @cindex proprietà positions
3030 @cindex positions, proprietà
3031
3032 Questa proprietà è utile specialmente per correggere manualmente l'inclinazione e
3033 l'altezza di travature, legature di portamento e graffette dei gruppi irregolari.  Accetta
3034 come valore una coppia di numeri, che specifica la posizione dei bordi sinistro
3035 e destro della travatura, della legatura, etc., rispetto alla linea centrale
3036 del rigo.  L'unità di misura è lo spazio del rigo.  Considera, però,
3037 che le legature di portamento e di frase non possono essere riposizionate
3038 del tutto arbitrariamente.  LilyPond, infatti, genera prima una lista
3039 delle possibili posizioni per la legatura e poi determina la legatura che
3040 @qq{ritiene migliore}.  Se la proprietà @code{positions} è stata sovrascritta,
3041 viene scelta dalla lista la legatura più vicina alle posizioni richieste.
3042 @end table
3043
3044 @end enumerate
3045
3046 Alcuni oggetti potrebbero non disporre di tutte queste proprietà.
3047 Occorre andare a vedere nella guida al Funzionamento interno
3048 quali proprietà siano disponibili per l'oggetto che si intende
3049 modificare.
3050
3051 Segue una lista degli oggetti che hanno la maggiore probabilità
3052 di essere coinvolti in collisioni, insieme al nome dell'oggetto
3053 che deve essere cercato nella guida al Funzionamento interno per
3054 poter sapere quali proprietà si possono usare per spostarlo.
3055
3056 @multitable @columnfractions .5 .5
3057 @headitem Tipo di oggetto            @tab Nome dell'oggetto
3058 @item Articolazioni                  @tab @code{Script}
3059 @item Travature                      @tab @code{Beam}
3060 @item Dinamiche (verticalmente)      @tab @code{DynamicLineSpanner}
3061 @item Dinamiche (orizzontalmente)    @tab @code{DynamicText}
3062 @item Diteggiature                   @tab @code{Fingering}
3063 @item Numeri di chiamata / Testi     @tab @code{RehearsalMark}
3064 @item Legature di portamento         @tab @code{Slur}
3065 @item Testi, ovvero @code{^"testo"}  @tab @code{TextScript}
3066 @item Legature di valore             @tab @code{Tie}
3067 @item Gruppi irregolari              @tab @code{TupletBracket}
3068 @end multitable
3069
3070
3071 @node Correggere la sovrapposizione di elementi della notazione
3072 @subsection Correggere la sovrapposizione di elementi della notazione
3073 @translationof Fixing overlapping notation
3074
3075 Vediamo ora come le proprietà presentate nella sezione precedente possano
3076 aiutare a risolvere la sovrapposizione degli elementi della notazione.
3077
3078 @menu
3079 * La proprietà padding::
3080 * La proprietà right-padding::
3081 * La proprietà staff-padding::
3082 * La proprietà self-alignment-X::
3083 * La proprietà staff-position::
3084 * La proprietà extra-offset::
3085 * La proprietà positions::
3086 * La proprietà force-hshift::
3087 @end menu
3088
3089 @node La proprietà padding
3090 @unnumberedsubsubsec La proprietà @code{padding}
3091 @translationof The padding property
3092
3093 @cindex padding
3094 @cindex spaziatura
3095 @cindex correggere la sovrapposizione di elementi della notazione
3096 @cindex sovrapposizione degli elementi della notazione
3097
3098 La proprietà @code{padding} serve a aumentare (o diminuire)
3099 la distanza tra i simboli che si trovano sopra o sotto le
3100 note.
3101
3102 @cindex Script, esempio di sovrascrittura
3103 @cindex proprietà padding, esempio
3104 @cindex padding, esempio
3105
3106 @lilypond[quote,fragment,verbatim]
3107 c'2\fermata
3108 \override Script.padding = #3
3109 b2\fermata
3110 @end lilypond
3111
3112 @cindex MetronomeMark, esempio di sovrascrittura
3113 @cindex proprietà padding, esempio
3114 @cindex padding, esempio
3115
3116 @lilypond[quote,fragment,verbatim]
3117 % Questo non funziona, vedi sotto
3118 \override MetronomeMark.padding = #3
3119 \tempo 4 = 120
3120 c'1 |
3121 % Questo funziona
3122 \override Score.MetronomeMark.padding = #3
3123 \tempo 4 = 80
3124 d'1 |
3125 @end lilypond
3126
3127 Nota nel secondo esempio come è importante sapere quale contesto
3128 gestisce un certo oggetto.  Dato che l'oggetto @code{MetronomeMark}
3129 è regolato dal contesto @code{Score}, le modifiche della proprietà
3130 nel contesto @code{Voice} non vengono prese in considerazione.  Per
3131 approfondire l'argomento si veda @ruser{Modifying properties}.
3132
3133 Se la proprietà @code{padding} di un oggetto viene aumentata quando
3134 quell'oggetto si trova insieme ad altri oggetti disposti secondo la
3135 loro proprietà @code{outside-staff-priority}, allora si sposteranno
3136 quell'oggetto e tutti gli oggetti esterni a esso.
3137
3138
3139 @node La proprietà right-padding
3140 @unnumberedsubsubsec La proprietà @code{right-padding}
3141 @translationof The right-padding property
3142
3143 @cindex proprietà right-padding
3144 @cindex right-padding, proprietà
3145
3146 La proprietà @code{right-padding} agisce sullo spazio tra l'alterazione
3147 e la nota corrispondente.  Non è una necessità frequente, ma la
3148 spaziatura predefinita potrebbe risultare errata nei casi di alcuni
3149 speciali glifi delle alterazioni usati nella musica microtonale.
3150 Questi si inseriscono sovrascrivendo lo stampo (stencil) dell'alterazione
3151 con un segno che contenga il simbolo desiderato:
3152
3153 @cindex Accidental, esempio di sovrascrittura
3154 @cindex proprietà text, esempio
3155 @cindex text, esempio
3156 @cindex proprietà stencil, esempio
3157 @cindex stencil, esempio
3158 @cindex AccidentalPlacement, esempio di sovrascrittura
3159 @cindex proprietà right-padding, esempio
3160 @cindex right-padding, esempio
3161
3162 @lilypond[quote,ragged-right,verbatim]
3163 sesquisharp = \markup { \sesquisharp }
3164 \relative {
3165   c''4
3166   % Mostra un triesis (alterazione ascendente di tre quarti di tono) ma lo spazio è troppo stretto
3167   \once \override Accidental.stencil = #ly:text-interface::print
3168   \once \override Accidental.text = #sesquisharp
3169   cis4 c
3170   % Ecco come migliorare lo spazio
3171   \once \override Score.AccidentalPlacement.right-padding = #0.6
3172   \once \override Accidental.stencil = #ly:text-interface::print
3173   \once \override Accidental.text = #sesquisharp
3174   cis4 |
3175 }
3176 @end lilypond
3177
3178 @noindent
3179 Siamo costretti a usare una sovrascrittura dello stampo dell'alterazione che
3180 verrà spiegata successivamente.  Il tipo di stampo deve essere una
3181 procedura e in questo esempio è stato modificato per mostrare i
3182 contenuti della proprietà @code{text} dell'oggetto @code{Accidental}, che
3183 è esso stesso impostato sul segno di triesis.  Poi
3184 questo segno viene distanziato dalla testa di nota grazie alla sovrascrittura
3185 di @code{right-padding}.
3186
3187 @noindent
3188
3189 @node La proprietà staff-padding
3190 @unnumberedsubsubsec La proprietà @code{staff-padding}
3191 @translationof The staff-padding property
3192
3193 @cindex allineare gli oggetti a una base
3194 @cindex oggetti, allinearli a una base
3195
3196 @code{staff-padding} serve ad allineare gli oggetti come i segni di
3197 dinamica lungo una linea di base a una certa distanza dal rigo, quando
3198 nessun altro elemento della notazione li allontana dal rigo.
3199 Non è una proprietà di @code{DynamicText} bensì
3200 di @code{DynamicLineSpanner}, perché la base deve essere applicata
3201 ugualmente a @strong{tutti} i segni dinamica, compresi quelli creati
3202 come estensori.  Ecco come allineare i segni di dinamica nell'esempio
3203 preso dalla sezione precedente:
3204
3205 @cindex DynamicText, esempio di sovrascrittura
3206 @cindex proprietà extra-spacing-width, esempio
3207 @cindex extra-spacing-width, esempio
3208 @cindex DynamicLineSpanner, esempio di sovrascrittura
3209 @cindex proprietà staff-padding, esempio
3210 @cindex staff-padding, esempio
3211
3212 @lilypond[quote,fragment,ragged-right,verbatim]
3213 \override DynamicLineSpanner.staff-padding = #3
3214 \relative { a'4\f b\mf a\p b\mp }
3215 @end lilypond
3216
3217
3218 @node La proprietà self-alignment-X
3219 @unnumberedsubsubsec La proprietà @code{self-alignment-X}
3220 @translationof The self-alignment-X property
3221
3222 L'esempio successivo mostra come aggiustare la posizione di un numero
3223 di corda rispetto a un gambo allineando il bordo destro del numero
3224 al punto di riferimento della nota a cui si riferisce:
3225
3226 @cindex StringNumber, esempio di sovrascrittura
3227 @cindex proprietà self-alignment-X, esempio
3228 @cindex self-alignment-X, esempio
3229
3230 @lilypond[quote,fragment,ragged-right,verbatim]
3231 \voiceOne
3232 <a''\2>
3233 \once \override StringNumber.self-alignment-X = #RIGHT
3234 <a''\2>
3235 @end lilypond
3236
3237
3238 @node La proprietà staff-position
3239 @unnumberedsubsubsec La proprietà @code{staff-position}
3240 @translationof The staff-position property
3241
3242 @cindex collisione tra oggetti all'interno del rigo
3243
3244 Le pause d'intero di una voce possono entrare in collisione con le note
3245 di un'altra.  Dal momento che queste pause sono centrate rispetto
3246 alle stanghette della battuta, calcolare quali altre note potrebbero
3247 sovrapporsi richiederebbe un notevole grado d'elaborazione, dato che l'attuale
3248 gestione delle collisioni tra note e tra note e pause riguarda solo
3249 le note e le pause simultanee.  Ecco un esempio
3250 di collisione di questo tipo:
3251
3252 @lilypond[quote,verbatim,ragged-right]
3253 << \relative { c'4 c c c } \\ { R1 } >>
3254 @end lilypond
3255
3256 In questo caso la soluzione migliore è spostare in basso la pausa d'intero, poiché
3257 si trova nella seconda voce.  In @code{\voiceTwo} (ovvero nella seconda
3258 voce di un costrutto @code{<<@{@dots{}@} \\ @{@dots{}@}>>}) il valore predefinito
3259 di @code{staff-position} è -4 per la pausa multipla (MultiMeasureRest), quindi
3260 dobbiamo spostarla più in basso, ad esempio di altri quattro semispazi del
3261 rigo; il nuovo valore sarà @w{@code{-8}}.
3262
3263 @cindex MultiMeasureRest, esempio di sovrascrittura
3264 @cindex proprietà staff-position, esempio
3265 @cindex staff-position, esempio
3266
3267 @lilypond[quote,verbatim,ragged-right]
3268 <<
3269   \relative { c'4 c c c }
3270   \\
3271   \override MultiMeasureRest.staff-position = #-8
3272   { R1 }
3273 >>
3274 @end lilypond
3275
3276 Questa soluzione è preferibile all'uso di @code{extra-offset}, perché
3277 il taglio addizionale sopra la pausa è inserito automaticamente.
3278
3279 @node La proprietà extra-offset
3280 @unnumberedsubsubsec La proprietà @code{extra-offset}
3281 @translationof The extra-offset property
3282
3283 @cindex posizionare gli oggetti
3284 @cindex posizionare i grob
3285 @cindex oggetti, posizionarli
3286 @cindex grob, posizionarli
3287
3288 La proprietà @code{extra-offset} fornisce un controllo completo
3289 sul posizionamento di un oggetto sia in orizzontale che in verticale.
3290
3291 Nell'esempio seguente, la seconda diteggiatura viene spostata un po' a
3292 sinistra e in basso di 1.8 spazi rigo:
3293
3294 @cindex Fingering, esempio di sovrascrittura
3295 @cindex proprietà extra-offset, esempio
3296 @cindex extra-offset, esempio
3297
3298 @lilypond[quote,fragment,relative=1,verbatim]
3299 \stemUp
3300 f4-5
3301 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3302 f4-5
3303 @end lilypond
3304
3305
3306 @node La proprietà positions
3307 @unnumberedsubsubsec La proprietà @code{positions}
3308 @translationof The positions property
3309
3310 @cindex controllo manuale di graffette dei gruppi irregolari, travature, legature di portamento e di frase
3311 @cindex travature dei gruppi irregolari, controllo manuale
3312 @cindex legature di portamento, controllo manuale
3313 @cindex legature di frase, controllo manuale
3314 @cindex travature, controllo manuale
3315
3316 La proprietà @code{positions} permette di controllare manualmente la
3317 posizione verticale e quindi l'inclinazione delle graffette dei
3318 gruppi irregolari, delle legature di portamento e di frase e
3319 delle travature.  Ecco un esempio in cui una legatura di frase
3320 e una legatura di portamento collidono:
3321
3322 @lilypond[quote,verbatim,ragged-right]
3323 \relative { a'8 \( ( a'16 ) a \) }
3324 @end lilypond
3325
3326 @cindex PhrasingSlur, esempio di sovrascrittura
3327 @cindex proprietà positions, esempio
3328 @cindex positions, esempio
3329
3330 @noindent
3331 Si potrebbero spostare più in alto le due estremità della legatura
3332 di frase.  Possiamo provare a impostare quella sinistra su 2.5 spazi
3333 sopra la linea centrale e quella destra a 4.5 spazi; LilyPond
3334 sceglierà la legatura di frase tra quelle candidate che hanno le
3335 estremità più vicine a queste:
3336
3337 @lilypond[quote,verbatim,fragment,ragged-right]
3338 \once \override PhrasingSlur.positions = #'(2.5 . 4.5)
3339 a'8 \( ( a''16 ) a'' \)
3340 @end lilypond
3341
3342 È migliorato, ma perché non abbassare un po' l'estremità destra
3343 della legatura di portamento?  Se provi vedrai che non può essere
3344 fatto in questo modo.  Il motivo è che non ci sono legature di
3345 portamento candidate più basse di quella già selezionata, quindi
3346 in questo caso la proprietà @code{positions} non può produrre
3347 effetti.  Tuttavia, legature di valore, di portamento e di frase
3348 @emph{possono} essere posizionate e disegnate in modo molto preciso
3349 se necessario.  Per sapere come fare si veda @ruser{Modifying ties and slurs}.
3350
3351 Ecco un altro esempio.  Vediamo che le travature collidono
3352 con le legature di valore:
3353
3354 @lilypond[quote,verbatim,fragment,ragged-right]
3355 {
3356   \time 4/2
3357   <<
3358     { c'1 ~ 2. e'8 f' }
3359     \\
3360     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
3361   >>
3362   <<
3363     { c'1 ~ 2. e'8 f' }
3364     \\
3365     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
3366   >>
3367 }
3368 @end lilypond
3369
3370 @noindent
3371 Si può risolvere spostando manualmente in su entrambi gli estremi della
3372 travatura dalla loro posizione di 1.81 spazi rigo sotto la linea
3373 centrale a, per esempio, 1:
3374
3375 @cindex Beam, esempio di sovrascrittura
3376 @cindex proprietà positions, esempio
3377 @cindex positions, esempio
3378
3379 @lilypond[quote,verbatim,fragment,ragged-right]
3380 {
3381   \time 4/2
3382   <<
3383     { c'1 ~ 2. e'8 f' }
3384     \\
3385     {
3386       \override Beam.positions = #'(-1 . -1)
3387       e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g''
3388     }
3389   >>
3390   <<
3391     { c'1 ~ 2. e'8 f' }
3392     \\
3393     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
3394   >>
3395 }
3396 @end lilypond
3397
3398 @noindent
3399 Come vedi, la sovrascrittura si applica anche alla seconda voce della seconda
3400 misura di otto note, ma a nessuna delle travature nella prima voce, nemmeno
3401 in quelle della seconda misura. Appena la sovrascrittura non è più attiva,
3402 deve essere ripristinato, come si vede.
3403
3404 @node La proprietà force-hshift
3405 @unnumberedsubsubsec La proprietà @code{force-hshift}
3406 @translationof The force-hshift property
3407
3408 Possiamo vedere ora come applicare le correzioni finali all'esempio di Chopin
3409 introdotto alla fine del paragrafo @ref{I'm hearing Voices}, che avevamo
3410 lasciato così:
3411
3412 @lilypond[quote,verbatim,fragment,ragged-right]
3413 \new Staff \relative {
3414   \key aes \major
3415   <<
3416     { c''2 aes4. bes8 }
3417     \\
3418     { <ees, c>2 des }
3419     \\
3420     \\
3421     { aes'2 f4 fes }
3422   >> |
3423   <c ees aes c>1 |
3424 }
3425 @end lilypond
3426
3427 @noindent
3428 La nota interna del primo accordo (ovvero il La bemolle della quarta
3429 voce) non deve essere allontanata dalla colonna della nota più
3430 alta, quindi usiamo @code{\shiftOff}.
3431
3432 Nel secondo accordo preferiamo che il Fa sia allineato al La bemolle e che
3433 la nota più grave sia posizionata leggermente più a destra, in modo da
3434 evitare la collisione dei gambi.  Per farlo dobbiamo impostare
3435 @code{force-hshift} nella colonna (@code{NoteColumn}) del Re bemolle
3436 grave in modo che si sposti a destra di mezzo spazio di rigo e  @code{force-hshift}
3437 per il Fa su zero.  Si usa @code{\once} per evitare che tali impostazioni
3438 si propaghino oltre il momento musicale immediato, sebbene in questo
3439 piccolo esempio il @code{\once} e il secondo @code{\override} nella quarta
3440 voce potrebbero essere omessi.  Ma non sarebbe un esempio di buona pratica.
3441
3442 Ecco il risultato finale:
3443
3444 @cindex NoteColumn, esempio di sovrascrittura
3445 @cindex proprietà force-hshift, esempio
3446 @cindex force-hshift, esempio
3447
3448 @lilypond[quote,verbatim,fragment,ragged-right]
3449 \new Staff \relative {
3450   \key aes \major
3451   <<
3452     { c''2 aes4. bes8 }
3453     \\
3454     { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des }
3455     \\
3456     \\
3457     { \once \shiftOff aes'2 \once \shiftOff f4 fes }
3458   >> |
3459   <c ees aes c>1 |
3460 }
3461 @end lilypond
3462
3463
3464 @node Esempio musicale
3465 @subsection Esempio musicale
3466 @translationof Real music example
3467
3468 Completiamo questa sezione delle modifiche (@emph{tweak}) mostrando passo passo
3469 come affrontare un esempio complesso che necessita varie modifiche per
3470 poter raggiungere l'aspetto desiderato.  L'esempio è stato scelto
3471 appositamente per mostrare come usare la guida alla Notazione per
3472 risolvere problemi inusuali di notazione.  Non rispecchia l'uso
3473 abituale di LilyPond, quindi non farti scoraggiare da queste difficoltà!
3474 Per fortuna problemi come questi sono molto rari!
3475
3476 L'esempio è tratto dalla Première Ballade op. 23 di Chopin e va
3477 dalla battuta 6 alla 9, la transizione dal Lento iniziale al Moderato.
3478 Vediamo prima come vogliamo che l'output appaia; per evitare di
3479 complicare troppo l'esempio abbiamo però tolto le dinamiche, le diteggiature
3480 e le pedalizzazioni.
3481
3482 @c The following should appear as music without code
3483 @c This example should not be indexed
3484 @c line-width ensures no break
3485 @lilypond[quote,ragged-right,line-width=6\in]
3486 rhMusic = \relative {
3487   \new Voice {
3488     r2 c''4.\( g8 |
3489     \once \override Tie.staff-position = #3.5
3490     bes1~ |
3491     \bar "||"
3492     \time 6/4
3493     \mergeDifferentlyHeadedOn
3494     \mergeDifferentlyDottedOn
3495     bes2.\tempo "Moderato" r8
3496     <<
3497       { c,8 d fis bes a }
3498       \new Voice {
3499         \voiceTwo
3500         c,8~
3501         % Riposiziona il c2 a destra della nota unita
3502         \once \override NoteColumn.force-hshift = #1.0
3503         % Sposta il c2 fuori dalla colonna della nota principale
3504         % in modo che l'unione di note (merge) funzioni
3505         \shiftOnn
3506         c2
3507       }
3508       \new Voice {
3509         \voiceThree
3510         s8
3511         % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3512         \stemDown
3513         % Il gambo di d2 deve essere invisibile
3514         \tweak Stem.transparent ##t
3515         d2
3516       }
3517       \new Voice {
3518         \voiceFour
3519         s4 fis4.
3520       }
3521     >> |
3522     \mergeDifferentlyHeadedOff
3523     \mergeDifferentlyDottedOff
3524     g2.\)
3525   }
3526 }
3527
3528 lhMusic = \relative {
3529   r2 <c' g ees>2( |
3530   <d g, d>1)\arpeggio |
3531   r2. d,,4 r4 r |
3532   r4
3533 }
3534
3535 \score {
3536   \new PianoStaff <<
3537     \new Staff = "RH"  <<
3538       \key g \minor
3539       \rhMusic
3540     >>
3541     \new Staff = "LH" <<
3542       \key g \minor
3543       \clef "bass"
3544       \lhMusic
3545     >>
3546   >>
3547 }
3548 @end lilypond
3549
3550 Vediamo che la parte della mano destra nella terza battuta
3551 richiede quattro voci.  Si tratta delle cinque crome unite da travatura,
3552 il Do legato, la minima di Re che è unita alla croma di
3553 Re, e la semiminima puntata del Fa diesis, anch'essa unita
3554 alla croma della stessa altezza.  Tutto il resto è su una
3555 voce singola, quindi il sistema più semplice è introdurre queste
3556 ulteriori voci temporaneamente, quando sono richieste.  Se ti
3557 sei dimenticato come fare, rileggi i paragrafi @ref{I'm hearing Voices} e
3558 @ref{Explicitly instantiating voices}.  In questo caso scegliamo di
3559 usare per il passaggio polifonico le voci definite esplicitamente, dato
3560 che LilyPond riesce a evitare meglio le collisioni se tutte le voci
3561 sono definite esplicitamente in questo modo.
3562
3563 Dunque iniziamo con l'inserire le note in due variabili, impostare la
3564 struttura del rigo in un blocco \score e vedere che cosa LilyPond
3565 produce senza modifiche manuali:
3566
3567 @c line-width ensures no break
3568 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3569 rhMusic = \relative {
3570   \new Voice {
3571     r2 c''4. g8 |
3572     bes1~ |
3573     \time 6/4
3574     bes2. r8
3575     % Inizia la sezione polifonica a quattro voci
3576     <<
3577       { c,8 d fis bes a }  % continuazione della voce principale
3578       \new Voice {
3579         \voiceTwo
3580         c,8~ 2
3581       }
3582       \new Voice {
3583         \voiceThree
3584         s8 d2
3585       }
3586       \new Voice {
3587         \voiceFour
3588         s4 fis4.
3589       }
3590     >> |
3591     g2.  % continuazione della voce principale
3592   }
3593 }
3594
3595 lhMusic = \relative {
3596   r2 <c' g ees>2 |
3597   <d g, d>1 |
3598   r2. d,,4 r4 r |
3599   r4
3600 }
3601
3602 \score {
3603   \new PianoStaff <<
3604     \new Staff = "RH"  <<
3605       \key g \minor
3606       \rhMusic
3607     >>
3608     \new Staff = "LH" <<
3609       \key g \minor
3610       \clef "bass"
3611       \lhMusic
3612     >>
3613   >>
3614 }
3615 @end lilypond
3616
3617 Le note sono giuste ma l'aspetto è ben lontano dall'essere
3618 soddisfacente.  La legatura collide col nuovo segno di tempo,
3619 alcune note non sono accorpate e mancano vari elementi
3620 della notazione.  Partiamo dalle cose più semplici.  Possiamo
3621 aggiungere la legatura di portamento della mano sinistra e la legatura
3622 di frase della mano destra, dato che queste sono state già trattate
3623 nel Tutorial.  In questo modo abbiamo:
3624
3625 @c line-width ensures no break
3626 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3627 rhMusic = \relative {
3628   \new Voice {
3629     r2 c''4.\( g8 |
3630     bes1~ |
3631     \time 6/4
3632     bes2. r8
3633     % Inizia la sezione polifonica a quattro voci
3634     <<
3635       { c,8 d fis bes a }  % continuazione della voce principale
3636       \new Voice {
3637         \voiceTwo
3638         c,8~ 2
3639       }
3640       \new Voice {
3641         \voiceThree
3642         s8 d2
3643       }
3644       \new Voice {
3645         \voiceFour
3646         s4 fis4.
3647       }
3648     >> |
3649     g2.\)  % continuazione della voce principale
3650   }
3651 }
3652
3653 lhMusic = \relative {
3654   r2 <c' g ees>2( |
3655   <d g, d>1) |
3656   r2. d,,4 r4 r |
3657   r4
3658 }
3659
3660 \score {
3661   \new PianoStaff <<
3662     \new Staff = "RH"  <<
3663       \key g \minor
3664       \rhMusic
3665     >>
3666     \new Staff = "LH" <<
3667       \key g \minor
3668       \clef "bass"
3669       \lhMusic
3670     >>
3671   >>
3672 }
3673 @end lilypond
3674
3675 Ora la prima battuta è corretta.  La seconda battuta contiene un arpeggio e
3676 è terminata da una stanghetta doppia.  Dato che non sono stati menzionati
3677 in questo manuale di Apprendimento, come possiamo ottenerli?  Dobbiamo
3678 andare a vedere nella guida alla Notazione.  Cercando nell'indice
3679 i termini @qq{arpeggio} e @qq{stanghetta}, scopriamo rapidamente che un arpeggio
3680 viene prodotto posponendo @code{\arpeggio} a un accordo e che la stanghetta
3681 doppia si ottiene col comando @code{\bar "||"}.  Questo è stato facile.  Ora
3682 dobbiamo correggere la collisione della legatura di valore con l'indicazione di tempo.
3683 Il modo migliore è spostare la legatura verso l'alto.  Lo spostamento degli oggetti
3684 è stato trattato prima in @ref{Moving objects}, dove si dice che gli oggetti
3685 posizionati relativamente al rigo possono essere spostati verticalmente
3686 sovrascrivendo la proprietà @code{staff-position}, specificata in metà spazi-rigo
3687 rispetto alla linea centrale del rigo.  Dunque la seguente sovrascrittura
3688 posizionata proprio prima della prima nota della legatura sposta la legatura
3689 3.5 mezzi spazi di rigo sopra la linea centrale:
3690
3691 @code{\once \override Tie.staff-position = #3.5}
3692
3693 Questo completa la seconda battuta:
3694
3695 @c line-width ensures no break
3696 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3697 rhMusic = \relative {
3698   \new Voice {
3699     r2 c''4.\( g8 |
3700     \once \override Tie.staff-position = #3.5
3701     bes1~ |
3702     \bar "||"
3703     \time 6/4
3704     bes2. r8
3705     % Inizia la sezione polifonica a quattro voci
3706     <<
3707       { c,8 d fis bes a }  % continuazione della voce principale
3708       \new Voice {
3709         \voiceTwo
3710         c,8~ 2
3711       }
3712       \new Voice {
3713         \voiceThree
3714         s8 d2
3715       }
3716       \new Voice {
3717         \voiceFour
3718         s4 fis4.
3719       }
3720     >> |
3721     g2.\)  % continuazione della voce principale
3722   }
3723 }
3724
3725 lhMusic = \relative {
3726   r2 <c' g ees>2( |
3727   <d g, d>1)\arpeggio |
3728   r2. d,,4 r4 r |
3729   r4
3730 }
3731
3732 \score {
3733   \new PianoStaff <<
3734     \new Staff = "RH"  <<
3735       \key g \minor
3736       \rhMusic
3737     >>
3738     \new Staff = "LH" <<
3739       \key g \minor
3740       \clef "bass"
3741       \lhMusic
3742     >>
3743   >>
3744 }
3745 @end lilypond
3746
3747 Proseguiamo con la terza battuta e l'inizio della sezione del Moderato.  Nel
3748 tutorial abbiamo visto come aggiungere un'indicazione di tempo col comando
3749 @code{\tempo}, quindi aggiungere @qq{Moderato} è facile.  Ma come facciamo
3750 ad accorpare le note appartenenti a voci diverse?  Ancora una volta
3751 dobbiamo rivolgerci alla guida alla Notazione per un aiuto.  Una ricerca
3752 del termine @qq{accorpare} (in inglese @emph{merge}) nell'indice della guida
3753 ci porta rapidamente al paragrafo @ruser{Collision resolution}, dove
3754 troviamo i comandi per allineare le note con teste e punti diversi.  Nel
3755 nostro esempio abbiamo bisogno di accorpare entrambi i tipi di note per la
3756 durata della sezione polifonica della terza battuta.  Dunque, usando le
3757 informazioni trovate nella guida alla Notazione, aggiungiamo
3758
3759 @example
3760 \mergeDifferentlyHeadedOn
3761 \mergeDifferentlyDottedOn
3762 @end example
3763
3764 @noindent
3765 all'inizio di questa sezione e
3766
3767 @example
3768 \mergeDifferentlyHeadedOff
3769 \mergeDifferentlyDottedOff
3770 @end example
3771
3772 @noindent
3773 alla fine, ottenendo:
3774
3775 @c line-width ensures no break
3776 @lilypond[quote,ragged-right,line-width=6\in]
3777 rhMusic = \relative {
3778   \new Voice {
3779     r2 c''4.\( g8 |
3780     \once \override Tie.staff-position = #3.5
3781     bes1~ |
3782     \bar "||"
3783     \time 6/4
3784     bes2.\tempo "Moderato" r8
3785     \mergeDifferentlyHeadedOn
3786     \mergeDifferentlyDottedOn
3787     % Inizia la sezione polifonica a quattro voci
3788     <<
3789       { c,8 d fis bes a }  % continuazione della voce principale
3790       \new Voice {
3791         \voiceTwo
3792         c,8~ 2
3793       }
3794       \new Voice {
3795         \voiceThree
3796         s8 d2
3797       }
3798       \new Voice {
3799         \voiceFour
3800         s4 fis4.
3801       }
3802     >> |
3803     \mergeDifferentlyHeadedOff
3804     \mergeDifferentlyDottedOff
3805     g2.\)  % continuazione della voce principale
3806   }
3807 }
3808
3809 lhMusic = \relative {
3810   r2 <c' g ees>2( |
3811   <d g, d>1)\arpeggio |
3812   r2. d,,4 r4 r |
3813   r4
3814 }
3815
3816 \score {
3817   \new PianoStaff <<
3818     \new Staff = "RH"  <<
3819       \key g \minor
3820       \rhMusic
3821     >>
3822     \new Staff = "LH" <<
3823       \key g \minor
3824       \clef "bass"
3825       \lhMusic
3826     >>
3827   >>
3828 }
3829 @end lilypond
3830
3831 Queste sovrascritture hanno accorpato i due Fa diesis, ma non i due
3832 Re.  Perché?  La risposta si trova nella stessa sezione della
3833 guida alla Notazione: le note da unire devono avere i gambi in
3834 direzioni opposte e due note non possono essere accorpate se c'è
3835 una terza nota nella stessa colonna.  In questo esempio i due Re
3836 hanno entrambi i gambi in su e c'è una terza nota, il Do. Sappiamo
3837 come cambiare la direzione dei gambi con @code{\stemDown} e la
3838 guida alla Notazione ci dice anche come spostare il Do, applicando
3839 uno spostamento con uno dei comandi @code{\shift}.  Ma quale? Il Do
3840 si trova nella seconda voce che ha lo spostamento (@emph{shift}) disattivato,
3841 mentre i due Re sono nella prima e nella terza voce, che ce l'hanno
3842 rispettivamente disattivato e attivato.  Dunque dobbiamo distanziare il
3843 Do di un ulteriore livello usando @code{\shiftOnn} per evitare che
3844 interferisca con i due Re.  Applicando queste modifiche abbiamo:
3845
3846 @cindex Tie, esempio di sovrascrittura
3847 @cindex proprietà staff-position, esempio
3848 @cindex staff-position, esempio
3849
3850 @c line-width ensures no break
3851 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3852 rhMusic = \relative {
3853   \new Voice {
3854     r2 c''4.\( g8 |
3855     \once \override Tie.staff-position = #3.5
3856     bes1~ |
3857     \bar "||"
3858     \time 6/4
3859     bes2.\tempo "Moderato" r8
3860     \mergeDifferentlyHeadedOn
3861     \mergeDifferentlyDottedOn
3862     % Inizia la sezione polifonica a quattro voci
3863     <<
3864       { c,8 d fis bes a }  % continuazione della voce principale
3865       \new Voice {
3866         \voiceTwo
3867         % Sposta il c2 fuori dalla colonna della nota principale
3868         % in modo che l'unione di note funzioni
3869         c,8~ \shiftOnn c2
3870       }
3871       \new Voice {
3872         \voiceThree
3873         % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3874         s8 \stemDown d2
3875       }
3876       \new Voice {
3877         \voiceFour
3878         s4 fis4.
3879       }
3880     >> |
3881     \mergeDifferentlyHeadedOff
3882     \mergeDifferentlyDottedOff
3883     g2.\)  % continuazione della voce principale
3884   }
3885 }
3886
3887 lhMusic = \relative {
3888   r2 <c' g ees>2( |
3889   <d g, d>1)\arpeggio |
3890   r2. d,,4 r4 r |
3891   r4
3892 }
3893
3894 \score {
3895   \new PianoStaff <<
3896     \new Staff = "RH"  <<
3897       \key g \minor
3898       \rhMusic
3899     >>
3900     \new Staff = "LH" <<
3901       \key g \minor
3902       \clef "bass"
3903       \lhMusic
3904     >>
3905   >>
3906 }
3907 @end lilypond
3908
3909 Ci siamo quasi, restano solo due problemi: il gambo in giù del
3910 Re unito non ci dovrebbe essere e il Do dovrebbe essere posizionato
3911 a destra dei Re.  Sappiamo come fare grazie alle modifiche precedenti:
3912 rendiamo il gambo trasparente e spostiamo il Do con la proprietà
3913 @code{force-hshift}.  Ecco il risultato finale:
3914
3915 @cindex NoteColumn, esempio di sovrascrittura
3916 @cindex proprietà force-hshift, esempio
3917 @cindex force-hshift, esempio
3918 @cindex Stem, esempio di sovrascrittura
3919 @cindex proprietà transparent, esempio
3920 @cindex transparent, esempio
3921
3922 @c line-width ensures no break
3923 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3924 rhMusic = \relative {
3925   \new Voice {
3926     r2 c''4.\( g8 |
3927     \once \override Tie.staff-position = #3.5
3928     bes1~ |
3929     \bar "||"
3930     \time 6/4
3931     bes2.^\markup { \bold "Moderato" } r8
3932     \mergeDifferentlyHeadedOn
3933     \mergeDifferentlyDottedOn
3934     % Inizia la sezione polifonica a quattro voci
3935     <<
3936       { c,8 d fis bes a }  % continuazione della voce principale
3937       \new Voice {
3938         \voiceTwo
3939         c,8~
3940         % Riposiziona il c2 a destra della nota unita
3941         \once \override NoteColumn.force-hshift = #1.0
3942         % Sposta il c2 fuori dalla colonna della nota principale
3943         % in modo che l'unione di note funzioni
3944         \shiftOnn
3945         c2
3946       }
3947       \new Voice {
3948         \voiceThree
3949         s8
3950         % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3951         \stemDown
3952         % Il gambo di d2 deve essere invisibile
3953         \tweak Stem.transparent ##t
3954         d2
3955       }
3956       \new Voice {
3957         \voiceFour
3958         s4 fis4.
3959       }
3960     >> |
3961     \mergeDifferentlyHeadedOff
3962     \mergeDifferentlyDottedOff
3963     g2.\)  % continuazione della voce principale
3964   }
3965 }
3966
3967 lhMusic = \relative {
3968   r2 <c' g ees>2( |
3969   <d g, d>1)\arpeggio |
3970   r2. d,,4 r4 r |
3971   r4
3972 }
3973
3974 \score {
3975   \new PianoStaff <<
3976     \new Staff = "RH"  <<
3977       \key g \minor
3978       \rhMusic
3979     >>
3980     \new Staff = "LH" <<
3981       \key g \minor
3982       \clef "bass"
3983       \lhMusic
3984     >>
3985   >>
3986 }
3987 @end lilypond
3988
3989
3990 @node Altre modifiche
3991 @section Altre modifiche
3992 @translationof Further tweaking
3993
3994 @menu
3995 * Altri usi delle modifiche con \tweak::
3996 * Uso delle variabili per modificare la formattazione::
3997 * Fogli di stile::
3998 * Altre fonti di informazione::
3999 * Modifiche avanzate con Scheme::
4000 @end menu
4001
4002 @node Altri usi delle modifiche con \tweak
4003 @subsection Altri usi delle modifiche con @code{\tweak}
4004 @translationof Other uses for tweaks
4005
4006 @menu
4007 * Legature di valore tra note di voci diverse::
4008 * Simulare una corona nel MIDI::
4009 @end menu
4010
4011 @cindex rimuovere gli oggetti
4012 @cindex oggetti, rimuoverli
4013
4014 @node Legature di valore tra note di voci diverse
4015 @unnumberedsubsubsec Legature di valore tra note di voci diverse
4016 @translationof Tying notes across voices
4017
4018 @cindex legature di valore tra note di voci diverse
4019
4020 L'esempio seguente mostra come unire con legature di valore
4021 note appartenenti a voci diverse.  Di norma, solo le note nella
4022 stessa voce possono essere unite da una legatura di valore.
4023 Se si usano due voci con le note legate in una voce
4024
4025 @lilypond[quote]
4026 << { b'8~ 8\noBeam } \\ { b'8[ g'] } >>
4027 @end lilypond
4028
4029 @noindent
4030 e si toglie il primo gambo di quella voce e la sua coda, la legatura sembra
4031 attraversare le voci:
4032
4033 @cindex Stem, esempio di rimozione
4034 @cindex Flag, esempio di rimozione
4035 @cindex @code{\omit}, esempio
4036
4037 @lilypond[quote,verbatim]
4038 <<
4039   {
4040     \once \omit Stem
4041     \once \omit Flag
4042     b'8~ 8\noBeam
4043   }
4044 \\
4045   { b'8[ g'] }
4046 >>
4047 @end lilypond
4048
4049 @seealso
4050 Manuale di apprendimento:
4051 @ref{The once prefix,,Il prefisso @code{@bs{}once}},
4052 @ref{The stencil property}.
4053
4054
4055 @node Simulare una corona nel MIDI
4056 @unnumberedsubsubsec Simulare una corona nel MIDI
4057 @translationof Simulating a fermata in MIDI
4058
4059 @cindex proprietà stencil, uso della
4060 @cindex corona, usarla nel MIDI
4061
4062 Per gli oggetti esterni al rigo è di solito preferibile sovrascrivere
4063 la proprietà @code{stencil} piuttosto che la proprietà @code{transparent}
4064 dell'oggetto se si desidera toglierlo dall'output.  Se si imposta la
4065 proprietà @code{stencil} su @code{#f} l'oggetto verrà completamente
4066 rimosso dall'output e quindi non potrà influenzare la disposizione
4067 di altri oggetti posizionati rispetto a esso.
4068
4069 Ad esempio, se volessimo modificare il segno di metronomo solo per
4070 simulare una corona nel MIDI, non vorremmo che il segno apparisse
4071 nella partitura né vorremmo influenzare la spaziatura tra i due
4072 sistemi o la posizione di annotazioni adiacenti nel rigo.  Dunque,
4073 il modo migliore è impostare la proprietà @code{stencil} su
4074 @code{#f}.  Ecco l'effetto dei due metodi:
4075
4076 @cindex MetronomeMark, esempio di sovrascrittura
4077 @cindex proprietà transparent, esempio
4078 @cindex transparent, esempio
4079
4080 @lilypond[quote,verbatim,ragged-right]
4081 \score {
4082   \relative {
4083     % Indicazione di tempo visibile
4084     \tempo 4=120
4085     a'4 a a
4086     \once \hide Score.MetronomeMark
4087     % Indicazione di tempo invisibile per allungare la fermata nel MIDI
4088     \tempo 4=80
4089     a4\fermata |
4090     % Nuovo tempo per la sezione successiva
4091     \tempo 4=100
4092     a4 a a a |
4093   }
4094   \layout { }
4095   \midi { }
4096 }
4097 @end lilypond
4098
4099 @cindex MetronomeMark, esempio di sovrascrittura
4100 @cindex proprietà stencil, esempio
4101 @cindex stencil, esempio
4102
4103 @lilypond[quote,verbatim,ragged-right]
4104 \score {
4105   \relative {
4106     % Indicazione di tempo visibile
4107     \tempo 4=120
4108     a'4 a a
4109     \once \omit Score.MetronomeMark
4110     % Indicazione di tempo invisibile per allungare la fermata nel MIDI
4111     \tempo 4=80
4112     a4\fermata |
4113     % Nuovo tempo per la sezione successiva
4114     \tempo 4=100
4115     a4 a a a |
4116   }
4117   \layout { }
4118   \midi { }
4119 }
4120 @end lilypond
4121
4122 @noindent
4123 Entrambi i metodi tolgono dalla partitura l'indicazione metronomica
4124 ed entrambi cambiano il tempo del MIDI come volevamo, ma nel primo esempio l'indicazione
4125 metronomica trasparente sposta troppo in alto
4126 l'indicazione di tempo successiva, mentre nel secondo esempio, dove
4127 viene tolto lo stampo (@emph{stencil}), ciò non accade.
4128
4129 @seealso
4130 Glossario musicale:
4131 @rglosnamed{system,sistema}.
4132
4133 @node Uso delle variabili per modificare la formattazione
4134 @subsection Uso delle variabili per modificare la formattazione
4135 @translationof Using variables for layout adjustments
4136
4137 @cindex variabili, usarle per le sovrascritture
4138 @cindex sovrascritture, usare le variabili per
4139 @cindex formattazione, usare le variabili per modificare la
4140
4141 I comandi di sovrascrittura sono spesso lunghi e tediosi da
4142 scrivere, e devono essere assolutamente corretti.  Se si usa
4143 più volte la stessa sovrascrittura conviene definire una
4144 variabile che la contenga.
4145
4146 Immaginiamo di voler enfatizzare certe parole del testo usando
4147 grassetto e corsivo.  I comandi @code{\italic} (corsivo) e @code{\bold}
4148 (grassetto) funzionano all'interno del testo solo se inclusi,
4149 insieme alla parola o alle parole da modificare, in un blocco
4150 @code{\markup}: dunque sono scomodi da inserire.  Dovendo inserire
4151 le parole stesse non si possono usare variabili semplici.  Come
4152 alternativa possiamo usare i comandi @code{\override} e @code{\revert}?
4153
4154 @example
4155 @code{\override Lyrics.LyricText.font-shape = #'italic}
4156 @code{\override Lyrics.LyricText.font-series = #'bold}
4157
4158 @code{\revert Lyrics.LyricText.font-shape}
4159 @code{\revert Lyrics.LyricText.font-series}
4160 @end example
4161
4162 Anche questi sarebbero molto noiosi da inserire se ci fossero
4163 molte parole che richiedono enfasi.  Ma possiamo inserirli
4164 in due variabili e poi usare queste per le parole da enfatizzare.
4165 Un altro vantaggio dell'uso di variabili per queste sovrascritture
4166 è che gli spazi intorno al punto non sono necessari, perché non
4167 sono interpretati direttamente in @code{\lyricmode}.  Ecco un
4168 esempio, anche se nella pratica comune avremmo scelto dei nomi
4169 più brevi per le variabili in modo da poterle inserire più
4170 rapidamente:
4171
4172 @cindex LyricText, esempio di sovrascrittura
4173 @cindex proprietà font-shape, esempio
4174 @cindex font-shape, esempio
4175 @cindex proprietà font-series, esempio
4176 @cindex font-series, esempio
4177
4178 @lilypond[quote,verbatim]
4179 emphasize = {
4180   \override Lyrics.LyricText.font-shape = #'italic
4181   \override Lyrics.LyricText.font-series = #'bold
4182 }
4183
4184 normal = {
4185   \revert Lyrics.LyricText.font-shape
4186   \revert Lyrics.LyricText.font-series
4187 }
4188
4189 global = { \key c \major \time 4/4 \partial 4 }
4190
4191 SopranoMusic = \relative { c'4 | e4. e8 g4 g    | a4   a   g  }
4192 AltoMusic    = \relative { c'4 | c4. c8 e4 e    | f4   f   e  }
4193 TenorMusic   = \relative  { e4 | g4. g8 c4.  b8 | a8 b c d e4 }
4194 BassMusic    = \relative  { c4 | c4. c8 c4 c    | f8 g a b c4 }
4195
4196 VerseOne = \lyrics {
4197   E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
4198 }
4199
4200 VerseTwo = \lyricmode {
4201   O | \once \emphasize Christ, whose voice the | wa -- ters heard,
4202 }
4203
4204 VerseThree = \lyricmode {
4205   O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
4206 }
4207
4208 VerseFour = \lyricmode {
4209   O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
4210 }
4211
4212 \score {
4213   \new ChoirStaff <<
4214     \new Staff <<
4215       \clef "treble"
4216       \new Voice = "Soprano"  { \voiceOne \global \SopranoMusic }
4217       \new Voice = "Alto" { \voiceTwo \AltoMusic }
4218       \new Lyrics \lyricsto "Soprano" { \VerseOne }
4219       \new Lyrics \lyricsto "Soprano" { \VerseTwo }
4220       \new Lyrics \lyricsto "Soprano" { \VerseThree }
4221       \new Lyrics \lyricsto "Soprano" { \VerseFour }
4222     >>
4223     \new Staff <<
4224       \clef "bass"
4225       \new Voice = "Tenor" { \voiceOne \TenorMusic }
4226       \new Voice = "Bass"  { \voiceTwo \BassMusic }
4227     >>
4228   >>
4229 }
4230 @end lilypond
4231
4232
4233 @node Fogli di stile
4234 @subsection Fogli di stile
4235 @translationof Style sheets
4236
4237 L'output prodotto da LilyPond può essere ampiamente modificato, come
4238 abbiamo visto nel capitolo @ref{Tweaking output}.  Ma se avessi molti
4239 file di input a cui voler applicare delle modifiche?  O se volessi
4240 semplicemente separare le modifiche dalla musica vera e propria?
4241 È molto semplice.
4242
4243 Prendiamo un esempio.  Non ti preoccupare se non capisci le
4244 parti che hanno @code{#()}; verranno spiegate nel capitolo
4245 @ref{Advanced tweaks with Scheme}.
4246
4247 @lilypond[quote,verbatim,ragged-right]
4248 mpdolce =
4249   \tweak self-alignment-X #-0.6
4250   #(make-dynamic-script
4251     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4252
4253 inst =
4254 #(define-music-function
4255      (string)
4256      (string?)
4257    #{ <>^\markup \bold \box #string #})
4258
4259 \relative {
4260   \tempo 4=50
4261   a'4.\mpdolce d8 cis4--\glissando a |
4262   b4 bes a2 |
4263   \inst "Clarinet"
4264   cis4.\< d8 e4 fis |
4265   g8(\! fis)-. e( d)-. cis2 |
4266 }
4267 @end lilypond
4268
4269 Facciamo qualcosa a proposito delle definizioni di @code{mpdolce} e
4270 @code{inst}.  Producono l'output che desideriamo, ma potremmo volerle
4271 usare in un altro brano.  Potremmo semplicemente copiarle e incollarle
4272 in cima a ogni file, ma sarebbe una seccatura e lascerebbe queste
4273 definizioni nel file di input; personalmente trovo tutti quei @code{#()}
4274 piuttosto brutti, dunque nascondiamoli in un altro file:
4275
4276 @example
4277 %%% salva queste righe in un file chiamato "definitions.ily"
4278 mpdolce =
4279   \tweak self-alignment-X #-0.6
4280   #(make-dynamic-script
4281     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4282
4283
4284 inst =
4285 #(define-music-function
4286      (string)
4287      (string?)
4288    #@{ <>^\markup \bold \box #string #@})
4289 @end example
4290
4291 Ci riferiremo a questo file tramite il comando @code{\include} in cima
4292 al file dove c'è la musica.  Si usa l'estensione @file{.ily} per distinguere
4293 il file da includere, che non intendiamo compilare da solo, dal file principale.
4294 Ora modifichiamo la musica (e salviamo questo file come @file{music.ly}).
4295
4296 @c  We have to do this awkward example/lilypond-non-verbatim
4297 @c  because we can't do the \include stuff in the manual.
4298
4299 @example
4300 \include "definitions.ily"
4301
4302 \relative @{
4303   \tempo 4=50
4304   a'4.\mpdolce d8 cis4--\glissando a |
4305   b4 bes a2 |
4306   \inst "Clarinet"
4307   cis4.\< d8 e4 fis |
4308   g8(\! fis)-. e( d)-. cis2 |
4309 @}
4310 @end example
4311
4312 @lilypond[quote,ragged-right]
4313 mpdolce =
4314   \tweak self-alignment-X #-0.6
4315   #(make-dynamic-script
4316     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4317
4318 inst =
4319 #(define-music-function
4320      (string)
4321      (string?)
4322    #{ <>^\markup \bold \box #string #})
4323
4324 \relative {
4325   \tempo 4=50
4326   a'4.\mpdolce d8 cis4--\glissando a |
4327   b4 bes a2 |
4328   \inst "Clarinet"
4329   cis4.\< d8 e4 fis |
4330   g8(\! fis)-. e( d)-. cis2 |
4331 }
4332 @end lilypond
4333
4334 L'aspetto è migliore, ma facciamo ancora qualche modifica.  Il glissando si
4335 vede appena, rendiamolo quindi più spesso e più vicino alle teste di nota.
4336 Mettiamo l'indicazione metronomica al di sopra della chiave invece che della prima
4337 nota.  E, infine, dato che il mio professore di composizione odia l'indicazione
4338 di tempo @qq{C}, usiamo @qq{4/4} al suo posto.
4339
4340 Ma non devi cambiare @file{music.ly} bensì @file{definitions.ily}, in
4341 questo modo:
4342
4343 @example
4344 %%%  definitions.ily
4345 mpdolce =
4346   \tweak self-alignment-X #-0.6
4347   #(make-dynamic-script
4348     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4349
4350 inst =
4351 #(define-music-function
4352      (string)
4353      (string?)
4354    #@{ <>^\markup \bold \box #string #@})
4355
4356 \layout@{
4357   \context @{
4358     \Score
4359     \override MetronomeMark.extra-offset = #'(-5 . 0)
4360     \override MetronomeMark.padding = #'3
4361   @}
4362   \context @{
4363     \Staff
4364     \override TimeSignature.style = #'numbered
4365   @}
4366   \context @{
4367     \Voice
4368     \override Glissando.thickness = #3
4369     \override Glissando.gap = #0.1
4370   @}
4371 @}
4372 @end example
4373
4374 @lilypond[quote,ragged-right]
4375 mpdolce =
4376   \tweak self-alignment-X #-0.6
4377   #(make-dynamic-script
4378     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4379
4380 inst =
4381 #(define-music-function
4382      (string)
4383      (string?)
4384    #{ <>^\markup \bold \box #string #})
4385
4386 \layout{
4387   \context {
4388     \Score
4389     \override MetronomeMark.extra-offset = #'(-5 . 0)
4390     \override MetronomeMark.padding = #'3
4391   }
4392   \context {
4393     \Staff
4394     \override TimeSignature.style = #'numbered
4395   }
4396   \context {
4397     \Voice
4398     \override Glissando.thickness = #3
4399     \override Glissando.gap = #0.1
4400   }
4401 }
4402
4403 \relative {
4404   \tempo 4=50
4405   a'4.\mpdolce d8 cis4--\glissando a |
4406   b4 bes a2 |
4407   \inst "Clarinet"
4408   cis4.\< d8 e4 fis |
4409   g8(\! fis)-. e( d)-. cis2 |
4410 }
4411 @end lilypond
4412
4413 Ora l'aspetto è decisamente migliore!  Supponiamo ora di voler pubblicare
4414 questo brano.  Il mio professore di composizione non ama il segno di
4415 tempo @qq{C}, mentre a me piace.  Copiamo l'attuale file @file{definitions.ily}
4416 in @file{web-publish.ily} e modifichiamolo.  Dato che questa musica
4417 verrà distribuita su un pdf da leggere a schermo, aumenteremo anche
4418 la dimensione complessiva dell'output.
4419
4420 @example
4421 %%%  web-publish.ily
4422 mpdolce =
4423   \tweak self-alignment-X #-0.6
4424   #(make-dynamic-script
4425     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4426
4427 inst =
4428 #(define-music-function
4429      (string)
4430      (string?)
4431    #@{ <>^\markup \bold \box #string #@})
4432
4433 #(set-global-staff-size 23)
4434
4435 \layout@{
4436   \context @{
4437     \Score
4438     \override MetronomeMark.extra-offset = #'(-5 . 0)
4439     \override MetronomeMark.padding = #'3
4440   @}
4441   \context @{
4442     \Staff
4443   @}
4444   \context @{
4445     \Voice
4446     \override Glissando.thickness = #3
4447     \override Glissando.gap = #0.1
4448   @}
4449 @}
4450 @end example
4451
4452 @lilypond[quote,ragged-right]
4453 mpdolce =
4454   \tweak self-alignment-X #-0.6
4455   #(make-dynamic-script
4456     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4457
4458 inst =
4459 #(define-music-function
4460      (string)
4461      (string?)
4462    #{ <>^\markup \bold \box #string #})
4463
4464 #(set-global-staff-size 23)
4465
4466 \layout{
4467   \context { \Score
4468     \override MetronomeMark.extra-offset = #'(-5 . 0)
4469     \override MetronomeMark.padding = #'3
4470   }
4471   \context { \Voice
4472     \override Glissando.thickness = #3
4473     \override Glissando.gap = #0.1
4474   }
4475 }
4476
4477 \relative {
4478   \tempo 4=50
4479   a'4.\mpdolce d8 cis4--\glissando a |
4480   b4 bes a2 |
4481   \inst "Clarinet"
4482   cis4.\< d8 e4 fis |
4483   g8(\! fis)-. e( d)-. cis2 |
4484 }
4485 @end lilypond
4486
4487 Nel file che contiene la musica non rimane che sostituire
4488 @code{\include "definitions.ily"} con
4489 @code{\include "web-publish.ily"}.  Potremmo usare un sistema
4490 ancora più conveniente: creare un file @file{definitions.ily} che
4491 contenga solo le definizioni di @code{mpdolce} e @code{inst}, un file
4492 @file{web-publish.ily} che contenga solo la sezione @code{\layout}
4493 vista prima, e un file @file{university.ily} che contenga solo le
4494 modifiche necessarie per produrre l'output preferito dal mio
4495 professore.  L'inizio di @file{music.ly} apparirebbe così:
4496
4497 @example
4498 \include "definitions.ily"
4499
4500 %%% Una sola di queste linee deve essere commentata
4501 \include "web-publish.ily"
4502 %\include "university.ily"
4503 @end example
4504
4505 Questo approccio può essere utile anche se si sta creando un
4506 insieme di parti.  Uso una mezza dozzina di diversi
4507 @q{fogli di stile} per i miei progetti.  Faccio iniziare
4508 ogni file musicale con @code{\include "../global.ily"}, che contiene
4509
4510 @example
4511 %%%   global.ily
4512 \version @w{"@version{}"}
4513
4514 #(ly:set-option 'point-and-click #f)
4515
4516 \include "../init/init-defs.ly"
4517 \include "../init/init-layout.ly"
4518 \include "../init/init-headers.ly"
4519 \include "../init/init-paper.ly"
4520 @end example
4521
4522
4523 @node Altre fonti di informazione
4524 @subsection Altre fonti di informazione
4525 @translationof Other sources of information
4526
4527 La guida al Funzionamento interno contiene molte informazioni su
4528 LilyPond, ma si possono trovare ancora più informazioni nei file
4529 interni di LilyPond.  Per studiarli devi prima trovare la giusta
4530 directory nel tuo sistema operativo.  Il percorso di questa
4531 directory dipende da quale sistema operativo si sta usando e da
4532 come si è ottenuto LilyPond, se scaricando un binario precompilato
4533 da lilypond.org oppure installandolo da un gestore di pacchetti
4534 (come nelle distribuzioni GNU/Linux o nelle istallazioni tramite
4535 fink o cygwin) o compilandolo dai sorgenti:
4536
4537 @subsubheading Scaricato da lilypond.org
4538
4539 @itemize @bullet
4540 @item GNU/Linux
4541
4542 Vai in
4543 @example
4544 @file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/}
4545 @end example
4546
4547 @item MacOS X
4548
4549 Vai in
4550 @example
4551 @file{@var{INSTALLDIR}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4552 @end example
4553
4554 usando @code{cd} in un terminale per entrare in questa
4555 directory oppure facendo un Ctrl+click sull'applicazione LilyPond e
4556 scegliendo @qq{Mostra i contenuti dei pacchetti}.
4557
4558 @item Windows
4559
4560 Con Windows Explorer vai in
4561 @example
4562 @file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/}
4563 @end example
4564
4565 @end itemize
4566
4567 @subsubheading Istallato da un gestore di pacchetti o compilato da sorgenti
4568
4569 Vai in
4570 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, dove
4571 @var{PREFIX} è definito dal gestore pacchetti o dallo
4572 script @code{configure} e @var{X.Y.Z} è il numero di
4573 versione di LilyPond.
4574
4575 @smallspace
4576
4577 All'interno di questa directory le due sottodirectory interessanti sono
4578
4579 @itemize
4580 @item @file{ly/} - contiene i file nel linguaggio di LilyPond
4581 @item @file{scm/} - contiene i file nel linguaggio Scheme
4582 @end itemize
4583
4584 Iniziamo col vedere alcuni file in @file{ly/}.
4585 Apri @file{ly/property-init.ly} in un editor di testo.  Quello
4586 che usi normalmente per i file @code{.ly} va bene.  Questo file
4587 contiene le definizioni di tutti i comandi predefiniti standard
4588 di LilyPond, come @code{\tieUp} e @code{\slurDotted}.  Vedrai
4589 che questi non sono altro che definizioni di variabili che
4590 contengono uno o più comandi @code{\override}.  Ad esempio,
4591 @code{\tieDotted} è definito così:
4592
4593 @example
4594 tieDotted = @{
4595   \override Tie.dash-period = #0.75
4596   \override Tie.dash-fraction = #0.1
4597 @}
4598 @end example
4599
4600 Se non ti piacciono i valori predefiniti, puoi facilmente
4601 definire nuovamente questi comandi, proprio come qualsiasi
4602 altra variabile, all'inizio del file di input.
4603
4604 Ecco i file più utili che si trovano in @file{ly/}:
4605
4606 @multitable @columnfractions .4 .6
4607 @headitem Nome del file
4608   @tab Contenuti
4609 @item @file{ly/engraver-init.ly}
4610   @tab Definizioni dei contesti degli incisori (@emph{engraver})
4611 @item @file{ly/paper-defaults-init.ly}
4612   @tab Specifiche dei valori predefiniti relativi al foglio
4613 @item @file{ly/performer-init.ly}
4614   @tab Definizioni dei contesti dei @emph{performer}
4615 @item @file{ly/property-init.ly}
4616   @tab Definizioni di tutti i comandi predefiniti più comuni
4617 @item @file{ly/spanner-init.ly}
4618   @tab Definizioni dei comandi predefiniti relativi agli estensori (@emph{spanner})
4619 @end multitable
4620
4621 Altre impostazioni (come le definizioni dei comandi di markup) sono
4622 salvate come file @file{.scm} (Scheme).  Il linguaggio di programmazione
4623 Scheme serve a fornire un'interfaccia di programmazione per modificare
4624 il funzionamento interno di LilyPond.  Una spiegazione dettagliata di
4625 questi file non rientra nell'obiettivo di questo manuale, dal momento che
4626 è necessario conoscere il linguaggio Scheme.  Avvisiamo gli utenti che
4627 è richiesta una notevole quantità di abilità tecnica o di tempo per
4628 comprendere Scheme e questi file (vedi @rextend{Scheme tutorial}).
4629
4630 Nel caso tu conosca Scheme, i file che potrebbero essere di interesse sono:
4631
4632 @multitable @columnfractions .4 .6
4633 @headitem Nome del file
4634   @tab Contenuti
4635 @item @file{scm/auto-beam.scm}
4636   @tab Valori predefiniti della disposizione delle travature
4637 @item @file{scm/define-grobs.scm}
4638   @tab Impostazioni predefinite delle proprietà dei grob
4639 @item @file{scm/define-markup-commands.scm}
4640   @tab Definizione di tutti i comandi di markup
4641 @item @file{scm/midi.scm}
4642   @tab Impostazioni predefinite dell'output MIDI
4643 @item @file{scm/output-lib.scm}
4644   @tab Impostazioni che modificano l'aspetto di tasti, colori,
4645        alterazioni, stanghette, etc.
4646 @item @file{scm/parser-clef.scm}
4647   @tab Definizioni delle chiavi supportate
4648 @item @file{scm/script.scm}
4649   @tab Impostazioni predefinite delle articolazioni
4650 @end multitable
4651
4652
4653 @node Modifiche avanzate con Scheme
4654 @subsection Modifiche avanzate con Scheme
4655 @translationof Advanced tweaks with Scheme
4656
4657 Anche se molte cose sono possibili con i comandi @code{\override} e
4658 @code{\tweak}, un modo ancor più potente di modificare l'azione
4659 di LilyPond è resa possibile da un interfaccia programmabile al
4660 funzionamento interno di LilyPond.  Il codice scritto nel linguaggio
4661 di programmazione Scheme può essere incorporato direttamente nel
4662 funzionamento interno di LilyPond.  Ovviamente, per farlo è necessaria
4663 almeno una conoscenza di base della programmazione in Scheme;
4664 abbiamo scritto un'introduzione in @rextend{Scheme tutorial}.
4665
4666 Come esempio di una delle tante possibilità, invece di impostare
4667 una proprietà su un valore costante, si può impostare su una
4668 procedura Scheme che viene poi chiamata ogni volta che LilyPond
4669 accede a quella proprietà.  La proprietà può essere poi impostata
4670 dinamicamente su un valore determinato dalla procedura nel momento
4671 in cui viene chiamata.  In questo esempio coloriamo le teste delle
4672 note in base alla loro posizione sul rigo.
4673
4674 @cindex funzione x11-color, esempio d'uso
4675 @cindex x11-color, esempio d'uso
4676 @cindex NoteHead, esempio di sovrascrittura
4677 @cindex proprietà color, impostare su procedura Scheme
4678 @cindex color, impostare su procedura Scheme
4679
4680 @lilypond[quote,verbatim,ragged-right]
4681 #(define (color-notehead grob)
4682    "Colora le teste di nota in base alla loro posizione sul rigo."
4683    (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4684                                7)))
4685      (case mod-position
4686        ;;   Return rainbow colors
4687        ((1) (x11-color 'red    ))  ; for C
4688        ((2) (x11-color 'orange ))  ; for D
4689        ((3) (x11-color 'yellow ))  ; for E
4690        ((4) (x11-color 'green  ))  ; for F
4691        ((5) (x11-color 'blue   ))  ; for G
4692        ((6) (x11-color 'purple ))  ; for A
4693        ((0) (x11-color 'violet ))  ; for B
4694        )))
4695
4696 \relative {
4697   % Fa sì che il colore sia preso dalla procedura color-notehead
4698   \override NoteHead.color = #color-notehead
4699   a2 b | c2 d | e2 f | g2 a |
4700 }
4701 @end lilypond
4702
4703 Altri esempi che mostrano l'uso di queste interfacce programmabili
4704 si trovano in @rextend{Callback functions}.