1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
4 Translation of GIT committish: 6da27f9b294c385ff8fc75876e152d67f0b4794e
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..
13 @node Modifica dell'output
14 @chapter Modifica dell'output
15 @translationof Tweaking output
17 Questo capitolo spiega come modificare l'output. LilyPond è estremamente
18 configurabile; praticamente si può modificare qualsiasi elemento dell'output.
23 * Manuale del Funzionamento interno::
24 * Aspetto degli oggetti::
25 * Posizionamento degli oggetti::
26 * Collisioni tra oggetti::
30 @node Modifiche di base
31 @section Modifiche di base
32 @translationof Tweaking basics
35 * Introduzione alle modifiche::
36 * Oggetti e interfacce::
37 * Convenzioni per i nomi di oggetti e proprietà::
38 * Metodi di modifica::
41 @node Introduzione alle modifiche
42 @subsection Introduzione alle modifiche
43 @translationof Introduction to tweaks
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.
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.
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.
64 @node Oggetti e interfacce
65 @subsection Oggetti e interfacce
66 @translationof Objects and interfaces
69 @cindex oggetto grafico (grob)
70 @cindex estensore (spanner)
72 @cindex oggetto, proprietà dell'
73 @cindex proprietà dell'oggetto
74 @cindex oggetto di formattazione
75 @cindex formattazione, oggetto di
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.
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à.
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.
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}).
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.
123 Questi sono dunque i termini principali riguardanti gli oggetti che useremo
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
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
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
143 @multitable @columnfractions .33 .33 .33
144 @headitem Tipo di oggetto/proprietà
145 @tab Convenzione per il nome
148 @tab Aaaa o AaaaAaaaAaaa
149 @tab Staff, GrandStaff
150 @item Oggetti di formattazione
151 @tab Aaaa o AaaaAaaaAaaa
154 @tab Aaaa_aaa_engraver
155 @tab Clef_engraver, Note_heads_engraver
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
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.
172 @node Metodi di modifica
173 @subsection Metodi di modifica
174 @translationof Tweaking methods
176 @cindex metodi di modifica
177 @cindex modifica, metodi
179 @strong{Il comando \override}
181 @cindex override, comando
182 @cindex override, sintassi
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.
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
201 La sintassi generale di questo comando è:
204 \override @var{Contesto}.@var{OggettoDiFormattazione} #'@var{proprietà-formattazione} =
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}.
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.
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.
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:
232 @cindex proprietà del colore, esempio
233 @cindex colore, proprietà del
234 @cindex NoteHead, esempio di sovrascrittura
236 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
238 \override NoteHead #'color = #red
240 \override NoteHead #'color = #green
244 @strong{Il comando \revert}
246 @cindex ripristino (revert), comando
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:
258 \revert @var{Contesto}.@var{OggettoDiFormmattazione} #'@var{proprietà-formattazione}
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:
266 @cindex proprietà del colore, esempio
267 @cindex colore, proprietà del
268 @cindex NoteHead, esempio di sovrascrittura
270 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
272 \override NoteHead #'color = #red
274 \override NoteHead #'color = #green
276 \revert NoteHead #'color
280 @strong{Il prefisso \once}
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:
292 @cindex proprietà del colore, esempio
293 @cindex colore, proprietà del
294 @cindex NoteHead, esempio di sovrascrittura
296 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
298 \override NoteHead #'color = #red
300 \once \override NoteHead #'color = #green
302 \revert NoteHead #'color
306 @strong{Il comando \overrideProperty}
308 @cindex overrideProperty, comando
310 @funindex \overrideProperty
311 @funindex overrideProperty
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
319 @strong{Il comando \tweak}
321 @cindex tweak, comando
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.
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}:
337 @cindex proprietà font-size, esempio
338 @cindex font-size, esempio
339 @cindex NoteHead, esempio di sovrascrittura
341 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
343 \once \override NoteHead #'font-size = #-3
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.
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.
360 Tornando al nostro esempio, la dimensione della nota centrale
361 di un accordo si cambia in questo modo:
363 @cindex proprietà font-size, esempio
364 @cindex font-size, esempio
365 @cindex @code{\tweak}, esempio
367 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
369 <c \tweak #'font-size #-3 e g>4
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} è
380 \tweak #'@var{proprietà-formattazione} #@var{valore}
383 Il comando @code{\tweak} serve anche a modificare soltanto una di una serie
386 @cindex proprietà del colore, esempio
387 @cindex colore, proprietà del
388 @cindex @code{\tweak}, esempio
390 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
392 -\tweak #'color #red ^"Red"
393 -\tweak #'color #green _"Green"
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.
402 @cindex @code{\tweak}, alterazione
403 @cindex @code{\tweak}, oggetto di formattazione specifico
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:
411 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
412 <\tweak Accidental.color #red cis4
413 \tweak Accidental.color #green es
417 Questa forma estesa del comando @code{\tweak} può essere descritta così
419 \tweak @var{oggetto-formattazione} #'@var{proprietà-formattazione} @var{valore}
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
429 @funindex TupletBracket
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.
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
448 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
449 \tweak #'direction #up
452 \times 2/3 { c8[ c c] }
453 \times 2/3 { c8[ c c] }
454 \times 2/3 { c8[ c c] }
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}:
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
468 @c NOTE Tuplet brackets collide if notes are high on staff
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
477 \once \override TupletNumber #'transparent = ##t
478 \times 2/3 { c8[ c c] }
479 \times 2/3 { c8[ c c] }
485 Guida alla Notazione:
486 @ruser{The tweak command}.
489 @node Manuale del Funzionamento interno
490 @section Manuale del Funzionamento interno
491 @translationof The Internals Reference manual
493 @cindex Guida al Funzionamento interno
496 * Proprietà degli oggetti di formattazione::
497 * Proprietà presenti nelle interfacce::
498 * Tipi di proprietà::
501 @node Proprietà degli oggetti di formattazione
502 @subsection Proprietà degli oggetti di formattazione
503 @translationof Properties of layout objects
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
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}.
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.
529 @cindex esempio di sovrascrittura
530 @cindex sovrascrittura, esempio
531 @cindex Guida al Funzionamento Interno, esempio d'uso
532 @cindex @code{\addlyrics}, esempio
534 Partiamo da un esempio concreto, un semplice frammento di musica:
536 @c Mozart, Die Zauberflöte Nr.7 Duett
538 @lilypond[quote,verbatim,relative=2]
543 r4 bes8 bes[( g]) g |
544 g8[( es]) es d[( f]) as |
548 The man who | feels love's sweet e -- | mo -- tion
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.
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.
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à.
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ì.
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
588 @code{thickness} (number)
590 Line thickness, generally measured in @code{line-thickness}
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}.
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.
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:
612 \override Slur #'thickness = #5.0
615 Non dimenticare il @code{#'} che precede il nome della
616 proprietà e il@tie{}@code{#} che precede il nuovo valore!
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:
622 @cindex legatura di portamento, esempio di sovrascrittura
623 @cindex proprietà thickness, esempio
624 @cindex thickness (spessore), esempio
626 @lilypond[quote,verbatim,relative=2]
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 |
638 The man who | feels love's sweet e -- | mo -- tion
644 e vediamo che la legatura di portamento è davvero più grossa.
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.
651 @subheading Trovare il contesto
653 @cindex contesto, trovare il
654 @cindex contesto, identificare il corretto
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.
670 @subheading Sovrascrivere una volta sola
672 @cindex sovrascrivere una volta sola
673 @cindex \once \override
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
688 @cindex Slur, esempio di sovrascrittura
689 @cindex proprietà thickness, esempio
690 @cindex thickness (spessore), esempio
692 @lilypond[quote,verbatim,relative=2]
698 % Aumenta lo spessore solo della legatura che segue
699 \once \override Slur #'thickness = #5.0
701 g8[( es]) es d[( f]) as |
705 The man who | feels love's sweet e -- | mo -- tion
711 Ora solo la prima legatura è più spessa.
713 Il comando @code{\once} può essere usato anche prima del comando @code{\set}.
715 @subheading Ripristinare
718 @cindex ripristinare le proprietà predefinite
719 @cindex proprietà predefinite, ripristinare le
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:
729 @cindex Slur, esempio di sovrascrittura
730 @cindex proprietà thickness, esempio
731 @cindex thickness (spessore), esempio
733 @lilypond[quote,verbatim,relative=2]
739 % Aumenta lo spessore solo della legatura che segue
740 \once \override Slur #'thickness = #5.0
742 % Aumenta lo spessore solo della legatura che segue
743 \once \override Slur #'thickness = #5.0
744 g8[( es]) es d[( f]) as |
748 The man who | feels love's sweet e -- | mo -- tion
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:
758 @cindex Slur, esempio di sovrascrittura
759 @cindex proprietà thickness, esempio
760 @cindex thickness (spessore), esempio
762 @lilypond[quote,verbatim,relative=2]
768 % Aumenta lo spessore di tutte le legature di portamento che seguono da 1.2 a 5.0
769 \override Slur #'thickness = #5.0
772 % Ripristina lo spessore di tutte le legature di portamento che seguono al valore predefinito 1.2
773 \revert Slur #'thickness
778 The man who | feels love's sweet e -- | mo -- tion
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.
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.
796 @node Proprietà presenti nelle interfacce
797 @subsection Proprietà presenti nelle interfacce
798 @translationof Properties found in interfaces
801 @cindex proprietà dell'interfaccia
802 @cindex proprietà nelle interfacce
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}.
816 Ora dobbiamo capire come trovare le proprietà delle interfacce e
817 come scoprire quali oggetti usano queste proprietà.
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
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}.
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.
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.
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}.
860 Quindi il comando @code{\override} che rende il testo corsivo è:
863 \override LyricText #'font-shape = #'italic
867 Deve essere posizionato proprio di fronte al testo che vogliamo modificare,
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
877 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
882 r4 bes8 bes[( g]) g |
883 g8[( es]) es d[( f]) as |
887 \override LyricText #'font-shape = #'italic
888 The man who | feels love's sweet e -- | mo -- tion
894 e tutto il testo è in corsivo.
896 @subheading Specificare il contesto nella modalità testo (\lyricmode)
898 @cindex contesto, specifarlo nella modalità testo (\lyricmode)
899 @cindex modalità testo (\lyricmode), specificare il contesto
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à:
913 \override Lyrics . LyricText #'font-shape = #'italic
916 @warning{Nel testo bisogna lasciare sempre uno spazio bianco tra l'ultima
917 sillaba e la parentesi graffa che chiude il blocco.}
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.}
924 Estendere: @rextend{Scheme tutorial}.
927 @node Tipi di proprietà
928 @subsection Tipi di proprietà
929 @translationof Types of properties
931 @cindex tipi di proprietà
932 @cindex proprietà, tipi di
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{#}.
943 @multitable @columnfractions .2 .45 .35
944 @headitem Tipo di proprietà
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}
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}}
959 @tab Un numero positivo intero
960 @tab @code{3}, @code{1}
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)}
967 @tab Qualsiasi valido blocco markup
968 @tab @code{\markup @{ \italic "cresc." @}}
970 @tab Una frazione di una nota intera costruita con la
972 @tab @code{(ly:make-moment 1 4)},
973 @code{(ly:make-moment 3 8)}
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)}
982 @tab Qualsiasi insieme di simboli ammesso per quella proprietà,
983 preceduto da un apostrofo
984 @tab @code{'italic}, @code{'inside}
986 @tab Una procedura o un valore @code{#f} che impedisca l'azione
987 @tab @code{bend::print}, @code{ly:text-interface::print},
990 @tab Una lista di tre elementi racchiusi tra parentesi e preceduti
991 da apostrofo-cancelletto, @code{'#}.
992 @tab @code{'#(#t #t #f)}
997 Estendere: @rextend{Scheme tutorial}.
1000 @node Aspetto degli oggetti
1001 @section Aspetto degli oggetti
1002 @translationof Appearance of objects
1004 Mettiamo in pratica quello che abbiamo imparato con un po' di
1005 esempi che mostrano come modificare l'aspetto degli elementi
1009 * Visibilità e colore degli oggetti::
1010 * Dimensione degli oggetti::
1011 * Lunghezza e spessore degli oggetti::
1014 @node Visibilità e colore degli oggetti
1015 @subsection Visibilità e colore degli oggetti
1016 @translationof Visibility and color of objects
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?
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.
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
1050 @cindex proprietà stencil
1051 @cindex stencil, proprietà
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}:
1059 @cindex BarLine, esempio di sovrascrittura
1060 @cindex proprietà stencil, esempio
1061 @cindex stencil, esempio
1063 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1066 \override BarLine #'stencil = ##f
1068 g,8 a16 b8 c d4 e16 |
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:
1085 @cindex BarLine, esempio di sovrascrittura
1086 @cindex proprietà stencil, esempio
1087 @cindex stencil, esempio
1089 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1092 \override Staff.BarLine #'stencil = ##f
1094 g,8 a16 b8 c d4 e16 |
1099 Ora le stanghette sono sparite.
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
1109 @lilypond[quote,verbatim,relative=2]
1112 \once \override NoteHead #'stencil = #point-stencil
1117 @subheading break-visibility
1119 @cindex proprietà break-visibility
1120 @cindex break-visibility, proprietà
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}.
1134 @cindex BarLine, esempio di sovrascrittura
1135 @cindex proprietà break-visibility, esempio
1136 @cindex break-visibility, esempio
1138 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1141 \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
1143 g,8 a16 b8 c d4 e16 |
1148 E vediamo che anche questo comando elimina tutte le stanghette.
1150 @subheading transparent
1152 @cindex proprietà transparent
1153 @cindex transparent, proprietà
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 è:
1168 @cindex TimeSignature, esempio di sovrascrittura
1169 @cindex proprietà transparent, esempio
1170 @cindex transparent, esempio
1172 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1175 \override Staff.TimeSignature #'transparent = ##t
1177 g,8 a16 b8 c d4 e16 |
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}:
1189 @cindex TimeSignature, esempio di sovrascrittura
1190 @cindex proprietà stencil, esempio
1191 @cindex stencil, esempio
1193 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1196 \override Staff.TimeSignature #'stencil = ##f
1198 g,8 a16 b8 c d4 e16 |
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.
1210 @cindex proprietà color
1211 @cindex color, proprietà
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.)
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:
1230 @cindex BarLine, esempio di sovrascrittura
1231 @cindex proprietà color
1232 @cindex color, proprietà
1234 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1237 \override Staff.BarLine #'color = #white
1239 g,8 a16 b8 c d4 e16 |
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
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}:
1266 @cindex BarLine, esempio di sovrascrittura
1267 @cindex proprietà color, esempio
1268 @cindex color, esempio
1270 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1273 \override Staff.BarLine #'color = #(x11-color 'white)
1275 g,8 a16 b8 c d4 e16 |
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.
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)}:
1298 @cindex BarLine, esempio di sovrascrittura
1299 @cindex proprietà color, esempio
1300 @cindex color, esempio
1302 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1305 \override Staff.BarLine #'color = #(rgb-color 1 1 1)
1307 g,8 a16 b8 c d4 e16 |
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:
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
1328 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
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)
1338 g,8 a16 b8 c d4 e16 |
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.
1354 @node Dimensione degli oggetti
1355 @subsection Dimensione degli oggetti
1356 @translationof Size of objects
1358 @cindex modificare la dimensione degli oggetti
1359 @cindex dimensione degli oggetti
1360 @cindex oggetti, dimensione degli
1361 @cindex oggetti, modificare la dimensione degli
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}.
1367 @cindex proprietà alignAboveContext, esempio
1368 @cindex @code{\with}, esempio
1370 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1371 \new Staff ="main" {
1378 alignAboveContext = #"main" }
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ì:
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
1398 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1399 \new Staff ="main" {
1406 alignAboveContext = #"main"
1409 \override Staff.Clef #'stencil = ##f
1410 \override Staff.TimeSignature #'stencil = ##f
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.
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.
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.
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.
1451 Dunque possiamo sostituire l'esempio precedente con
1453 @cindex alignAboveContext property, esempio
1454 @cindex @code{\with}, esempio
1455 @cindex Clef, esempio di sovrascrittura
1456 @cindex TimeSignature, esempio di sovrascrittura
1458 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1459 \new Staff ="main" {
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
1479 Infine arriviamo a modificare la dimensione degli oggetti di formattazione.
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.
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
1500 \override NoteHead #'font-size = #-2
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}).
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%.
1515 Proviamolo nel nostro esempio dell'ossia:
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
1524 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1525 \new Staff ="main" {
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%
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
1551 @node Lunghezza e spessore degli oggetti
1552 @subsection Lunghezza e spessore degli oggetti
1553 @translationof Length and thickness of objects
1556 @cindex thickness, proprietà
1560 @cindex dimensione, modificare la
1561 @cindex lunghezza del gambo, modificare la
1562 @cindex spaziatura delle linee del rigo, modificare la
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}.
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
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
1599 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1600 \new Staff ="main" {
1607 alignAboveContext = #"main"
1608 \override Clef #'stencil = ##f
1609 \override TimeSignature #'stencil = ##f
1611 % Riduce proporzionalmente la lunghezza dei gambi e la spaziatura tra le linee
1612 \override StaffSymbol #'staff-space = #(magstep -2)
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.
1633 Questo completa la creazione dell'ossia. Le dimensioni e le lunghezze
1634 di tutti gli altri oggetti possono essere modificati in modi analoghi.
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.
1647 @node Posizionamento degli oggetti
1648 @section Posizionamento degli oggetti
1649 @translationof Placement of objects
1652 * Comportamento automatico::
1653 * Oggetti interni al rigo::
1654 * Oggetti esterni al rigo::
1658 @node Comportamento automatico
1659 @subsection Comportamento automatico
1660 @translationof Automatic behavior
1662 @cindex within-staff, oggetti
1663 @cindex outside-staff, oggetti
1664 @cindex oggetti dentro il rigo
1665 @cindex oggetti fuori dal rigo
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).
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
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.
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
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
1706 @cindex markup, esempio
1708 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
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:
1721 @lilypond[quote,ragged-right,verbatim]
1724 \relative c' { c4 a, }
1727 \relative c'''' { c4 a, }
1733 @node Oggetti interni al rigo
1734 @subsection Oggetti interni al rigo
1735 @translationof Within-staff objects
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.
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}.
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.
1768 @cindex Stem, esempio di sovrascrittura
1769 @cindex proprietà direction, esempio
1770 @cindex direction, esempio
1772 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1774 \override Stem #'direction = #DOWN
1776 \override Stem #'direction = #UP
1778 \revert Stem #'direction
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}.
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
1794 @multitable @columnfractions .2 .2 .25 .35
1795 @headitem Giù/Sinistra
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}
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}
1811 @item @code{\phrasingSlurDown}
1812 @tab @code{\phrasingSlurUp}
1813 @tab @code{\phrasingSlurNeutral}
1814 @tab Nota: è diverso dai comandi slur
1815 @item @code{\slurDown}
1817 @tab @code{\slurNeutral}
1819 @item @code{\stemDown}
1821 @tab @code{\stemNeutral}
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}
1829 @tab @code{\tieNeutral}
1831 @item @code{\tupletDown}
1832 @tab @code{\tupletUp}
1833 @tab @code{\tupletNeutral}
1834 @tab I gruppi irregolare sono sotto/sopra le note
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}.
1843 @unnumberedsubsubsec Diteggiatura
1845 @cindex diteggiatura, posizionamento
1846 @cindex diteggiatura, accordi
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.
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}:
1860 @cindex Fingering, esempio di sovrascrittura
1861 @cindex proprietà direction, esempio
1862 @cindex direction, esempio
1864 @lilypond[quote,verbatim,relative=2]
1866 \override Fingering #'direction = #DOWN
1868 \override Fingering #'direction = #UP
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:
1878 @cindex fingering, esempio
1880 @lilypond[quote,verbatim,relative=2]
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:
1891 @cindex fingering, esempio
1893 @lilypond[quote,verbatim,relative=2]
1900 ma può essere sovrascritta per forzare manualmente in su o in giù tutti o
1901 alcuni dei singoli numeri della diteggiatura:
1903 @cindex fingering, esempio
1905 @lilypond[quote,verbatim,relative=2]
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 è:
1916 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
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}.
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.
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.}
1940 @cindex fingering, esempio
1941 @cindex @code{\set}, esempio di utilizzo
1942 @cindex proprietà fingeringOrientations, esempio
1944 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1945 \set fingeringOrientations = #'(left)
1948 \set fingeringOrientations = #'(left)
1950 <c-1 e-2 g-3 b-5>4 |
1951 \set fingeringOrientations = #'(up left down)
1954 \set fingeringOrientations = #'(up left)
1956 <c-1 e-2 g-3 b-5>4 |
1957 \set fingeringOrientations = #'(right)
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
1969 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1970 \override Fingering #'font-size = #-7
1971 \set fingeringOrientations = #'(left)
1974 \set fingeringOrientations = #'(left)
1976 <c-1 e-2 g-3 b-5>4 |
1977 \set fingeringOrientations = #'(up left down)
1980 \set fingeringOrientations = #'(up left)
1982 <c-1 e-2 g-3 b-5>4 |
1983 \set fingeringOrientations = #'(right)
1988 @node Oggetti esterni al rigo
1989 @subsection Oggetti esterni al rigo
1990 @translationof Outside-staff objects
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.
2004 @cindex estensori (spanner)
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
2019 @multitable @columnfractions .3 .3 .3
2020 @headitem Oggetto di formattazione
2022 @tab Controlla la posizione di:
2023 @item @code{RehearsalMark}
2025 @tab Numeri di chiamata (e oggetti di testo analoghi)
2026 @item @code{MetronomeMark}
2028 @tab Indicazioni metronomiche
2029 @item @code{VoltaBracketSpanner}
2031 @tab Delimitatori dei finali alternativi delle ripetizioni
2032 @item @code{TextScript}
2034 @tab Oggetti di testo
2035 @item @code{MultiMeasureRestText}
2037 @tab Testi sopra pause di più misure
2038 @item @code{OttavaBracket}
2040 @tab Estensioni del segno d'ottava
2041 @item @code{TextSpanner}
2043 @tab Estensori del testo
2044 @item @code{DynamicLineSpanner}
2046 @tab Tutte le indicazioni dinamiche
2047 @item @code{BarNumber}
2049 @tab Numeri di battuta
2050 @item @code{TrillSpanner}
2052 @tab Linee ondulate del trillo
2055 Ecco un esempio che mostra il posizionamento predefinito di alcuni di
2058 @cindex estensore del testo
2059 @cindex segno del cambio d'ottava
2061 @funindex \startTextSpan
2062 @funindex startTextSpan
2063 @funindex \stopTextSpan
2064 @funindex stopTextSpan
2066 @cindex TextSpanner, esempio di sovrascrittura
2067 @cindex proprietà bound-details, esempio
2068 @cindex bound-details, esempio
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
2076 % Start Ottava Bracket
2079 % Add Dynamic Text and hairpin
2085 % Add Dynamic Text and terminate hairpin
2086 c4\ff c \stopTextSpan |
2087 % Stop Ottava Bracket
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}.
2098 Mostra anche come si creano le estensioni del segno d'ottava.
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
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}:
2116 @cindex TextSpanner, esempio di sovrascrittura
2117 @cindex proprietà bound-details, esempio
2118 @cindex bound-details, esempio
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
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
2131 % Aggiunge l'indicazione dinamica
2133 % Aggiunge la forcella della dinamica
2135 % Aggiunge l'oggetto di testo
2138 % Aggiunge l'indicazione dinamica
2139 c4\ff c \stopTextSpan |
2140 % Termina l'estensione de segno d'ottava
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.
2150 @cindex legature di portamento e outside-staff-priority
2151 @cindex legature di portamento e articolazioni
2152 @cindex articolazioni e legature di portamento
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:
2167 @lilypond[quote,verbatim,relative=2]
2168 c4( c^\markup { \tiny \sharp } d4.) c8 |
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 |
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:
2186 @cindex TextScript, esempio di sovrascrittura
2187 @cindex proprietà outside-staff-priority, esempio
2188 @cindex outside-staff-priority, esempio
2190 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2193 \once \override TextScript #'outside-staff-priority = #500
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}.
2206 @subheading \textLengthOn
2208 @cindex note, distanziarle insieme al testo
2210 @funindex \textLengthOn
2211 @funindex textLengthOn
2212 @funindex \textLengthOff
2213 @funindex textLengthOff
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:
2220 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2221 \textLengthOn % Fa sì che le note si distanzino per introdurre il testo
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}.
2233 @cindex testo a margine, permettere le collisioni
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.
2240 @cindex TextScript, esempio di sovrascrittura
2241 @cindex proprietà outside-staff-priority, esempio
2242 @cindex outside-staff-priority, esempio
2244 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2245 % Questo testo è abbastanza corto per starci senza creare collisioni
2249 % Questo è troppo lungo per starci, quindi è spostato più in alto
2253 % Disattiva l'elusione delle collisioni
2254 \once \override TextScript #'outside-staff-priority = ##f
2255 c,,2^"Testo Lungo " c'' |
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
2266 @subheading Dinamica
2268 @cindex modificare il posizionamento della dinamica
2269 @cindex dinamica, modificare il posizionamento
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
2279 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2284 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2285 ees,2.~\)\mf ees4 r8 |
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:
2294 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
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}.
2307 @subheading Estensione dei grob
2309 @cindex estensione dei grob
2310 @cindex grob, estensione
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}.
2324 @cindex @code{extra-spacing-width}
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:
2337 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2341 Vediamo se funziona nell'esempio precedente:
2343 @cindex DynamicText, esempio di sovrascrittura
2344 @cindex proprietà extra-spacing-width, esempio
2345 @cindex extra-spacing-width, esempio
2347 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2349 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2350 a4\f b\mf c\mp b\p |
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
2365 @cindex DynamicText, esempio di sovrascrittura
2366 @cindex proprietà extra-spacing-width, esempio
2367 @cindex extra-spacing-width, esempio
2369 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2371 % Aumenta la larghezza di 1 spazio rigo
2372 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
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.
2383 @node Collisioni tra oggetti
2384 @section Collisioni tra oggetti
2385 @translationof Collisions of objects
2388 * Spostare gli oggetti::
2389 * Correggere la sovrapposizione di elementi della notazione::
2390 * Esempio musicale::
2393 @node Spostare gli oggetti
2394 @subsection Spostare gli oggetti
2395 @translationof Moving objects
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
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
2410 Esistono tre principali approcci per risolvere la sovrapposizione
2411 degli elementi della notazione. Vediamoli nel seguente ordine:
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.
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:
2436 Questa è già stata trattata in dettaglio (vedi
2437 @ref{Within-staff objects}).
2440 @code{padding}, @code{right-padding}, @code{staff-padding}
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à
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}.
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.
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.
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.
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
2492 @code{self-alignment-X}
2494 @cindex proprietà self-alignment-X
2495 @cindex self-alignment-X, proprietà
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
2513 @code{extra-spacing-width}
2515 @cindex proprietà extra-spacing-width
2516 @cindex extra-spacing-width, proprietà
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).
2529 @code{staff-position}
2531 @cindex proprietà staff-position
2532 @cindex staff-position, proprietà
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.
2545 @cindex proprietà force-hshift
2546 @cindex force-hshift, proprietà
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}.
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.
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:
2584 @cindex proprietà extra-offset
2585 @cindex extra-offset, proprietà
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.
2597 @cindex proprietà positions
2598 @cindex positions, proprietà
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.
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
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.
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}
2639 @node Correggere la sovrapposizione di elementi della notazione
2640 @subsection Correggere la sovrapposizione di elementi della notazione
2641 @translationof Fixing overlapping notation
2643 Vediamo ora come le proprietà presentate nella sezione precedente possano
2644 aiutare a risolvere la sovrapposizione degli elementi della notazione.
2646 @subheading proprietà padding
2650 @cindex correggere la sovrapposizione di elementi della notazione
2651 @cindex sovrapposizione degli elementi della notazione
2653 La proprietà @code{padding} serve a aumentare (o diminuire)
2654 la distanza tra i simboli che si trovano sopra o sotto le
2657 @cindex Script, esempio di sovrascrittura
2658 @cindex proprietà padding, esempio
2659 @cindex padding, esempio
2661 @lilypond[quote,fragment,relative=1,verbatim]
2663 \override Script #'padding = #3
2667 @cindex MetronomeMark, esempio di sovrascrittura
2668 @cindex proprietà padding, esempio
2669 @cindex padding, esempio
2671 @lilypond[quote,fragment,relative=1,verbatim]
2672 % Questo non funziona, vedi sotto
2673 \override MetronomeMark #'padding = #3
2677 \override Score.MetronomeMark #'padding = #3
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}.
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.
2694 @subheading right-padding
2696 @cindex proprietà right-padding
2697 @cindex right-padding, proprietà
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:
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
2715 @lilypond[quote,ragged-right,verbatim]
2716 sesquisharp = \markup { \sesquisharp }
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
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
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}.
2744 @subheading proprietà staff-padding
2746 @cindex allineare gli oggetti a una base
2747 @cindex oggetti, allinearli a una base
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:
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
2765 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
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
2775 @subheading proprietà self-alignment-X
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:
2781 @cindex StringNumber, esempio di sovrascrittura
2782 @cindex proprietà self-alignment-X, esempio
2783 @cindex self-alignment-X, esempio
2785 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2788 \once \override StringNumber #'self-alignment-X = #RIGHT
2792 @subheading proprietà staff-position
2794 @cindex collisione tra oggetti all'interno del rigo
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:
2804 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2805 << { c4 c c c } \\ { R1 } >>
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}}.
2815 @cindex MultiMeasureRest, esempio di sovrascrittura
2816 @cindex proprietà staff-position, esempio
2817 @cindex staff-position, esempio
2819 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2823 \override MultiMeasureRest #'staff-position = #-8
2828 Questa soluzione è preferibile all'uso di @code{extra-offset}, perché
2829 il taglio addizionale sopra la pausa è inserito automaticamente.
2831 @subheading proprietà extra-offset
2833 @cindex posizionare gli oggetti
2834 @cindex posizionare i grob
2835 @cindex oggetti, posizionarli
2836 @cindex grob, posizionarli
2838 La proprietà @code{extra-offset} fornisce un controllo completo
2839 sul posizionamento di un oggetto sia in orizzontale che in verticale.
2841 Nell'esempio seguente, la seconda diteggiatura viene spostata un po' a
2842 sinistra e in basso di 1.8 spazi rigo:
2844 @cindex Fingering, esempio di sovrascrittura
2845 @cindex proprietà extra-offset, esempio
2846 @cindex extra-offset, esempio
2848 @lilypond[quote,fragment,relative=1,verbatim]
2851 \once \override Fingering #'extra-offset = #'(-0.3 . -1.8)
2856 @subheading proprietà positions
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
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.
2870 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2871 r4 \acciaccatura e8\( d8 c~ c d c d\)
2875 Potremmo semplicemente spostare la legatura di frase sopra le note:
2877 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2880 \acciaccatura e8\( d8 c~ c d c d\)
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.
2889 @cindex PhrasingSlur, esempio di sovrascrittura
2890 @cindex proprietà positions, esempio
2891 @cindex positions, esempio
2893 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2895 \once \override PhrasingSlur #'positions = #'(-4 . -3)
2896 \acciaccatura e8\( d8 c~ c d c d\)
2899 Ecco un altro esempio. Vediamo che le travature collidono
2900 con le legature di valore:
2902 @lilypond[quote,verbatim,fragment,ragged-right]
2906 { c'1 ~ c'2. e'8 f' }
2908 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
2911 { c'1 ~ c'2. e'8 f' }
2913 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
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:
2923 @cindex Beam, esempio di sovrascrittura
2924 @cindex proprietà positions, esempio
2925 @cindex positions, esempio
2927 @lilypond[quote,verbatim,fragment,ragged-right]
2931 { c'1 ~ c'2. e'8 f' }
2934 \override Beam #'positions = #'(-1 . -1)
2935 e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g''
2939 { c'1 ~ c'2. e'8 f' }
2941 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
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.
2950 @subheading proprietà force-hshift
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
2956 @lilypond[quote,verbatim,fragment,ragged-right]
2957 \new Staff \relative c'' {
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.
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.
2983 Ecco il risultato finale:
2985 @cindex NoteColumn, esempio di sovrascrittura
2986 @cindex proprietà force-hshift, esempio
2987 @cindex force-hshift, esempio
2989 @lilypond[quote,verbatim,fragment,ragged-right]
2990 \new Staff \relative c'' {
2997 \once \override NoteColumn #'force-hshift = #0.5
3003 \override NoteColumn #'force-hshift = #0
3012 @node Esempio musicale
3013 @subsection Esempio musicale
3014 @translationof Real music example
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!
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.
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'' {
3037 \once \override Tie #'staff-position = #3.5
3041 \mergeDifferentlyHeadedOn
3042 \mergeDifferentlyDottedOn
3043 bes2.^\markup { \bold "Moderato" } r8
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
3059 % Stem on the d2 must be down to permit merging
3061 % Stem on the d2 should be invisible
3062 \tweak Stem.transparent ##t
3063 \tweak Flag.transparent ##t
3071 \mergeDifferentlyHeadedOff
3072 \mergeDifferentlyDottedOff
3077 lhMusic = \relative c' {
3079 <d g, d>1)\arpeggio |
3086 \new Staff = "RH" <<
3090 \new Staff = "LH" <<
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.
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:
3116 @c line-width ensures no break
3117 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3118 rhMusic = \relative c'' {
3124 % Inizia la sezione polifonica a quattro voci
3126 { c,8 d fis bes a } % continuazione della voce principale
3140 g2. % continuazione della voce principale
3144 lhMusic = \relative c' {
3153 \new Staff = "RH" <<
3157 \new Staff = "LH" <<
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:
3174 @c line-width ensures no break
3175 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3176 rhMusic = \relative c'' {
3182 % Inizia la sezione polifonica a quattro voci
3184 { c,8 d fis bes a } % continuazione della voce principale
3198 g2.\) % continuazione della voce principale
3202 lhMusic = \relative c' {
3211 \new Staff = "RH" <<
3215 \new Staff = "LH" <<
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:
3240 @code{\once \override Tie #'staff-position = #3.5}
3242 Questo completa la seconda battuta:
3244 @c line-width ensures no break
3245 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3246 rhMusic = \relative c'' {
3249 \once \override Tie #'staff-position = #3.5
3254 % Inizia la sezione polifonica a quattro voci
3256 { c,8 d fis bes a } % continuazione della voce principale
3270 g2.\) % continuazione della voce principale
3274 lhMusic = \relative c' {
3276 <d g, d>1)\arpeggio |
3283 \new Staff = "RH" <<
3287 \new Staff = "LH" <<
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
3309 \mergeDifferentlyHeadedOn
3310 \mergeDifferentlyDottedOn
3314 all'inizio di questa sezione e
3317 \mergeDifferentlyHeadedOff
3318 \mergeDifferentlyDottedOff
3322 alla fine, ottenendo:
3324 @c line-width ensures no break
3325 @lilypond[quote,ragged-right,line-width=6\in]
3326 rhMusic = \relative c'' {
3329 \once \override Tie #'staff-position = #3.5
3333 bes2.^\markup { \bold "Moderato" } r8
3334 \mergeDifferentlyHeadedOn
3335 \mergeDifferentlyDottedOn
3336 % Inizia la sezione polifonica a quattro voci
3338 { c,8 d fis bes a } % continuazione della voce principale
3352 \mergeDifferentlyHeadedOff
3353 \mergeDifferentlyDottedOff
3354 g2.\) % continuazione della voce principale
3358 lhMusic = \relative c' {
3360 <d g, d>1)\arpeggio |
3367 \new Staff = "RH" <<
3371 \new Staff = "LH" <<
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:
3395 @cindex Tie, esempio di sovrascrittura
3396 @cindex proprietà staff-position, esempio
3397 @cindex staff-position, esempio
3399 @c line-width ensures no break
3400 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3401 rhMusic = \relative c'' {
3404 \once \override Tie #'staff-position = #3.5
3408 bes2.^\markup { \bold "Moderato" } r8
3409 \mergeDifferentlyHeadedOn
3410 \mergeDifferentlyDottedOn
3411 % Inizia la sezione polifonica a quattro voci
3413 { c,8 d fis bes a } % continuazione della voce principale
3416 % Sposta il c2 fuori dalla colonna della nota principale
3417 % in modo che l'unione di note funzioni
3422 % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3430 \mergeDifferentlyHeadedOff
3431 \mergeDifferentlyDottedOff
3432 g2.\) % continuazione della voce principale
3436 lhMusic = \relative c' {
3438 <d g, d>1)\arpeggio |
3445 \new Staff = "RH" <<
3449 \new Staff = "LH" <<
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:
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
3471 @c line-width ensures no break
3472 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3473 rhMusic = \relative c'' {
3476 \once \override Tie #'staff-position = #3.5
3480 bes2.^\markup { \bold "Moderato" } r8
3481 \mergeDifferentlyHeadedOn
3482 \mergeDifferentlyDottedOn
3483 % Inizia la sezione polifonica a quattro voci
3485 { c,8 d fis bes a } % continuazione della voce principale
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
3499 % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3501 % Stem on the d2 should be invisible
3502 \tweak Stem.transparent ##t
3503 \tweak Flag.transparent ##t
3511 \mergeDifferentlyHeadedOff
3512 \mergeDifferentlyDottedOff
3513 g2.\) % continuazione della voce principale
3517 lhMusic = \relative c' {
3519 <d g, d>1)\arpeggio |
3526 \new Staff = "RH" <<
3530 \new Staff = "LH" <<
3540 @node Altre modifiche
3541 @section Altre modifiche
3542 @translationof Further tweaking
3545 * Altri usi delle modifiche::
3546 * Uso delle variabili per le modifiche::
3548 * Altre fonti di informazione::
3549 * Modifiche avanzate con Scheme::
3552 @node Altri usi delle modifiche
3553 @subsection Altri usi delle modifiche
3554 @translationof Other uses for tweaks
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
3565 @subheading Legature di valore tra note di voci diverse
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
3572 @lilypond[quote,fragment,relative=2]
3573 << { b8~ b\noBeam } \\ { b8[ g] } >>
3577 e si cancella il primo gambo di quella voce, la legatura sembra
3578 attraversare le voci:
3580 @cindex Stem, esempio di sovrascrittura
3581 @cindex proprietà transparent, esempio
3582 @cindex transparent, esempio
3584 @lilypond[quote,fragment,relative=2,verbatim]
3587 \tweak Stem.transparent ##t
3588 \tweak Flag.transparent ##t
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},
3600 @lilypond[quote,fragment,relative=2,verbatim]
3603 \tweak Stem.transparent ##t
3604 \tweak Flag.transparent ##t
3605 \tweak Stem.length #8
3613 @subheading Simulare una corona nel MIDI
3615 @cindex proprietà stencil, uso della
3616 @cindex corona, usarla nel MIDI
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.
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:
3632 @cindex MetronomeMark, esempio di sovrascrittura
3633 @cindex proprietà transparent, esempio
3634 @cindex transparent, esempio
3636 @lilypond[quote,verbatim,ragged-right]
3639 % Indicazione di tempo visibile
3642 \once \override Score.MetronomeMark #'transparent = ##t
3643 % Indicazione di tempo invisibile per allungare la fermata nel MIDI
3646 % Nuovo tempo per la sezione successiva
3655 @cindex MetronomeMark, esempio di sovrascrittura
3656 @cindex proprietà stencil, esempio
3657 @cindex stencil, esempio
3659 @lilypond[quote,verbatim,ragged-right]
3662 % Indicazione di tempo visibile
3665 \once \override Score.MetronomeMark #'stencil = ##f
3666 % Indicazione di tempo invisibile per allungare la fermata nel MIDI
3669 % Nuovo tempo per la sezione successiva
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.
3687 @rglosnamed{system,sistema}.
3689 @node Uso delle variabili per le modifiche
3690 @subsection Uso delle variabili per le modifiche
3691 @translationof Using variables for tweaks
3693 @cindex variabili, usarle per le modifiche
3694 @cindex usare le variabili per le modifiche
3695 @cindex modifiche, usare le variabili per le
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.
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}?
3711 @code{\override Lyrics . LyricText #'font-shape = #'italic}
3712 @code{\override Lyrics . LyricText #'font-series = #'bold}
3714 @code{\revert Lyrics . LyricText #'font-shape}
3715 @code{\revert Lyrics . LyricText #'font-series}
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ù
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
3734 @lilypond[quote,verbatim]
3736 \override Lyrics.LyricText #'font-shape = #'italic
3737 \override Lyrics.LyricText #'font-series = #'bold
3741 \revert Lyrics.LyricText #'font-shape
3742 \revert Lyrics.LyricText #'font-series
3745 global = { \key c \major \time 4/4 \partial 4 }
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 }
3752 VerseOne = \lyrics {
3753 E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
3756 VerseTwo = \lyricmode {
3757 O | \once \emphasize Christ, whose voice the | wa -- ters heard,
3760 VerseThree = \lyricmode {
3761 O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
3764 VerseFour = \lyricmode {
3765 O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
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 }
3781 \new Voice = "Tenor" { \voiceOne \TenorMusic }
3782 \new Voice = "Bass" { \voiceTwo \BassMusic }
3789 @node Fogli di stile
3790 @subsection Fogli di stile
3791 @translationof Style sheets
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?
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}.
3803 @lilypond[quote,verbatim,ragged-right]
3805 #(make-dynamic-script
3806 #{ \markup { \hspace #0
3807 \translate #'(5 . 0)
3808 \line { \dynamic "mp"
3809 \text \italic "dolce" } }
3813 #(define-music-function
3814 (parser location string)
3816 #{ ^\markup \bold \box #string #})
3820 a4.\mpdolce d8 cis4--\glissando a |
3824 g8(\! fis)-. e( d)-. cis2 |
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:
3836 %%% salva queste righe in un file chiamato "definitions.ily"
3838 #(make-dynamic-script
3839 #@{ \markup @{ \hspace #0
3840 \translate #'(5 . 0)
3841 \line @{ \dynamic "mp"
3842 \text \italic "dolce" @} @}
3846 #(define-music-function
3847 (parser location string)
3849 #@{ ^\markup \bold \box #string #@})
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}).
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.
3861 \include "definitions.ily"
3865 a4.\mpdolce d8 cis4--\glissando a |
3869 g8(\! fis)-. e( d)-. cis2 |
3873 @lilypond[quote,ragged-right]
3875 #(make-dynamic-script
3876 #{ \markup { \hspace #0
3877 \translate #'(5 . 0)
3878 \line { \dynamic "mp"
3879 \text \italic "dolce" } }
3883 #(define-music-function
3884 (parser location string)
3886 #{ ^\markup \bold \box #string #})
3890 a4.\mpdolce d8 cis4--\glissando a |
3894 g8(\! fis)-. e( d)-. cis2 |
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.
3904 Ma non devi cambiare @file{music.ly} bensì @file{definitions.ily}, in
3910 #(make-dynamic-script
3911 #@{ \markup @{ \hspace #0
3912 \translate #'(5 . 0)
3913 \line @{ \dynamic "mp"
3914 \text \italic "dolce" @} @}
3918 #(define-music-function
3919 (parser location string)
3921 #@{ ^\markup \bold \box #string #@})
3926 \override MetronomeMark #'extra-offset = #'(-9 . 0)
3927 \override MetronomeMark #'padding = #'3
3931 \override TimeSignature #'style = #'numbered
3935 \override Glissando #'thickness = #3
3936 \override Glissando #'gap = #0.1
3941 @lilypond[quote,ragged-right]
3943 #(make-dynamic-script
3944 #{ \markup { \hspace #0
3945 \translate #'(5 . 0)
3946 \line { \dynamic "mp"
3947 \text \italic "dolce" } }
3951 #(define-music-function
3952 (parser location string)
3954 #{ ^\markup \bold \box #string #})
3959 \override MetronomeMark #'extra-offset = #'(-9 . 0)
3960 \override MetronomeMark #'padding = #'3
3964 \override TimeSignature #'style = #'numbered
3968 \override Glissando #'thickness = #3
3969 \override Glissando #'gap = #0.1
3975 a4.\mpdolce d8 cis4--\glissando a |
3979 g8(\! fis)-. e( d)-. cis2 |
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.
3993 #(make-dynamic-script
3994 #@{ \markup @{ \hspace #0
3995 \translate #'(5 . 0)
3996 \line @{ \dynamic "mp"
3997 \text \italic "dolce" @} @}
4001 #(define-music-function
4002 (parser location string)
4004 #@{ ^\markup \bold \box #string #@})
4006 #(set-global-staff-size 23)
4011 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4012 \override MetronomeMark #'padding = #'3
4019 \override Glissando #'thickness = #3
4020 \override Glissando #'gap = #0.1
4025 @lilypond[quote,ragged-right]
4027 #(make-dynamic-script
4028 #{ \markup { \hspace #0
4029 \translate #'(5 . 0)
4030 \line { \dynamic "mp"
4031 \text \italic "dolce" } }
4035 #(define-music-function
4036 (parser location string)
4038 #{ ^\markup \bold \box #string #})
4040 #(set-global-staff-size 23)
4044 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4045 \override MetronomeMark #'padding = #'3
4048 \override Glissando #'thickness = #3
4049 \override Glissando #'gap = #0.1
4055 a4.\mpdolce d8 cis4--\glissando a |
4059 g8(\! fis)-. e( d)-. cis2 |
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ì:
4074 \include "definitions.ily"
4076 %%% Una sola di queste linee deve essere commentata
4077 \include "web-publish.ily"
4078 %\include "university.ily"
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
4088 \version @w{"@version{}"}
4090 #(ly:set-option 'point-and-click #f)
4092 \include "../init/init-defs.ly"
4093 \include "../init/init-layout.ly"
4094 \include "../init/init-headers.ly"
4095 \include "../init/init-paper.ly"
4099 @node Altre fonti di informazione
4100 @subsection Altre fonti di informazione
4101 @translationof Other sources of information
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:
4113 @strong{Scaricato da lilypond.org}
4120 @file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/}
4127 @file{@var{INSTALLDIR}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
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}.
4136 Con Windows Explorer vai in
4138 @file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/}
4143 @strong{Istallato da un gestore di pacchetti o compilato da sorgenti}
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.
4153 All'interno di questa directory le due sottodirectory interessanti sono
4156 @item @file{ly/} - contiene i file nel linguaggio di LilyPond
4157 @item @file{scm/} - contiene i file nel linguaggio Scheme
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ì:
4171 \override Tie #'dash-period = #0.75
4172 \override Tie #'dash-fraction = #0.1
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.
4180 Ecco i file più utili che si trovano in @file{ly/}:
4182 @multitable @columnfractions .4 .6
4183 @headitem Nome del file
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})
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}).
4206 Nel caso tu conosca Scheme, i file che potrebbero essere di interesse sono:
4208 @multitable @columnfractions .4 .6
4209 @headitem Nome del file
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
4229 @node Modifiche avanzate con Scheme
4230 @subsection Modifiche avanzate con Scheme
4231 @translationof Advanced tweaks with Scheme
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}.
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.
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
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)
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
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 |
4279 Altri esempi che mostrano l'uso di queste interfacce programmabili
4280 si trovano in @rextend{Callback functions}.