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