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