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