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