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