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