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