1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
4 Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a
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 il
169 tipo di oggetto dai nomi delle sue proprietà.
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
585 @c removed, see issue 2791. -- fb
586 @c Si noti che queste @strong{non} sono in ordine alfabetico.
587 Scorrile cercando la proprietà che potrebbe controllare lo spessore delle
588 legature di portamento; dovresti trovare
591 @code{thickness} (number)
593 Line thickness, generally measured in @code{line-thickness}
596 Sembra che sia quel che stiamo cercando. Ci dice che il valore
597 di @code{thickness} (spessore) è un semplice @emph{numero},
598 che il valore predefinito è 1.2 e che le unità si trovano in
599 un'altra proprietà chiamata @code{line-thickness}.
601 Come abbiamo detto prima, ci sono poche spiegazioni nella guida al
602 Funzionamento interno, tuttavia abbiamo già informazioni sufficienti
603 per cercare di cambiare lo spessore delle legature di portamento.
604 Vediamo che il nome dell'oggetto di formattazione è @code{Slur}, che
605 il nome della proprietà da modificare è @code{thickness} e che il
606 nuovo valore dovrà essere un numero un po' più grande di 1.2
607 se vogliamo rendere più spesse le legature.
609 Ora possiamo costruire il comando @code{\override} sostituendo
610 i valori che abbiamo trovato per i nomi e omettendo il
611 contesto. Inizialmente usiamo un valore molto grande per lo
612 spessore, per essere sicuri che il comando funzioni:
615 \override Slur #'thickness = #5.0
618 Non dimenticare il @code{#'} che precede il nome della
619 proprietà e il@tie{}@code{#} che precede il nuovo valore!
621 L'ultima domanda è: @q{dove va messo questo comando?} Finché non sei sicuro
622 e stai ancora imparando, la risposta migliore è: @q{dentro la musica, prima della
623 prima legatura di portamento e accanto ad essa.} Facciamolo:
625 @cindex legatura di portamento, esempio di sovrascrittura
626 @cindex proprietà thickness, esempio
627 @cindex thickness (spessore), esempio
629 @lilypond[quote,verbatim,relative=2]
634 % Increase thickness of all following slurs from 1.2 to 5.0
635 \override Slur #'thickness = #5.0
636 r4 bes8 bes[( g]) g |
637 g8[( es]) es d[( f]) as |
641 The man who | feels love's sweet e -- | mo -- tion
647 e vediamo che la legatura di portamento è davvero più grossa.
649 Questi sono i fondamenti per costruire i comandi @code{\override}. Incontreremo
650 delle situazioni più complesse nelle sezioni successive, ma ora possiedi già
651 tutte le conoscenze di base che ti permetteranno di costruire i tuoi comandi.
652 Ti manca solo un po' di pratica, che potrai fare grazie ai prossimi esempi.
654 @subheading Trovare il contesto
656 @cindex contesto, trovare il
657 @cindex contesto, identificare il corretto
659 E se avessimo bisogno di specificare il contesto?
660 Quale dovrebbe essere? Potremmo immaginare che le legature
661 di portamento si trovino nel contesto Voice, dato che sono ovviamente
662 collegate strettamente alle singole voci, ma possiamo
663 esserne sicuri? Per scoprirlo, vai in cima alla pagina del Funzionamento
664 Interno relativa a «Slur», dove dice @q{Slur objects are created by: Slur
665 engraver}. Significa che le legature di portamento sono create nel contesto
666 in cui si trova l'incisore @code{Slur_engraver}. Segui il link alla pagina
667 @code{Slur_engraver}. In fondo dice che lo @code{Slur_engraver} fa parte di
668 vari contesti Voice, incluso il contesto standard della voce, @code{Voice}.
669 Dunque la nostra supposizione era corretta. E dato che @code{Voice} è uno dei
670 contesti che si trovano al livello più basso, come è sottinteso senza ambiguità
671 dal fatto che stiamo inserendo delle note, in questo caso possiamo ometterlo.
673 @subheading Sovrascrivere una volta sola
675 @cindex sovrascrivere una volta sola
676 @cindex \once \override
681 Come puoi vedere, @emph{tutte} le legature di portamento sono più spesse nell'ultimo
682 esempio. E se volessimo rendere più spessa solo la prima legatura di portamento?
683 Dovremmo usare il comando @code{\once}. Se posto immediatamente prima
684 di @code{\override} fa sì che questo modifichi soltanto la legatura di portamento
685 che inizia sulla nota @strong{immediatamente seguente}. Se la nota immediatamente
686 seguente non inizia la legatura, il comando non ha alcun effetto -- non è
687 ricordato finché non si incontra una legatura di portamento, ma
688 viene direttamente scartato. Quindi il comando con @code{\once} deve essere riposizionato
691 @cindex Slur, esempio di sovrascrittura
692 @cindex proprietà thickness, esempio
693 @cindex thickness (spessore), esempio
695 @lilypond[quote,verbatim,relative=2]
701 % Aumenta lo spessore solo della legatura che segue
702 \once \override Slur #'thickness = #5.0
704 g8[( es]) es d[( f]) as |
708 The man who | feels love's sweet e -- | mo -- tion
714 Ora solo la prima legatura è più spessa.
716 Il comando @code{\once} può essere usato anche prima del comando @code{\set}.
718 @subheading Ripristinare
721 @cindex ripristinare le proprietà predefinite
722 @cindex proprietà predefinite, ripristinare le
727 E se volessimo che soltanto le prime due legature di portamento fossero
728 più spesse? Potremmo usare due comandi, ciascuno preceduto da
729 @code{\once}, messo immediatamente prima di ognuna delle note da cui
730 iniziano le legature:
732 @cindex Slur, esempio di sovrascrittura
733 @cindex proprietà thickness, esempio
734 @cindex thickness (spessore), esempio
736 @lilypond[quote,verbatim,relative=2]
742 % Aumenta lo spessore solo della legatura che segue
743 \once \override Slur #'thickness = #5.0
745 % Aumenta lo spessore solo della legatura che segue
746 \once \override Slur #'thickness = #5.0
747 g8[( es]) es d[( f]) as |
751 The man who | feels love's sweet e -- | mo -- tion
757 oppure potremmo omettere il comando @code{\once} e usare il comando @code{\revert}
758 per far sì che la proprietà @code{thickness} ritorni al valore predefinito
759 dopo la seconda legatura:
761 @cindex Slur, esempio di sovrascrittura
762 @cindex proprietà thickness, esempio
763 @cindex thickness (spessore), esempio
765 @lilypond[quote,verbatim,relative=2]
771 % Aumenta lo spessore di tutte le legature di portamento che seguono da 1.2 a 5.0
772 \override Slur #'thickness = #5.0
775 % Ripristina lo spessore di tutte le legature di portamento che seguono al valore predefinito 1.2
776 \revert Slur #'thickness
781 The man who | feels love's sweet e -- | mo -- tion
787 Il comando @code{\revert} serve a riportare qualsiasi proprietà
788 modificata con @code{\override} al suo valore predefinito.
789 Puoi usare qualsiasi metodo si adatti meglio a quello che vuoi fare.
791 Si conclude l'introduzione alla guida al Funzionamento interno e ai metodi
792 di base delle modifiche. Nelle sezioni successive di questo capitolo
793 seguiranno vari esempi, in parte per presentarti ulteriori caratteristiche
794 della guida al Funzionamento interno e in parte per farti esercitare
795 nell'estrarre informazioni da esso. Questi esempi conterranno sempre meno
796 consigli e spiegazioni.
799 @node Proprietà presenti nelle interfacce
800 @subsection Proprietà presenti nelle interfacce
801 @translationof Properties found in interfaces
804 @cindex proprietà dell'interfaccia
805 @cindex proprietà nelle interfacce
807 Supponiamo ora di voler produrre un testo vocale in corsivo. Che tipo di
808 comando @code{\override} ci serve? Consultiamo prima la pagina
809 della guida al Funzionamento interno che elenca @q{All layout objects}, come
810 prima, e cerchiamo un oggetto che potrebbe controllare il testo (in inglese
811 @emph{lyrics}). Troviamo @code{LyricText}, che sembra quello giusto. Clicchiamo
812 su di esso e troviamo le proprietà del testo. Queste comprendono @code{font-series}
813 e @code{font-size}, ma niente che possa dare una forma corsiva. Ciò è dovuto
814 al fatto che la proprietà della forma è comune a tutti gli oggetti di tipi
815 di carattere (@emph{font}). Quindi, invece di includerla in ogni oggetto di
816 formattazione, viene raggruppata insieme ad altre simili proprietà comuni
817 e inserita in un'@strong{Interfaccia}: @code{font-interface}.
819 Ora dobbiamo capire come trovare le proprietà delle interfacce e
820 come scoprire quali oggetti usano queste proprietà.
822 Torna a vedere la pagina che descrive LyricText. In fondo alla
823 pagina c'è una lista di interfacce cliccabili supportate da LyricText.
824 La lista ha molti elementi, incluso @code{font-interface}. Cliccando
825 su di essa arriviamo alle proprietà associate con questa interfaccia, che
826 sono anche le proprietà di tutti gli oggetti che la supportano, tra cui
829 Vediamo tutte le proprietà configurabili dall'utente che controllano i
830 tipi di carattere, compresa @code{font-shape(symbol)}, dove @code{symbol} può
831 essere impostato su @code{upright}, @code{italic} o @code{caps}.
833 Puoi notare che lì sono elencate anche @code{font-series} e @code{font-size}.
834 Ti potresti chiedere: perché le proprietà comuni dei tipi di carattere
835 @code{font-series} e @code{font-size} fanno parte sia dell'oggetto
836 @code{LyricText} sia dell'interfaccia @code{font-interface} mentre @code{font-shape}
837 è presente solo nell'interfaccia? Ciò è dovuto al fatto che i valori globali
838 predefiniti di @code{font-series} e @code{font-size} cambiano quando viene
839 creato un oggetto @code{LyricText}, mentre i valori di @code{font-shape} non
840 cambiano. Gli elementi in @code{LyricText} indicano quali sono i
841 valori per queste due proprietà che si applicano a @code{LyricText}. Altri
842 oggetti che supportano @code{font-interface} imposteranno queste proprietà
843 in modo diverso quando vengono creati.
845 Vediamo se ora riusciamo a costruire il comando @code{\override}
846 per rendere il testo corsivo. L'oggetto è @code{LyricText},
847 la proprietà è @code{font-shape} e il valore è
848 @code{italic}. Come in precedenza, ometteremo il contesto.
850 Per inciso, è importante notare che i valori di @code{font-shape},
851 essendo dei simboli, devono essere preceduti da un apostrofo
852 singolo, @code{'}. Questo è il motivo per cui gli apostrofi sono
853 necessari prima di @code{thickness} nell'esempio precedente e prima di
854 @code{font-shape} in questo esempio.
855 Entrambi sono simboli. I simboli vengono letti internamente da
856 LilyPond. Alcuni sono nomi di proprietà, come @code{thickness} o
857 @code{font-shape}, altri sono usati come valori da assegnare alle
858 proprietà, come @code{italic}. Nota che sono diversi dalle
859 stringhe di testo arbitrarie, che appaiono nella forma @code{"una stringa
860 di testo"}; maggiori informazioni sui simboli e le stringhe si trovano in
861 @rextend{Scheme tutorial}.
863 Quindi il comando @code{\override} che rende il testo corsivo è:
866 \override LyricText #'font-shape = #'italic
870 Deve essere posizionato proprio di fronte al testo che vogliamo modificare,
873 @cindex proprietà font-shape, esempio
874 @cindex font-shape, esempio
875 @cindex italic, esempio
876 @cindex corsivo, esempio
877 @cindex LyricText, esempio di sovrascrittura
878 @cindex @code{\addlyrics}, esempio
880 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
885 r4 bes8 bes[( g]) g |
886 g8[( es]) es d[( f]) as |
890 \override LyricText #'font-shape = #'italic
891 The man who | feels love's sweet e -- | mo -- tion
897 e tutto il testo è in corsivo.
899 @subheading Specificare il contesto nella modalità testo (\lyricmode)
901 @cindex contesto, specifarlo nella modalità testo (\lyricmode)
902 @cindex modalità testo (\lyricmode), specificare il contesto
904 Nel caso del testo, se cerchi di specificare il contesto nel
905 formato usato prima, il comando non funzionerà. Una sillaba
906 inserita in modalità testo (lyricmode) può essere terminata da uno
907 spazio, una nuova linea o un numero. Tutti gli altri caratteri vengono
908 considerati come parte della sillaba. Per questo motivo uno spazio o una
909 nuova linea devono apparire prima del @code{@}} finale per impedire che esso
910 sia incluso nella sillaba finale. Analogalmente, bisogna inserire degli spazi
911 prima e dopo la virgola o il punto, @q{.}, separando il nome del contesto dal
912 nome dell'oggetto: altrimenti, i due nomi verranno considerati insieme e
913 l'interprete non sarà in grado di distinguerli. Dunque il comando sarà:
916 \override Lyrics . LyricText #'font-shape = #'italic
919 @warning{Nel testo bisogna lasciare sempre uno spazio bianco tra l'ultima
920 sillaba e la parentesi graffa che chiude il blocco.}
922 @warning{Nelle sovrascritture (@emph{override}) del testo ci devono essere sempre
923 degli spazi intorno al punto tra il nome del contesto e quello dell'oggetto.}
927 Estendere: @rextend{Scheme tutorial}.
930 @node Tipi di proprietà
931 @subsection Tipi di proprietà
932 @translationof Types of properties
934 @cindex tipi di proprietà
935 @cindex proprietà, tipi di
937 Finora abbiamo visto due tipi di proprietà: @code{number} e
938 @code{symbol}. Per essere valido, il valore dato a una proprietà
939 deve essere del tipo corretto e obbedire alle regole di quel tipo.
940 Nella guida al Funzionamento interno il tipo di proprietà è indicato
941 tra parentesi dopo il nome della proprietà. Ecco una lista dei tipi
942 che ti possono servire, corredata dalle regole per ciascun tipo e da alcuni
943 esempi. Ovviamente, se inseriti in un comando @code{\override}, devono
944 essere sempre preceduti dal simbolo di cancelletto, @code{#}.
946 @multitable @columnfractions .2 .45 .35
947 @headitem Tipo di proprietà
951 @tab O Vero (True) o Falso (False), rappresentato da #t o #f
952 @tab @code{#t}, @code{#f}
953 @item Dimension (in staff space)
954 @tab Un numero positivo decimale (nell'unità di misura dello spazio del rigo)
955 @tab @code{2.5}, @code{0.34}
957 @tab Una valida direzione costante o il suo equivalente numerico (sono
958 ammessi valori decimali compresi tra -1 e 1)
959 @tab @code{LEFT}, @code{CENTER}, @code{UP},
960 @code{1}, @w{@code{-1}}
962 @tab Un numero positivo intero
963 @tab @code{3}, @code{1}
965 @tab Un insieme di valori separato da spazi, racchiuso tra parentesi e
966 preceduto da un apostrofo
967 @tab @code{'(left-edge staff-bar)}, @code{'(1)},
968 @code{'(1.0 0.25 0.5)}
970 @tab Qualsiasi valido blocco markup
971 @tab @code{\markup @{ \italic "cresc." @}}
973 @tab Una frazione di una nota intera costruita con la
975 @tab @code{(ly:make-moment 1 4)},
976 @code{(ly:make-moment 3 8)}
978 @tab Qualsiasi valore decimale positivo o negativo
979 @tab @code{3.5}, @w{@code{-2.45}}
980 @item Pair (of numbers)
981 @tab Due numeri separati da un @q{spazio . spazio} e racchiusi tra
982 parentesi precedute da un apostrofo
983 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
985 @tab Qualsiasi insieme di simboli ammesso per quella proprietà,
986 preceduto da un apostrofo
987 @tab @code{'italic}, @code{'inside}
989 @tab Una procedura o un valore @code{#f} che impedisca l'azione
990 @tab @code{bend::print}, @code{ly:text-interface::print},
993 @tab Una lista di tre elementi racchiusi tra parentesi e preceduti
994 da apostrofo-cancelletto, @code{'#}.
995 @tab @code{'#(#t #t #f)}
1000 Estendere: @rextend{Scheme tutorial}.
1003 @node Aspetto degli oggetti
1004 @section Aspetto degli oggetti
1005 @translationof Appearance of objects
1007 Mettiamo in pratica quello che abbiamo imparato con un po' di
1008 esempi che mostrano come modificare l'aspetto degli elementi
1012 * Visibilità e colore degli oggetti::
1013 * Dimensione degli oggetti::
1014 * Lunghezza e spessore degli oggetti::
1017 @node Visibilità e colore degli oggetti
1018 @subsection Visibilità e colore degli oggetti
1019 @translationof Visibility and color of objects
1021 Potremmo voler creare una partitura priva di alcuni elementi a
1022 scopo didattico, perché lo studente possa esercitarsi
1023 a inserirli. Vediamo un semplice esempio e immaginiamo che
1024 l'esercizio consista nell'inserire le stanghette mancanti
1025 di un brano. Ma di norma le stanghette sono inserite
1026 automaticamente: come lo possiamo impedire?
1028 Prima di iniziare, occorre ricordare che le proprietà degli oggetti sono
1029 raggruppate nelle cosiddette @emph{interfacce} -- si veda @ref{Properties
1030 found in interfaces}. Queste servono semplicemente a raggruppare quelle
1031 proprietà che possono essere usate insieme per modificare un oggetto
1032 grafico -- se una di queste è ammessa per un oggetto, lo sono anche le
1033 altre. Alcuni oggetti usano le proprietà di alcune interfacce, altri
1034 quelle di altre interfacce. Le interfacce che contengono le proprietà
1035 usate da un particolare grob (oggetto grafico) sono elencate nella guida al
1036 Funzionamento interno in fondo alla pagina che descrive il grob; queste
1037 proprietà possono essere individuate consultando quelle interfacce.
1039 In @ref{Properties of layout objects} abbiamo spiegato come trovare le
1040 informazioni sui grob. Usando lo stesso approccio, andiamo nella guida
1041 al Funzionamento interno per trovare l'oggetto grafico relativo alla
1042 stanghetta (@emph{bar line}). Passando da @emph{Backend} e @emph{All layout objects}
1043 troviamo un oggetto grafico chiamato @code{BarLine}. Tra le sue proprietà ce ne sono
1044 due che controllano la visibilità: @code{break-visibility} e @code{stencil}. Anche
1045 Barline supporta varie interfacce, tra cui la @code{grob-interface},
1046 dove troviamo le proprietà @code{transparent} e @code{color}.
1047 Tutte queste proprietà hanno degli effetti sulla visibilità delle stanghette (e,
1048 ovviamente, anche di molti altri oggetti grafici). Vediamole una per
1053 @cindex proprietà stencil
1054 @cindex stencil, proprietà
1056 Questa proprietà controlla l'aspetto delle stanghette specificando il
1057 simbolo (glifo) da usare. Come nel caso di molte altre proprietà,
1058 si può far in modo che non usi nessun simbolo impostando il suo
1059 valore su @code{#f}. Proviamo, come prima, omettendo il contesto
1060 implicito, @code{Voice}:
1062 @cindex BarLine, esempio di sovrascrittura
1063 @cindex proprietà stencil, esempio
1064 @cindex stencil, esempio
1066 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1069 \override BarLine #'stencil = ##f
1071 g,8 a16 b8 c d4 e16 |
1076 Le stanghette sono ancora visibili. Cosa abbiamo sbagliato? Torna alla
1077 guida del Funzionamento interno e scorri di nuovo la pagina che elenca
1078 le proprietà di BarLine. In cima alla pagina dice @qq{Barline objects are
1079 created by: Bar_engraver}. Vai alla pagina @code{Bar_engraver}. In fondo
1080 si trova una lista dei contesti nel quale opera l'incisore della battuta.
1081 Tutti questi sono di tipo @code{Staff}, dunque la ragione per cui il comando
1082 @code{\override} precedente non funziona è che @code{Barline} non si trova
1083 nel contesto predefinito, @code{Voice}. Se il contesto indicato non è
1084 corretto, il comando non funziona. Non viene generato alcun messaggio
1085 di errore e non viene registrato niente nel file di log. Proviamo a
1086 correggerlo specificando il contesto giusto:
1088 @cindex BarLine, esempio di sovrascrittura
1089 @cindex proprietà stencil, esempio
1090 @cindex stencil, esempio
1092 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1095 \override Staff.BarLine #'stencil = ##f
1097 g,8 a16 b8 c d4 e16 |
1102 Ora le stanghette sono sparite.
1104 Si noti però che impostare la proprietà @code{stencil} su @code{#f}
1105 causerà degli errori nel caso in cui le dimensioni dell'oggetto
1106 siano necessarie per elaborarlo correttamente. Ad esempio, si creano
1107 degli errori se la proprietà @code{stencil} dell'oggetto @code{NoteHead} è
1108 impostata su @code{#f}. In questo caso è possibile usare invece la funzione
1109 @code{point-stencil}, che trasforma lo stencil in un oggetto a dimensione
1112 @lilypond[quote,verbatim,relative=2]
1115 \once \override NoteHead #'stencil = #point-stencil
1120 @subheading break-visibility
1122 @cindex proprietà break-visibility
1123 @cindex break-visibility, proprietà
1125 Nella pagina di @code{BarLine} della guida al Funzionamento interno
1126 vediamo che la proprietà @code{break-visibility} richiede un vettore di
1127 tre valori booleani.
1128 Questi valori controllano rispettivamente se le stanghette debbano
1129 comparire alla fine, in mezzo o all'inizio dei righi. Dato
1130 che nel nostro esempio vogliamo sopprimere tutte le stanghette, il valore
1131 che ci serve è @code{'#(#f #f #f)}. Proviamo, ricordando di includere
1132 il contesto @code{Staff}. Si noti che prima della parentesi di apertura
1133 abbiamo @code{#'#}. Il @code{'#} deve far parte del valore perché introduce
1134 un vettore, mentre il primo@tie{}@code{#} deve precedere, come sempre, il
1135 valore del comando @code{\override}.
1137 @cindex BarLine, esempio di sovrascrittura
1138 @cindex proprietà break-visibility, esempio
1139 @cindex break-visibility, esempio
1141 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1144 \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
1146 g,8 a16 b8 c d4 e16 |
1151 E vediamo che anche questo comando elimina tutte le stanghette.
1153 @subheading transparent
1155 @cindex proprietà transparent
1156 @cindex transparent, proprietà
1159 Nelle proprietà specificate nella pagina @code{grob-interface} della
1160 guida al Funzionamento interno vediamo che la proprietà @code{transparent} è
1161 un booleano. Quindi deve essere impostata su @code{#t} («true», 'vero') per
1162 rendere trasparente il grob. Nel prossimo esempio rendiamo trasparente
1163 il segno di tempo invece delle stanghette. Per farlo dobbiamo trovare
1164 il nome del grob del segno di tempo (in inglese @emph{time signature}).
1165 Torniamo alla pagina @q{All layout objects} per scoprire quali sono le
1166 proprietà dell'oggetto di formattazione @code{TimeSignature}. Tale grob
1167 è generato dall'incisore @code{Time_signature_engraver}, che opera
1168 nel contesto @code{Staff} e supporta l'interfaccia @code{grob-interface}.
1169 Quindi il comando che rende trasparente l'indicazione di tempo è:
1171 @cindex TimeSignature, esempio di sovrascrittura
1172 @cindex proprietà transparent, esempio
1173 @cindex transparent, esempio
1175 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1178 \override Staff.TimeSignature #'transparent = ##t
1180 g,8 a16 b8 c d4 e16 |
1186 L'indicazione di tempo è scomparsa; è rimasto però uno spazio al suo posto. Magari questo è quello che si
1187 desidera, ad esempio per creare un esercizio in cui uno studente deve
1188 riempire degli spazi vuoti. Ma in altre circostanze ciò può
1189 non essere gradito. Per eliminare lo spazio vuoto bisogna usare la proprietà stencil
1190 e impostarla su @code{#f}:
1192 @cindex TimeSignature, esempio di sovrascrittura
1193 @cindex proprietà stencil, esempio
1194 @cindex stencil, esempio
1196 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1199 \override Staff.TimeSignature #'stencil = ##f
1201 g,8 a16 b8 c d4 e16 |
1207 la differenza è ovvia: se si imposta lo stencil su @code{#f}
1208 l'oggetto scompare del tutto; se si rende l'oggetto @code{trasparente}
1209 questo resta dove è, anche se invisibile.
1213 @cindex proprietà color
1214 @cindex color, proprietà
1216 Infine, proviamo a rendere le stanghette invisibili colorandole
1217 di bianco. (Si tratta di un metodo problematico perché la
1218 stanghetta bianca può imbiancare o meno le linee del rigo che
1219 incrocia. Puoi vedere in alcuni degli esempi successivi che questo
1220 accade in modo imprevedibile. I motivi per cui questo accade e il
1221 modo in cui è possibile controllarlo sono esposti in @ruser{Painting objects white}.
1222 Ma per il momento stiamo imparando la proprietà color, quindi accettiamo questa limitazione.)
1224 L'interfaccia @code{grob-interface} stabilisce che il valore della
1225 proprietà color è una lista, ma non spiega cosa debba essere questa
1226 lista. La lista di cui ha bisogno è in realtà una lista di valori
1227 in unità interne, ma per evitare di dover imparare quali siano queste
1228 unità vengono forniti vari modi di specificare un colore. Il primo
1229 modo consiste nell'usare uno dei colori @q{normali} elencati nella
1230 prima tabella in @ruser{List of colors}. Per rendere bianche le
1231 stanghette scriviamo:
1233 @cindex BarLine, esempio di sovrascrittura
1234 @cindex proprietà color
1235 @cindex color, proprietà
1237 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1240 \override Staff.BarLine #'color = #white
1242 g,8 a16 b8 c d4 e16 |
1248 e di nuovo vediamo che le stanghette non sono visibili. Si noti
1249 che @emph{white} non è preceduto da un apostrofo, perché non
1250 è un simbolo, ma una @emph{funzione}. Quando viene chiamata, fornisce
1251 la lista di valori interni necessari per impostare il colore su
1252 bianco. Gli altri colori nella lista normale sono anch'essi
1253 funzioni. Per convincerti che funziona potresti provare a
1254 cambiare il colore e usare una delle altre funzioni presenti
1263 Il secondo modo per cambiare il colore è attraverso la lista
1264 di nomi di colori X11 che si trova in @ruser{List of colors}.
1265 Tuttavia questi colori devono essere preceduti da un'altra
1266 funzione che converte i nomi di colori X11 nella lista di
1267 valori interni, @code{x11-color}:
1269 @cindex BarLine, esempio di sovrascrittura
1270 @cindex proprietà color, esempio
1271 @cindex color, esempio
1273 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1276 \override Staff.BarLine #'color = #(x11-color 'white)
1278 g,8 a16 b8 c d4 e16 |
1284 Si noti che in questo caso la funzione @code{x11-color} prende
1285 un simbolo come argomento, dunque il simbolo deve essere preceduto
1286 da un apostrofo e i due elementi devono essere racchiusi tra parentesi.
1294 Esiste una terza funzione, che converte i valori RGB in colori
1295 interni, la funzione @code{rgb-color}. Prende tre argomenti
1296 che specificano l'intensità dei colori rosso, verde e blu.
1297 I valori vanno da 0 a 1. Quindi per avere il colore rosso
1298 il valore sarà @code{(rgb-color 1 0 0)}
1299 e per avere il bianco sarà @code{(rgb-color 1 1 1)}:
1301 @cindex BarLine, esempio di sovrascrittura
1302 @cindex proprietà color, esempio
1303 @cindex color, esempio
1305 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1308 \override Staff.BarLine #'color = #(rgb-color 1 1 1)
1310 g,8 a16 b8 c d4 e16 |
1315 Infine, è disponibile anche una scala di grigi, appartenente all'insieme
1316 di colori X11. Questi vanno dal nero, @code{'grey0},
1317 al bianco, @code{'grey100}, con cadenza di 1. Ecco un
1318 esempio in cui tutti gli oggetti di formattazione sono
1319 impostati su diverse tonalità di grigio:
1321 @cindex StaffSymbol, esempio di sovrascrittura
1322 @cindex TimeSignature, esempio di sovrascrittura
1323 @cindex Clef, esempio di sovrascrittura
1324 @cindex NoteHead, esempio di sovrascrittura
1325 @cindex Stem, esempio di sovrascrittura
1326 @cindex BarLine, esempio di sovrascrittura
1327 @cindex proprietà color, esempio
1328 @cindex color, esempio
1329 @cindex x11-color, esempio di utilizzo
1331 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1334 \override Staff.StaffSymbol #'color = #(x11-color 'grey30)
1335 \override Staff.TimeSignature #'color = #(x11-color 'grey60)
1336 \override Staff.Clef #'color = #(x11-color 'grey60)
1337 \override Voice.NoteHead #'color = #(x11-color 'grey85)
1338 \override Voice.Stem #'color = #(x11-color 'grey85)
1339 \override Staff.BarLine #'color = #(x11-color 'grey10)
1341 g,8 a16 b8 c d4 e16 |
1347 Nota i contesti associati a ciascuno degli oggetti di formattazione.
1348 È importante scegliere quelli giusti, altrimenti i comandi non
1349 funzioneranno! Ricorda, il contesto è quello in cui si trova il
1350 relativo incisore. Il contesto predefinito per gli incisori si trova
1351 partendo dall'oggetto di formattazione (@emph{layout object}) per poi
1352 andare all'incisore che lo produce: la pagina dell'incisore nella
1353 guida al Funzionamento interno riporterà a quale contesto
1354 appartenga di norma l'incisore.
1357 @node Dimensione degli oggetti
1358 @subsection Dimensione degli oggetti
1359 @translationof Size of objects
1361 @cindex modificare la dimensione degli oggetti
1362 @cindex dimensione degli oggetti
1363 @cindex oggetti, dimensione degli
1364 @cindex oggetti, modificare la dimensione degli
1366 Iniziamo rivedendo l'esempio precedente (vedi
1367 @ref{Nesting music expressions}) che mostrava come
1368 inserire un nuovo rigo temporaneo, come in un @rglos{ossia}.
1370 @cindex proprietà alignAboveContext, esempio
1371 @cindex @code{\with}, esempio
1373 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1374 \new Staff ="main" {
1381 alignAboveContext = #"main" }
1389 Gli ossia di norma vengono scritti senza chiave e senza indicazione di
1390 tempo e hanno solitamente una dimensione leggermente inferiore a
1391 quella del rigo pricipale. Sappiamo già come togliere la chiave e
1392 il segno di tempo, cioè impostando semplicemente la proprietà stencil di
1393 ciascun oggetto su @code{#f}, così:
1395 @cindex proprietà alignAboveContext, esempio
1396 @cindex @code{\with}, esempio
1397 @cindex proprietà stencil, esempio
1398 @cindex Clef, esempio di sovrascrittura
1399 @cindex TimeSignature, esempio di sovrascrittura
1401 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1402 \new Staff ="main" {
1409 alignAboveContext = #"main"
1412 \override Staff.Clef #'stencil = ##f
1413 \override Staff.TimeSignature #'stencil = ##f
1423 dove l'ulteriore coppia di parentesi dopo il blocco @code{\with} è
1424 necessaria perché le sovrascritture e la musica racchiusi
1425 siano applicati al rigo dell'ossia.
1427 Ma qual è la differenza tra modificare il contesto del rigo con
1428 @code{\with} e modificare la proprietà stencil della chiave e
1429 del segno di tempo con \override? La principale differenza è
1430 che le modifiche inserite in un blocco @code{\with} vengono applicate
1431 nel momento in cui viene creato il contesto e permangono come valori
1432 @strong{predefiniti} per la durata di quel contesto, mentre i
1433 comandi @code{\set} o @code{\override} incorporati nel blocco
1434 della musica sono dinamici -- le loro modifiche sono sincronizzate
1435 con un punto preciso della musica. Se le modifiche sono disattivate o
1436 ripristinate con @code{\unset} o @code{\revert} tornano ai valori
1437 stabiliti nel blocco @code{\with} o, in mancanza di impostazioni
1438 al suo interno, a quelli predefiniti.
1440 Alcune proprietà di contesto possono essere modificate solo nei blocchi
1441 @code{\with}. Si tratta di quelle proprietà che non si possono
1442 modificare in seguito alla creazione del contesto. @code{alignAboveContext} e
1443 @code{alignBelowContext} sono due di esse: dopo la creazione
1444 del rigo il suo allineamento è fissato, e non ha
1445 senso tentare di cambiarlo successivamente.
1447 I valori predefiniti delle proprietà degli oggetti di formattazione possono
1448 essere definiti anche nei blocchi @code{\with}. Basta usare il normale comando
1449 @code{\override} senza specificare il nome del contesto, dato che questo è
1450 definito senza ambiguità come il contesto che il blocco @code{\with} sta
1451 modificando. Anzi, viene generato un errore se si specifica un contesto
1452 in questa situazione.
1454 Dunque possiamo sostituire l'esempio precedente con
1456 @cindex alignAboveContext property, esempio
1457 @cindex @code{\with}, esempio
1458 @cindex Clef, esempio di sovrascrittura
1459 @cindex TimeSignature, esempio di sovrascrittura
1461 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1462 \new Staff ="main" {
1469 alignAboveContext = #"main"
1470 % Nasconde le chiavi di questo rigo
1471 \override Clef #'stencil = ##f
1472 % Nasconde le indicazioni di tempo di questo rigo
1473 \override TimeSignature #'stencil = ##f
1482 Infine arriviamo a modificare la dimensione degli oggetti di formattazione.
1484 Alcuni oggetti di formattazione sono dei glifi scelti da un tipo di
1485 carattere. Ad esempio le teste di nota, le alterazioni, le annotazioni,
1486 le chiavi, le indicazioni di tempo, la dinamica, il testo vocale. La loro dimensione
1487 varia se si modifica la proprietà @code{font-size}, come vedremo a
1488 breve. Altri oggetti di formattazione come le legature di portamento e
1489 di valore -- in generale, tutti gli oggetti estensori (@emph{spanner}) -- vengono
1490 disegnati individualmente, dunque non esiste un @code{font-size} a loro
1491 associato. Questi oggetti generalmente derivano la loro dimensione dagli
1492 oggetti a cui sono connessi, quindi di solito non è necessario modificare
1493 la loro dimensione a mano. Altre proprietà, come la lunghezza dei gambi
1494 e delle stanghette, lo spessore delle travature e di altre linee e la
1495 separazione delle linee del rigo, devono essere modificate in modi speciali.
1497 Tornando all'esempio dell'ossia, proviamo prima a cambiare font-size.
1498 Possiamo farlo in due modi. Possiamo modificare la dimensione dei
1499 tipi di carattere di ogni tipo di oggetto, come le teste di nota
1500 (@code{NoteHead}) con un comando di questo tipo
1503 \override NoteHead #'font-size = #-2
1506 oppure possiamo modificare la dimensione di tutti i tipi di carattere usando
1507 una proprietà speciale, @code{fontSize}, con @code{\set} oppure includendola
1508 in un blocco @code{\with} (ma senza @code{\set}).
1514 Entrambe queste dichiarazioni fanno sì che la dimensione del tipo di carattere
1515 sia ridotta di due unità rispetto al valore precedente, dove ogni unità
1516 riduce o aumenta la dimensione di circa il 12%.
1518 Proviamolo nel nostro esempio dell'ossia:
1520 @cindex alignAboveContext property, esempio
1521 @cindex @code{\with}, esempio
1522 @cindex Clef, esempio di sovrascrittura
1523 @cindex TimeSignature, esempio di sovrascrittura
1524 @cindex proprietà fontSize, esempio
1525 @cindex fontSize, esempio
1527 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1528 \new Staff ="main" {
1535 alignAboveContext = #"main"
1536 \override Clef #'stencil = ##f
1537 \override TimeSignature #'stencil = ##f
1538 % Riduce la dimensione di tutti i tipi di carattere di circa il 24%
1548 L'esempio non è ancora a posto. Le teste di nota e le code sono
1549 più piccole, ma in proporzione i gambi sono troppo lunghi e le linee
1550 del rigo sono troppo separate. Dovrebbero essere scalati in proporzione
1551 alla riduzione del tipo di carattere. La prossima sezione spiega come
1554 @node Lunghezza e spessore degli oggetti
1555 @subsection Lunghezza e spessore degli oggetti
1556 @translationof Length and thickness of objects
1559 @cindex thickness, proprietà
1563 @cindex dimensione, modificare la
1564 @cindex lunghezza del gambo, modificare la
1565 @cindex spaziatura delle linee del rigo, modificare la
1567 Distanze e lunghezze in LilyPond sono misurate generalmente in @code{staff-space},
1568 ovvero la distanza tra linee adiacenti del rigo (o talvolta la metà di uno
1569 spazio rigo), mentre gran parte delle proprietà che controllano lo spessore
1570 (@code{thickness}) sono misurate con l'unità di misura di una proprietà
1571 interna chiamata @code{line-thickness.} Ad esempio, lo spessore predefinito
1572 delle linee delle forcine è di 1 unità di @code{line-thickness},
1573 mentre lo spessore (@code{thickness}) di un gambo di nota è 1.3. Si noti
1574 che alcune proprietà dello spessore sono diverse; per esempio, lo spessore
1575 delle travature è controllato dal valore della proprietà @code{beam-thickness},
1576 che si misura in @code{staff-space}.
1578 Dunque come si possono scalare le lunghezze in proporzione alla
1579 dimensione del carattere?
1580 È possibile ricorrendo a una funzione speciale chiamata
1581 @code{magstep}, che serve proprio a questo scopo. Prende un
1582 argomento, la modifica della dimensione del tipo di carattere (#-2
1583 nell'esempio precedente) e restituisce un fattore di ridimensionamento
1584 adatto a ridurre gli altri oggetti proporzionalmente. Si usa in
1587 @cindex proprietà alignAboveContext, esempio
1588 @cindex alignAboveContext, esempio
1589 @cindex @code{\with}, esempio
1590 @cindex Clef, esempio di sovrascrittura
1591 @cindex TimeSignature, esempio di sovrascrittura
1592 @cindex proprietà fontSize, esempio
1593 @cindex fontSize, esempio
1594 @cindex StaffSymbol, esempio di sovrascrittura
1595 @cindex funzione magstep, esempio di uso
1596 @cindex magstep, esempio di uso
1597 @cindex proprietà staff-space, esempio
1598 @cindex staff-space, esempio
1599 @cindex proprietà stencil, esempio
1600 @cindex stencil, esempio
1602 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1603 \new Staff ="main" {
1610 alignAboveContext = #"main"
1611 \override Clef #'stencil = ##f
1612 \override TimeSignature #'stencil = ##f
1614 % Riduce proporzionalmente la lunghezza dei gambi e la spaziatura tra le linee
1615 \override StaffSymbol #'staff-space = #(magstep -2)
1625 Dato che la lunghezza dei gambi e molte altre proprietà relative alla
1626 lunghezza sono sempre calcolate in relazione al valore della proprietà
1627 @code{staff-space}, anche queste sono automaticamente ridimensionate
1628 in lunghezza. Nota che ciò riguarda solo la scala verticale
1629 dell'ossia -- la scala orizzontale è determinata dalla formattazione
1630 della musica principale perché deve restare sincronizzata con quest'ultima,
1631 quindi le modifiche di dimensione non la riguardano. Ovviamente, se
1632 la scala di tutta la musica principale venisse cambiata allora la
1633 spaziatura orizzontale cambierebbe. Tratteremo questo argomento più
1634 avanti, nella parte relativa alla formattazione.
1636 Questo completa la creazione dell'ossia. Le dimensioni e le lunghezze
1637 di tutti gli altri oggetti possono essere modificati in modi analoghi.
1639 Per piccole modifiche della dimensione, come nell'esempio precedente, non
1640 sono necessari solitamente degli aggiustamenti globali dello spessore delle
1641 varie linee disegnate (come stanghette, travature, forcine, legature di
1642 portamento, etc.). Se si deve aggiustare lo spessore di un
1643 particolare oggetto di formattazione, è meglio sovrascrivere la sua
1644 proprietà @code{thickness}. Un esempio di come modificare lo spessore
1645 delle legature di portamento è stato mostrato prima in @ref{Properties of layout objects}.
1646 Lo spessore di tutti gli oggetti disegnati (ovvero quelli non prodotti
1647 da un tipo di carattere) può essere cambiato nello stesso modo.
1650 @node Posizionamento degli oggetti
1651 @section Posizionamento degli oggetti
1652 @translationof Placement of objects
1655 * Comportamento automatico::
1656 * Oggetti interni al rigo::
1657 * Oggetti esterni al rigo::
1661 @node Comportamento automatico
1662 @subsection Comportamento automatico
1663 @translationof Automatic behavior
1665 @cindex within-staff, oggetti
1666 @cindex outside-staff, oggetti
1667 @cindex oggetti dentro il rigo
1668 @cindex oggetti fuori dal rigo
1670 Nella notazione musicale, alcuni oggetti appartengono al rigo, altri
1671 devono esserne posizionati al di fuori. In LilyPond si chiamano rispettivamente oggetti within-staff
1672 (dentro il rigo) e oggetti outside-staff (fuori dal rigo).
1674 Gli oggetti within-staff sono quelli che si trovano nel rigo, come
1675 le teste e i gambi delle note, le alterazioni, etc.. La loro posizione
1676 è determinata perlopiù dalla musica stessa: in verticale sono collocati
1677 su determinate posizioni del rigo o sono collegati
1678 ad altri oggetti disposti in questo modo. Di norma LilyPond evita
1679 automaticamente le collisioni tra teste di nota, gambi e alterazioni
1680 in accordi con note ravvicinate. Esistono comunque dei comandi che
1681 permettono di modificare questo comportamento automatico, come
1684 Gli oggetti che appartengono allo spazio fuori dal rigo comprendono
1685 gli andamenti, i numeri di chiamata, il testo vocale, le indicazioni dinamiche. Il comportamento di
1686 LilyPond per il posizionamento verticale degli oggetti outside-staff
1687 prevede che questi vengano collocati il più vicino possibile al rigo, mantenendo
1688 però una distanza sufficiente da evitare collisioni con gli altri oggetti. LilyPond
1689 usa la proprietà @code{outside-staff-priority} per determinare in quale ordine
1690 gli oggetti siano posizionati.
1692 Per prima cosa LilyPond posiziona tutti gli oggetti within-staff.
1693 Poi ordina gli oggetti outside-staff in base alla loro proprietà
1694 @code{outside-staff-priority}. Gli oggetti outside-staff vengono
1695 considerati uno a uno, a partire dall'oggetto che ha il valore più basso
1696 di priorità (@code{outside-staff-priority}), e disposti in modo
1697 da non entrare in collisione con alcun oggetto già posizionato.
1698 Questo significa che se due oggetti outside-staff si contendono lo
1699 stesso spazio, quello col valore più basso di @code{outside-staff-priority}
1700 sarà più vicino al rigo. Se due oggetti presentano lo stesso valore per
1701 @code{outside-staff-priority}, quello incontrato per primo viene posizionato
1704 Nell'esempio seguente tutti i testi hanno la stessa priorità (perché
1705 questa non è impostata in modo esplicito). Come puoi vedere, @q{Testo3}
1706 è di nuovo posto automaticamente in prossimità del rigo, infilato
1709 @cindex markup, esempio
1711 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1718 Di norma, anche i righi sono collocati quanto più possibile ravvicinati
1719 (ma con una distanza minima). Se delle note si estenderanno molto
1720 al di fuori del rigo, fino a quello adiacente, costringeranno i righi a distanziarsi
1721 solo in caso di sovrapposizione degli elementi della notazione. L'esempio
1722 seguente mostra questo @q{annidamento} delle note su righi adiacenti:
1724 @lilypond[quote,ragged-right,verbatim]
1727 \relative c' { c4 a, }
1730 \relative c'''' { c4 a, }
1736 @node Oggetti interni al rigo
1737 @subsection Oggetti interni al rigo
1738 @translationof Within-staff objects
1740 Abbiamo già visto come i comandi @code{\voiceXXX} influenzino
1741 la direzione di legature di portamento e di valore, delle diteggiature e
1742 di qualsiasi altro elemento che dipenda dalla direzione dei gambi.
1743 Questi comandi sono fondamentali quando si scrive musica polifonica,
1744 perché permettono di distinguere le linee melodiche che si intrecciano.
1745 Talvolta, però, capita di voler modificare questo comportamento
1746 automatico. Si può fare per intere sezioni musicali o anche per
1747 una singola nota. La proprietà che controlla questo comportamento
1748 è la proprietà @code{direction} di ogni oggetto di formattazione.
1749 Spieghiamo prima che cosa fa e poi presentiamo alcuni comandi
1750 già pronti, che ti eviteranno di dover scrivere sovrascritture
1751 esplicite per le modifiche più comuni.
1753 Alcuni oggetti di formattazione, come le legature di portamento e di
1754 valore, si incurvano, si piegano o puntano verso l'alto o il basso; altri,
1755 come i gambi e le code, a seconda dell'orientamento si dispongono anche sulla
1756 destra o sulla sinistra. Tutto questo viene controllato automaticamente
1757 quando si imposta la proprietà @code{direction}.
1764 L'esempio seguente mostra nella prima battuta il comportamento predefinito
1765 dei gambi, per cui i gambi delle note superiori puntano in basso e quelli delle
1766 note inferiori in alto; poi seguono quattro note con tutti i gambi
1767 forzati verso il basso, quattro con i gambi forzati verso l'alto e, infine, quattro
1768 con i gambi nuovamente disposti secondo il comportamento predefinito.
1770 @cindex Stem, esempio di sovrascrittura
1771 @cindex proprietà direction, esempio
1772 @cindex direction, esempio
1774 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1776 \override Stem #'direction = #DOWN
1778 \override Stem #'direction = #UP
1780 \revert Stem #'direction
1784 Abbiamo usato le costanti @code{DOWN} (giù) e @code{UP} (su).
1785 Queste hanno rispettivamente i valori @w{@code{-1}} e @code{+1}, ed
1786 è possibile usare tali valori numerici al loro posto. In alcuni casi
1787 si può usare anche il valore @code{0}, che significa @code{UP} per i
1788 gambi, ma per alcuni oggetti significa @q{center} (centro).
1789 Esiste una costante, @code{CENTER} che ha valore @code{0}.
1791 Tuttavia queste sovrascritture esplicite solitamente non vengono usate, perché
1792 ci sono dei comandi predefiniti equivalenti e più semplici. Ecco una tabella
1793 con quelli più utilizzati; il significato di ognuno è esplicitato laddove
1796 @multitable @columnfractions .2 .2 .25 .35
1797 @headitem Giù/Sinistra
1801 @item @code{\arpeggioArrowDown}
1802 @tab @code{\arpeggioArrowUp}
1803 @tab @code{\arpeggioNormal}
1804 @tab Aggiunge una freccia in fondo, in cima o toglie la freccia
1805 @item @code{\dotsDown}
1807 @tab @code{\dotsNeutral}
1808 @tab Direzione dello spostamento per evitare le linee del rigo
1809 @item @code{\dynamicDown}
1810 @tab @code{\dynamicUp}
1811 @tab @code{\dynamicNeutral}
1813 @item @code{\phrasingSlurDown}
1814 @tab @code{\phrasingSlurUp}
1815 @tab @code{\phrasingSlurNeutral}
1816 @tab Nota: è diverso dai comandi slur
1817 @item @code{\slurDown}
1819 @tab @code{\slurNeutral}
1821 @item @code{\stemDown}
1823 @tab @code{\stemNeutral}
1825 @item @code{\textSpannerDown}
1826 @tab @code{\textSpannerUp}
1827 @tab @code{\textSpannerNeutral}
1828 @tab Il testo inserito come oggetto estensore (spanner) va sotto/sopra il rigo
1829 @item @code{\tieDown}
1831 @tab @code{\tieNeutral}
1833 @item @code{\tupletDown}
1834 @tab @code{\tupletUp}
1835 @tab @code{\tupletNeutral}
1836 @tab I gruppi irregolare sono sotto/sopra le note
1839 Si noti che questi comandi predefiniti @strong{non} possono essere
1840 preceduti da @code{\once}. Se desideri limitare l'effetto a una
1841 singola nota, devi usare il comando @code{\once \override} equivalente
1842 oppure il comando predefinito seguito, dopo la nota in questione, dal
1843 corrispondente comando @code{\xxxNeutral}.
1845 @unnumberedsubsubsec Diteggiatura
1847 @cindex diteggiatura, posizionamento
1848 @cindex diteggiatura, accordi
1850 Anche il posizionamento della diteggiatura sulle singole note può essere
1851 controllato dalla proprietà @code{direction}, ma la modifica di @code{direction}
1852 non produce effetti sugli accordi. Come vedremo, ci sono comandi specifici
1853 che permettono di controllare la diteggiatura delle singole note degli
1854 accordi, col segno di diteggiatura posizionato sopra, sotto, a sinistra
1855 o a destra di ogni nota.
1857 Vediamo innanzitutto l'effetto di @code{direction} sulla diteggiatura
1858 attaccata alle singole note. La prima battuta mostra il comportamento
1859 predefinito e le due battute successive mostrano gli effetti dei valori
1860 @code{DOWN} e @code{UP}:
1862 @cindex Fingering, esempio di sovrascrittura
1863 @cindex proprietà direction, esempio
1864 @cindex direction, esempio
1866 @lilypond[quote,verbatim,relative=2]
1868 \override Fingering #'direction = #DOWN
1870 \override Fingering #'direction = #UP
1874 Tuttavia sovrascrivere la proprietà @code{direction} non è il modo
1875 più semplice di definire a mano la diteggiatura sopra o sotto
1876 le note; di solito è preferibile usare @code{_} o @code{^} invece di @code{-}
1877 prima del numero della diteggiatura. Ecco l'esempio precedente riscritto
1878 usando questo metodo:
1880 @cindex fingering, esempio
1882 @lilypond[quote,verbatim,relative=2]
1888 La proprietà @code{direction} viene ignorata negli accordi, ma i
1889 prefissi direzionali, @code{_} e @code{^} funzionano. Per impostazione
1890 predefinita, la diteggiatura viene disposta automaticamente sopra e
1891 sotto le note di un accordo:
1893 @cindex fingering, esempio
1895 @lilypond[quote,verbatim,relative=2]
1902 ma può essere sovrascritta per forzare manualmente in su o in giù tutti o
1903 alcuni dei singoli numeri della diteggiatura:
1905 @cindex fingering, esempio
1907 @lilypond[quote,verbatim,relative=2]
1913 È possibile avere un controllo ancora maggiore sulla disposizione della
1914 diteggiatura delle singole note di un accordo usando il comando
1915 @code{\set fingeringOrientations}. Il formato di questo comando è:
1918 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
1922 Si usa @code{\set} perché @code{fingeringOrientations} è una
1923 proprietà del contesto @code{Voice}, creato e usato dall'incisore
1924 @code{New_fingering_engraver}.
1926 Questa proprietà accetta come valori una lista comprendente da uno a tre elementi.
1927 Stabilisce se la diteggiatura debba essere posizionata sopra (se nella
1928 lista c'è @code{up}), sotto (se c'è @code{down}), a sinistra (se c'è
1929 @code{left}) o a destra (se c'è @code{right}). Nel caso vengano inseriti valori
1930 non accettati dalla lista, non sarà invece collocata alcuna diteggiatura. LilyPond
1931 prende in considerazione questi limiti e trova la migliore disposizione per
1932 la diteggiatura delle note degli accordi che seguono. Nota che @code{left} e
1933 @code{right} si escludono a vicenda -- la diteggiatura può essere posta
1934 solo da un lato o dall'altro, non da entrambi.
1936 @warning{Per controllare la posizione della diteggiatura di una
1937 singola nota con questo comando bisogna scrivere la nota come un accordo
1938 con una nota sola, ovvero racchiuderla tra parentesi angolari.}
1942 @cindex fingering, esempio
1943 @cindex @code{\set}, esempio di utilizzo
1944 @cindex proprietà fingeringOrientations, esempio
1946 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1947 \set fingeringOrientations = #'(left)
1950 \set fingeringOrientations = #'(left)
1952 <c-1 e-2 g-3 b-5>4 |
1953 \set fingeringOrientations = #'(up left down)
1956 \set fingeringOrientations = #'(up left)
1958 <c-1 e-2 g-3 b-5>4 |
1959 \set fingeringOrientations = #'(right)
1965 Se la diteggiatura appare eccessivamente fitta, si può ridurre la dimensione del
1966 tipo di carattere modificando la proprietà @code{font-size}. Si può vedere
1967 nell'oggetto @code{Fingering} della guida al Funzionamento interno che il
1968 valore predefinito di tale proprietà è @w{@code{-5}}, dunque proviamo
1971 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1972 \override Fingering #'font-size = #-7
1973 \set fingeringOrientations = #'(left)
1976 \set fingeringOrientations = #'(left)
1978 <c-1 e-2 g-3 b-5>4 |
1979 \set fingeringOrientations = #'(up left down)
1982 \set fingeringOrientations = #'(up left)
1984 <c-1 e-2 g-3 b-5>4 |
1985 \set fingeringOrientations = #'(right)
1990 @node Oggetti esterni al rigo
1991 @subsection Oggetti esterni al rigo
1992 @translationof Outside-staff objects
1994 Gli oggetti esterni al rigo sono disposti automaticamente in modo da evitare
1995 collisioni. Gli oggetti dai valori più bassi per la proprietà
1996 @code{outside-staff-priority} vengono posizionati più vicino al rigo,
1997 mentre gli altri oggetti esterni al rigo vengono distanziati quanto
1998 basta per evitare collisioni. La proprietà @code{outside-staff-priority} è
1999 definita nell'interfaccia @code{grob-interface} ed è quindi una proprietà di
2000 tutti gli oggetti di formattazione. Il valore predefinito è @code{#f} per
2001 tutti gli oggetti interni al rigo e un valore numerico appropriato, determinato
2002 al momento della creazione dell'oggetto, per ogni oggetto esterno al rigo. La
2003 seguente tabella mostra i valori numerici predefiniti di alcuni dei più comuni
2004 oggetti esterni al rigo.
2006 @cindex estensori (spanner)
2009 Si notino i nomi insoliti di alcuni oggetti: gli oggetti estensori (spanner)
2010 sono creati automaticamente per controllare la disposizione verticale dei
2011 grob che (potrebbero) iniziare e finire in diversi momenti musicali, quindi
2012 la modifica della proprietà @code{outside-staff-priority} del grob sottostante
2013 non produrrebbe alcun effetto. Ad esempio, la modifica di
2014 @code{outside-staff-priority} dell'oggetto @code{Hairpin} non avrà alcun
2015 effetto sulla disposizione verticale delle forcelle. Occorre invece modificare
2016 la proprietà @code{outside-staff-priority} dell'oggetto associato
2017 @code{DynamicLineSpanner}. Questa sovrascrittura deve essere posta
2018 all'inizio dell'estensore, che potrebbe includere più forcelle e indicazioni dinamiche
2021 @multitable @columnfractions .3 .3 .3
2022 @headitem Oggetto di formattazione
2024 @tab Controlla la posizione di:
2025 @item @code{RehearsalMark}
2027 @tab Numeri di chiamata (e oggetti di testo analoghi)
2028 @item @code{MetronomeMark}
2030 @tab Indicazioni metronomiche
2031 @item @code{VoltaBracketSpanner}
2033 @tab Delimitatori dei finali alternativi delle ripetizioni
2034 @item @code{TextScript}
2036 @tab Oggetti di testo
2037 @item @code{MultiMeasureRestText}
2039 @tab Testi sopra pause di più misure
2040 @item @code{OttavaBracket}
2042 @tab Estensioni del segno d'ottava
2043 @item @code{TextSpanner}
2045 @tab Estensori del testo
2046 @item @code{DynamicLineSpanner}
2048 @tab Tutte le indicazioni dinamiche
2049 @item @code{BarNumber}
2051 @tab Numeri di battuta
2052 @item @code{TrillSpanner}
2054 @tab Linee ondulate del trillo
2057 Ecco un esempio che mostra il posizionamento predefinito di alcuni di
2060 @cindex estensore del testo
2061 @cindex segno del cambio d'ottava
2063 @funindex \startTextSpan
2064 @funindex startTextSpan
2065 @funindex \stopTextSpan
2066 @funindex stopTextSpan
2068 @cindex TextSpanner, esempio di sovrascrittura
2069 @cindex proprietà bound-details, esempio
2070 @cindex bound-details, esempio
2072 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2073 % Set details for later Text Spanner
2074 \override TextSpanner #'(bound-details left text)
2075 = \markup { \small \bold Slower }
2076 % Place dynamics above staff
2078 % Start Ottava Bracket
2081 % Add Dynamic Text and hairpin
2087 % Add Dynamic Text and terminate hairpin
2088 c4\ff c \stopTextSpan |
2089 % Stop Ottava Bracket
2094 Questo esempio mostra anche come creare gli estensori (spanner) del testo,
2095 ovvero testo con delle linee che si estendono sopra una sezione musicale.
2096 L'estensore si allunga dal comando @code{\startTextSpan} fino al comando
2097 @code{\stopTextSpan} e il formato del testo è definito dal comando
2098 @code{\override TextSpanner}. Per maggiori dettagli si veda @ruser{Text spanners}.
2100 Mostra anche come si creano le estensioni del segno d'ottava.
2102 @cindex modificare il posizionamento del numero di battuta
2103 @cindex numeri di battuta, modificare il posizionamento
2104 @cindex modificare il posizionamento dell'indicazione metronomica
2105 @cindex indicazione metronomica, modificare il posizionamento
2106 @cindex modificare il posizionamento dei numeri di chiamata
2107 @cindex numeri di chiamata, modificare il posizionamento
2109 Se i valori predefiniti di @code{outside-staff-priority} non producono
2110 il posizionamento desiderato, è possibile sovrascrivere la priorità di
2111 qualsiasi oggetto. Immaginiamo di voler posizionare l'estensione del segno d'ottava
2112 sotto l'estensore del testo nell'esempio precedente. Basta controllare la
2113 priorità dell'oggetto @code{OttavaBracket} nella guida al Funzionamento interno
2114 o nelle tabelle precedenti e ridurla a un valore inferiore di quello di un
2115 oggetto @code{TextSpanner}, ricordando che @code{OttavaBracket} è creato
2116 nel contesto @code{Staff}:
2118 @cindex TextSpanner, esempio di sovrascrittura
2119 @cindex proprietà bound-details, esempio
2120 @cindex bound-details, esempio
2122 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2123 % Imposta i dettagli per l'estensione del testo vocale seguente
2124 \override TextSpanner #'(bound-details left text)
2125 = \markup { \small \bold Slower }
2126 % Posiziona le indicazione dinamiche sopra il rigo
2128 % Posiziona l'estensione del segno d'ottava sotto il testo vocale
2129 \once \override Staff.OttavaBracket #'outside-staff-priority = #340
2130 % Inizia l'estensione del segno d'ottava
2133 % Aggiunge l'indicazione dinamica
2135 % Aggiunge la forcella della dinamica
2137 % Aggiunge l'oggetto di testo
2140 % Aggiunge l'indicazione dinamica
2141 c4\ff c \stopTextSpan |
2142 % Termina l'estensione de segno d'ottava
2147 Si noti che alcuni di questi oggetti, in particolare i numeri di
2148 battuta, i segni di metronomo e i numeri di chiamata, si trovano nel
2149 contesto @code{Score}; dunque, assicurati di richiamare il contesto
2150 giusto per sovrascriverli.
2152 @cindex legature di portamento e outside-staff-priority
2153 @cindex legature di portamento e articolazioni
2154 @cindex articolazioni e legature di portamento
2156 Le legature di portamento sono classificate come oggetti interni al rigo, anche
2157 se spesso sono poste sopra il rigo, se le note alle quali sono collegate si
2158 trovano nella aprte superiore del pentagramma. Questo può far sì che gli oggetti esterni al rigo,
2159 come le articolazioni, siano spinti troppo in alto, dato che la legatura viene
2160 posizionata prima. La proprietà @code{avoid-slur} dell'articolazione
2161 può essere impostata su @code{'inside} per portare l'articolazione
2162 dentro la legatura, ma la proprietà @code{avoid-slur} funziona solo se anche
2163 @code{outside-staff-priority} è impostata su @code{#f}.
2164 Altrimenti, si può impostare la proprietà @code{outside-staff-priority} della
2165 legatura di portamento su un valore numerico, in modo che sia posizionata
2166 insieme ad altri oggetti esterni al rigo in base a quel valore. Ecco un
2167 esempio che mostra l'effetto dei due metodi:
2169 @lilypond[quote,verbatim,relative=2]
2170 c4( c^\markup { \tiny \sharp } d4.) c8 |
2172 \once \override TextScript #'avoid-slur = #'inside
2173 \once \override TextScript #'outside-staff-priority = ##f
2174 c4^\markup { \tiny \sharp } d4.) c8 |
2175 \once \override Slur #'outside-staff-priority = #500
2176 c4( c^\markup { \tiny \sharp } d4.) c8 |
2179 Attraverso la proprietà @code{outside-staff-priority} si può
2180 regolare anche la disposizone verticale di singoli oggetti;
2181 i risultati potrebbero tuttavia risultare non sempre ottimali. Supponiamo
2182 di voler posizionare @qq{Testo3} sopra @qq{Testo4} nell'esempio
2183 precedente (si veda @ref{Automatic behavior}).
2184 Basta andare a cercare la priorità di @code{TextScript} nella
2185 guida al Funzionamento interno o nelle tabelle precedenti e
2186 aumentare la priorità di @qq{Testo3} assegnando un valore più alto:
2188 @cindex TextScript, esempio di sovrascrittura
2189 @cindex proprietà outside-staff-priority, esempio
2190 @cindex outside-staff-priority, esempio
2192 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2195 \once \override TextScript #'outside-staff-priority = #500
2200 Questo ovviamente pone @qq{Testo3} sopra @qq{Testo4}, ma anche
2201 sopra @qq{Testo2}, mentre @qq{Testo4} si sposta più in basso. Forse questo
2202 risultato non ci soddisfa: vorremmo piuttosto collocare
2203 tutti i testi alla stessa distanza dal rigo. Per riuscirci,
2204 naturalmente, dobbiamo creare più spazio orizzontale tra le note per
2205 far posto al testo. Lo si può ottenere con il comando
2206 @code{textLengthOn}.
2208 @subheading \textLengthOn
2210 @cindex note, distanziarle insieme al testo
2212 @funindex \textLengthOn
2213 @funindex textLengthOn
2214 @funindex \textLengthOff
2215 @funindex textLengthOff
2217 Per impostazione predefinita, finché si tratta di formattare la musica il
2218 testo prodotto dal comando \markup non occupa uno spazio orizzontale.
2219 Il comando @code{\textLengthOn} inverte questo comportamento e fa sì che
2220 le note si distanzino quanto basti per introdurre il testo:
2222 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2223 \textLengthOn % Fa sì che le note si distanzino per introdurre il testo
2230 Il comando che ripristina il comportamento predefinito è
2231 @code{\textLengthOff}. Ricorda che @code{\once} funziona solo insieme
2232 a @code{\override}, @code{\set}, @code{\revert} o @code{\unset},
2233 dunque non si può usare con @code{\textLengthOn}.
2235 @cindex testo a margine, permettere le collisioni
2237 Per parte sua, anche il testo a margine eviterà le note che si estendono sopra il
2238 rigo. Se lo si vuole evitare, la disposizione automatica in alto può
2239 essere disattivata impostando la priorità su @code{#f}. Ecco un esempio
2240 che mostra come il testo a margine interagisce con tali note.
2242 @cindex TextScript, esempio di sovrascrittura
2243 @cindex proprietà outside-staff-priority, esempio
2244 @cindex outside-staff-priority, esempio
2246 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2247 % Questo testo è abbastanza corto per starci senza creare collisioni
2251 % Questo è troppo lungo per starci, quindi è spostato più in alto
2255 % Disattiva l'elusione delle collisioni
2256 \once \override TextScript #'outside-staff-priority = ##f
2257 c,,2^"Testo Lungo " c'' |
2260 % Disattiva l'elusione delle collisioni
2261 \once \override TextScript #'outside-staff-priority = ##f
2262 \textLengthOn % e attiva textLengthOn
2263 c,,2^"Testo Lungo " % Gli spazi finali vengono rispettati
2268 @subheading Dinamica
2270 @cindex modificare il posizionamento della dinamica
2271 @cindex dinamica, modificare il posizionamento
2273 Le indicazioni dinamiche sono di norma poste sotto il
2274 rigo, ma possono essere collocati al di sopra del pentagramma col comando @code{\dynamicUp}.
2275 Vengono posizionati verticalmente rispetto alla figura cui
2276 si riferiscono e fluttuano sopra (o sotto) tutti gli oggetti
2277 interni al rigo come le legature di fraseggio e i numeri di battuta.
2278 Si ottengono risultati abbastanza accettabili, come dimostra
2281 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2286 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2287 ees,2.~\)\mf ees4 r8 |
2290 Tuttavia, se le note e le loro dinamiche sono molto vicine,
2291 la disposizione automatica eviterà le collisioni spostando
2292 più all'esterno i segni di dinamica successivi. Questo
2293 potrebbe non essere però il posizionamento migliore, come mostra
2294 questo esempio piuttosto improbabile:
2296 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2302 Se si dovesse presentare una situazione simile in un @q{vero} brano musicale,
2303 converrebbe distanziare un po' di più le note, in modo che i segni di dinamica
2304 possano essere tutti collocati alla stessa distanza verticale dal rigo. Abbiamo
2305 potuto farlo per il testo a margine usando il comando @code{\textLengthOn},
2306 ma non esiste un comando equivalente per i segni di dinamica. Dunque
2307 dovremo scoprire come farlo usando i comandi @code{\override}.
2309 @subheading Estensione dei grob
2311 @cindex estensione dei grob
2312 @cindex grob, estensione
2314 Dobbiamo innanzitutto sapere come i grob occupano lo spazio. Tutti i grob
2315 hanno al loro interno un punto di riferimento che viene usato
2316 per posizionarli in modo relativo all'oggetto genitore da cui derivano. Questo
2317 punto nel grob viene poi disposto a una distanza orizzontale,
2318 @code{X-offset}, e a una distanza verticale, @code{Y-offset}, dall'oggetto
2319 genitore. L'estensione (@emph{extent}) orizzontale dell'oggetto è data da una
2320 coppia di numeri, @code{X-extent}, che indica dove si trovano i margini
2321 sinistro e destro rispetto al punto di riferimento. L'ampiezza verticale
2322 è ugualmente definita da una coppia di numeri, @code{Y-extent}.
2323 Queste proprietà appartengono a tutti i grob che supportano l'interfaccia
2324 @code{grob-interface}.
2326 @cindex @code{extra-spacing-width}
2328 Per impostazione predefinita, gli oggetti esterni al rigo presentano estensione
2329 pari a zero, in modo da potersi sovrapporre nella direzione orizzontale.
2330 Ciò si ottiene con un trucco, ovvero aggiungendo infinito all'estensione
2331 sinistra e infinito negativo a quella destra, impostando il valore di
2332 @code{extra-spacing-width} su @code{'(+inf.0 . -inf.0)}. Dunque, per
2333 assicurarci che non si sovrappongano nella direzione orizzontale, dobbiamo
2334 sovrascrivere il valore di @code{extra-spacing-width} e impostarlo su
2335 @code{'(0 . 0)} in modo da inserire una larghezza vera e propria. Ecco il
2336 comando che lo fa sul testo della dinamica:
2339 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2343 Vediamo se funziona nell'esempio precedente:
2345 @cindex DynamicText, esempio di sovrascrittura
2346 @cindex proprietà extra-spacing-width, esempio
2347 @cindex extra-spacing-width, esempio
2349 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2351 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2352 a4\f b\mf c\mp b\p |
2356 Sicuramente ha impedito un'errata disposizione delle indicazioni
2357 dinamiche, ma restano due problemi. Le dinamiche dovrebbero
2358 essere un po' più distanziate; sarebbe inoltre opportuno collocarle
2359 tutte alla stessa distanza dal rigo.
2360 Il primo problema è facilmente risolvibile. Invece di
2361 impostare @code{extra-spacing-width} su zero, possiamo
2362 aggiungere un po' di spazio. L'unità è lo spazio tra due linee
2363 del rigo, quindi se spostiamo il margine sinistro mezza unità
2364 a sinistra e il margine destro mezza unità a destra dovrebbe
2367 @cindex DynamicText, esempio di sovrascrittura
2368 @cindex proprietà extra-spacing-width, esempio
2369 @cindex extra-spacing-width, esempio
2371 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2373 % Aumenta la larghezza di 1 spazio rigo
2374 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2379 L'aspetto è migliore, ma sarebbe preferibile avere i segni di dinamica
2380 allineati alla stessa linea di base invece di spostarsi su e giù seguendo la posizione delle note.
2381 La proprietà che permette di ottenere tale risultato è @code{staff-padding} ed è trattata
2382 nella sezione seguente.
2385 @node Collisioni tra oggetti
2386 @section Collisioni tra oggetti
2387 @translationof Collisions of objects
2390 * Spostare gli oggetti::
2391 * Correggere la sovrapposizione di elementi della notazione::
2392 * Esempio musicale::
2395 @node Spostare gli oggetti
2396 @subsection Spostare gli oggetti
2397 @translationof Moving objects
2399 @cindex spostare gli oggetti che si sovrappongono
2400 @cindex spostare gli oggetti che collidono
2401 @cindex spostare i grob che collidono
2402 @cindex oggetti, spostarli se collidono
2403 @cindex grob, spostarli se collidono
2405 Per quanto possa apparire sorprendente, LilyPond non è perfetto. Alcuni elementi
2406 della notazione possono sovrapporsi. Si tratta di un caso spiacevole, anche se in
2407 realtà piuttosto raro. Di solito l'esigenza di spostare gli
2408 oggetti dipende da motivi di chiarezza o da ragioni estetiche: gli elementi
2409 possono ottenere un aspetto migliore con un po' più o un po' meno
2412 Esistono tre principali approcci per risolvere la sovrapposizione
2413 degli elementi della notazione. Vediamoli nel seguente ordine:
2417 Si può cambiare la @strong{direzione} di uno degli oggetti che si
2418 sovrappongono usando i comandi predefiniti elencati prima, in riferimento agli
2419 oggetti interni al rigo (vedi @ref{Within-staff objects}).
2420 In questo modo si possono riposizionare facilmente gambi, legature di
2421 portamento e di valore, travature, segni di dinamica, testo e gruppi
2422 irregolari. La limitazione è che si tratta di una scelta circoscritta a due sole
2423 posizioni, nessuna delle quali potrebbe essere appropriata.
2426 Le @strong{proprietà degli oggetti}, che LilyPond usa quando dispone
2427 gli oggetti di formattazione, si possono modificare con @code{\override}. I
2428 vantaggi dell'intervenire su questo tipo di proprietà sono che (a)
2429 gli altri oggetti saranno spostati automaticamente se è necessario far
2430 spazio, e (b) ogni sovrascrittura può essere applicata a tutte le occorrenze
2431 di oggetti dello stesso tipo. Tali proprietà sono:
2438 Questa è già stata trattata in dettaglio (vedi
2439 @ref{Within-staff objects}).
2442 @code{padding}, @code{right-padding}, @code{staff-padding}
2446 @cindex proprietà padding
2447 @cindex proprietà right-padding
2448 @cindex proprietà staff-padding
2449 @cindex padding, proprietà
2450 @cindex right-padding, proprietà
2451 @cindex staff-padding, proprietà
2453 Quando un oggetto viene posizionato, il valore della sua proprietà
2454 @code{padding} specifica lo spazio intermedio da lasciare tra l'oggetto stesso
2455 e il bordo più vicino di quello accanto a cui si trova. Nota che si
2456 tratta del valore di @code{padding} dell'oggetto che @strong{si sta
2457 posizionando}, mentre quello dell'oggetto già posizionato viene
2458 ignorato. Gli spazi specificati da @code{padding} possono essere
2459 applicati a tutti gli oggetti che supportano l'interfaccia
2460 @code{side-position-interface}.
2462 Invece che da @code{padding}, la disposizione dei gruppi di alterazioni
2463 è regolata da @code{right-padding}. Questa proprietà appartiene all'oggetto
2464 @code{AccidentalPlacement} che si trova nel contesto @strong{Staff}. Il
2465 processo di formattazione della partitura crea per prime le teste di
2466 nota e poi, se presenti, aggiunge le alterazioni alla sinistra delle
2467 teste di nota usando la proprietà @code{right-padding} per stabilire
2468 la distanza tra le teste e le singole alterazioni.
2469 Dunque, solo la proprietà @code{right-padding} dell'oggetto @code{AccidentalPlacement}
2470 produce un effetto sul posizionamento delle alterazioni.
2472 La proprietà @code{staff-padding} è strettamente connessa alla proprietà
2473 @code{padding}: @code{padding} regola la quantità minima di spazio tra
2474 qualsiasi oggetto che supporti l'interfaccia @code{side-position-interface} e
2475 quello più vicino (solitamente, la nota o le linee del rigo); @code{staff-padding}
2476 si applica solo a quegli oggetti che stanno sempre fuori dal rigo e regola
2477 la quantità minima di spazio da inserire tra l'oggetto e il rigo. Nota che
2478 @code{staff-padding} non ha alcun effetto sugli oggetti disposti relativamente
2479 alla nota invece che al rigo, anche se può essere sovrascritto senza generare
2480 degli errori per tali oggetti; quindi viene semplicemente ignorata.
2482 Per scoprire quale proprietà padding è richiesta per l'oggetto che
2483 desideri riposizionare, devi tornare alla guida del Funzionamento
2484 interno e cercare le proprietà dell'oggetto. Presta attenzione al fatto
2485 che le proprietà padding potrebbero non trovarsi nell'oggetto più
2486 ovvio; in tal caso devi cercare negli oggetti simili.
2488 I valori delle proprietà padding sono misurati in spazi del rigo. Il valore
2489 predefinito della maggior parte degli oggetti è circa 1.0 o meno (a seconda
2490 dell'oggetto). Può essere sovrascritto per ottenere una distanza maggiore
2494 @code{self-alignment-X}
2496 @cindex proprietà self-alignment-X
2497 @cindex self-alignment-X, proprietà
2499 Questa proprietà serve ad allineare l'oggetto a sinistra, a destra o
2500 al centro rispetto al punto di riferimento dell'oggetto genitore.
2501 Si può usare con tutti gli oggetti che supportano l'interfaccia
2502 @code{self-alignment-interface}. Generalmente si tratta di oggetti
2503 che contengono testo. I valori sono @code{LEFT} (sinistra), @code{RIGHT}
2504 (destra) o @code{CENTER} (centro). Altrimenti, è possibile definire un valore
2505 numerico compreso tra @w{@code{-1}} e @code{+1}, dove @w{@code{-1}} indica
2506 allineamento a sinistra e @code{+1} allineamento a destra, mentre gli altri
2507 numeri spostano progressivamente il testo dall'allineamento a sinistra
2508 all'allineamento a destra. È possibile specificare valori numerici maggiori
2509 di @code{1}, per spostare il testo ancora più a sinistra, o valori inferiori
2510 a @w{@code{-1}}, per spostarlo ancora più a destra. Ogni modifica di @code{1}
2511 nel valore corrisponde a uno spostamento pari alla metà della lunghezza
2515 @code{extra-spacing-width}
2517 @cindex proprietà extra-spacing-width
2518 @cindex extra-spacing-width, proprietà
2520 Questa proprietà è disponibile per tutti gli oggetti che supportano
2521 l'interfaccia @code{item-interface}. Accetta due numeri: il primo è
2522 aggiunto all'estensione più a sinistra, il secondo a quella più a
2523 destra. I numeri negativi spostano il bordo verso sinistra, quelli
2524 positivi verso destra: quindi, per allargare un oggetto il primo
2525 numero deve essere negativo, il secondo deve essere positivo.
2526 Nota che non tutti gli oggetti rispettano entrambi i numeri. Ad
2527 esempio, l'oggetto @code{Accidental} considera soltanto il primo
2528 numero (bordo sinistro).
2531 @code{staff-position}
2533 @cindex proprietà staff-position
2534 @cindex staff-position, proprietà
2536 @code{staff-position} è una proprietà dell'interfaccia
2537 @code{staff-symbol-referencer-interface}, supportata dagli oggetti
2538 che vengono posizionati in relazione al rigo. Specifica in unità
2539 di mezzo spazio di rigo la posizione verticale dell'oggetto rispetto
2540 alla linea centrale del rigo stesso. È utile per risolvere collisioni
2541 tra oggetti come le pause di più misure, le legature di valore e le
2542 note in voci diverse.
2547 @cindex proprietà force-hshift
2548 @cindex force-hshift, proprietà
2550 Le note ravvicinate di un accordo o quelle simultanee appartenenti
2551 a voci diverse sono disposte su due e talvolta più colonne per
2552 impedire la sovrapposizione delle teste. Tali colonne si chiamano
2553 colonne di note (@emph{note columns}) e l'oggetto che provvede a crearle
2554 si chiama @code{NoteColumn}.
2556 La proprietà @code{force-hshift} appartiene a @code{NoteColumn}
2557 (più precisamente all'interfaccia @code{note-column-interface}). Modificandola
2558 è possibile spostare la colonna di note proporzionalmente,
2559 assumendo come unità la larghezza della testa della nota nella voce superiore. Si usa
2560 in situazioni complesse in cui i normali comandi @code{\shiftOn} (vedi
2561 @ref{Explicitly instantiating voices}) non risolvono adeguatamente le collisioni tra le
2562 note. Per questo scopo, è preferibile alla proprietà @code{extra-offset}
2563 perché non c'è bisogno di trovare la giusta distanza in spazi di rigo e
2564 lo spostamento delle note dentro o fuori da una @code{NoteColumn}
2565 si ripercuote su altre azioni, come il congiungimento delle teste delle note.
2570 Infine, se i metodi precedenti non funzionano, si possono riposizionare
2571 verticalmente gli oggetti rispetto alla linea centrale del rigo
2572 oppure collocarli a una qualsiasi distanza rispetto a una nuova
2573 posizione. Gli svantaggi di questo metodo consistono nel fatto che i corretti
2574 valori per il riposizionamento debbano essere trovati per tentativi e per ogni
2575 singolo oggetto; inoltre, dato che lo spostamento avviene dopo che LilyPond
2576 ha posizionato tutti gli altri oggetti, spetta all'utente evitare le
2577 eventuali collisioni. La principale
2578 difficoltà che questo approccio comporta, però, è che i valori di riposizionamento
2579 potrebbero dover essere ricalcolati se la musica venisse successivamente
2580 modificata. Le proprietà che si possono usare con questo tipo di
2581 riposizionamento manuale sono:
2586 @cindex proprietà extra-offset
2587 @cindex extra-offset, proprietà
2589 Questa proprietà si applica a qualsiasi oggetto di formattazione che supporta
2590 l'interfaccia @code{grob-interface}. Accetta come valore una coppia di numeri
2591 che specificano l'ulteriore spostamento nelle direzioni orizzontale e verticale.
2592 I numeri negativi spostano l'oggetto a sinistra o in basso. Le unità sono
2593 gli spazi del rigo. Questo spostamento aggiuntivo è applicato dopo la formattazione
2594 degli oggetti, dunque gli oggetti possono essere riposizionati ovunque senza
2595 incidere sugli altri.
2599 @cindex proprietà positions
2600 @cindex positions, proprietà
2602 Questa proprietà è utile specialmente per correggere manualmente l'inclinazione e
2603 l'altezza di travature, legature di portamento e graffette dei gruppi irregolari. Accetta
2604 come valore una coppia di numeri, che specifica la posizione dei bordi sinistro
2605 e destro della travatura, della legatura, etc., rispetto alla linea centrale
2606 del rigo. L'unità di misura è lo spazio del rigo. Considera, però,
2607 che le legature di portamento e di frase non possono essere riposizionate
2608 del tutto arbitrariamente. LilyPond, infatti, genera prima una lista
2609 delle possibili posizioni per la legatura e poi determina la legatura che
2610 @qq{ritiene migliore}. Se la proprietà @code{positions} è stata sovrascritta,
2611 viene scelta dalla lista la legatura più vicina alle posizioni richieste.
2616 Alcuni oggetti potrebbero non disporre di tutte queste proprietà.
2617 Occorre andare a vedere nella guida al Funzionamento interno
2618 quali proprietà siano disponibili per l'oggetto che si intende
2621 Segue una lista degli oggetti che hanno la maggiore probabilità
2622 di essere coinvolti in collisioni, insieme al nome dell'oggetto
2623 che deve essere cercato nella guida al Funzionamento interno per
2624 poter sapere quali proprietà si possono usare per spostarlo.
2626 @multitable @columnfractions .5 .5
2627 @headitem Tipo di oggetto @tab Nome dell'oggetto
2628 @item Articolazioni @tab @code{Script}
2629 @item Travature @tab @code{Beam}
2630 @item Dinamiche (verticalmente) @tab @code{DynamicLineSpanner}
2631 @item Dinamiche (orizzontalmente) @tab @code{DynamicText}
2632 @item Diteggiature @tab @code{Fingering}
2633 @item Numeri di chiamata / Testi @tab @code{RehearsalMark}
2634 @item Legature di portamento @tab @code{Slur}
2635 @item Testi, ovvero @code{^"testo"} @tab @code{TextScript}
2636 @item Legature di valore @tab @code{Tie}
2637 @item Gruppi irregolari @tab @code{TupletBracket}
2641 @node Correggere la sovrapposizione di elementi della notazione
2642 @subsection Correggere la sovrapposizione di elementi della notazione
2643 @translationof Fixing overlapping notation
2645 Vediamo ora come le proprietà presentate nella sezione precedente possano
2646 aiutare a risolvere la sovrapposizione degli elementi della notazione.
2648 @subheading proprietà padding
2652 @cindex correggere la sovrapposizione di elementi della notazione
2653 @cindex sovrapposizione degli elementi della notazione
2655 La proprietà @code{padding} serve a aumentare (o diminuire)
2656 la distanza tra i simboli che si trovano sopra o sotto le
2659 @cindex Script, esempio di sovrascrittura
2660 @cindex proprietà padding, esempio
2661 @cindex padding, esempio
2663 @lilypond[quote,fragment,relative=1,verbatim]
2665 \override Script #'padding = #3
2669 @cindex MetronomeMark, esempio di sovrascrittura
2670 @cindex proprietà padding, esempio
2671 @cindex padding, esempio
2673 @lilypond[quote,fragment,relative=1,verbatim]
2674 % Questo non funziona, vedi sotto
2675 \override MetronomeMark #'padding = #3
2679 \override Score.MetronomeMark #'padding = #3
2684 Nota nel secondo esempio come è importante sapere quale contesto
2685 gestisce un certo oggetto. Dato che l'oggetto @code{MetronomeMark}
2686 è regolato dal contesto @code{Score}, le modifiche della proprietà
2687 nel contesto @code{Voice} non vengono prese in considerazione. Per
2688 approfondire l'argomento si veda @ruser{Modifying properties}.
2690 Se la proprietà @code{padding} di un oggetto viene aumentata quando
2691 quell'oggetto si trova insieme ad altri oggetti disposti secondo la
2692 loro proprietà @code{outside-staff-priority}, allora si sposteranno
2693 quell'oggetto e tutti gli oggetti esterni a esso.
2696 @subheading right-padding
2698 @cindex proprietà right-padding
2699 @cindex right-padding, proprietà
2701 La proprietà @code{right-padding} agisce sullo spazio tra l'alterazione
2702 e la nota corrispondente. Non è una necessità frequente, ma la
2703 spaziatura predefinita potrebbe risultare errata nei casi di alcuni
2704 speciali glifi delle alterazioni usati nella musica microtonale.
2705 Questi si inseriscono sovrascrivendo lo stampo (stencil) dell'alterazione
2706 con un segno che contenga il simbolo desiderato:
2708 @cindex Accidental, esempio di sovrascrittura
2709 @cindex proprietà text, esempio
2710 @cindex text, esempio
2711 @cindex proprietà stencil, esempio
2712 @cindex stencil, esempio
2713 @cindex AccidentalPlacement, esempio di sovrascrittura
2714 @cindex proprietà right-padding, esempio
2715 @cindex right-padding, esempio
2717 @lilypond[quote,ragged-right,verbatim]
2718 sesquisharp = \markup { \sesquisharp }
2721 % Mostra un triesis (alterazione ascendente di tre quarti di tono) ma lo spazio è troppo stretto
2722 \once \override Accidental
2723 #'stencil = #ly:text-interface::print
2724 \once \override Accidental #'text = #sesquisharp
2726 % Ecco come migliorare lo spazio
2727 \once \override Score.AccidentalPlacement #'right-padding = #0.6
2728 \once \override Accidental
2729 #'stencil = #ly:text-interface::print
2730 \once \override Accidental #'text = #sesquisharp
2736 Siamo costretti a usare una sovrascrittura dello stampo dell'alterazione che
2737 verrà spiegata successivamente. Il tipo di stampo deve essere una
2738 procedura e in questo esempio è stato modificato per mostrare i
2739 contenuti della proprietà @code{text} dell'oggetto @code{Accidental}, che
2740 è esso stesso impostato sul segno di triesis. Poi
2741 questo segno viene distanziato dalla testa di nota grazie alla sovrascrittura
2742 di @code{right-padding}.
2746 @subheading proprietà staff-padding
2748 @cindex allineare gli oggetti a una base
2749 @cindex oggetti, allinearli a una base
2751 @code{staff-padding} serve ad allineare gli oggetti come i segni di
2752 dinamica lungo una linea di base a una certa altezza fissa sopra il
2753 rigo, invece che a un'altezza dipendente dalla posizione della nota al
2754 quale sono collegati. Non è una proprietà di @code{DynamicText} bensì
2755 di @code{DynamicLineSpanner}, perché la base deve essere applicata
2756 ugualmente a @strong{tutti} i segni dinamica, compresi quelli creati
2757 come estensori. Ecco come allineare i segni di dinamica nell'esempio
2758 preso dalla sezione precedente:
2760 @cindex DynamicText, esempio di sovrascrittura
2761 @cindex proprietà extra-spacing-width, esempio
2762 @cindex extra-spacing-width, esempio
2763 @cindex DynamicLineSpanner, esempio di sovrascrittura
2764 @cindex proprietà staff-padding, esempio
2765 @cindex staff-padding, esempio
2767 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2769 % Aumenta la larghezza di 1 unità
2770 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2771 % Allinea le dinamiche alla base posta 2 unità sopra il rigo
2772 \override DynamicLineSpanner #'staff-padding = #2
2777 @subheading proprietà self-alignment-X
2779 L'esempio successivo mostra come questa proprietà possa risolvere la
2780 collisione di un numero di corda con un gambo allineando il bordo
2781 destro del numero al punto di riferimento della nota a cui si riferisce:
2783 @cindex StringNumber, esempio di sovrascrittura
2784 @cindex proprietà self-alignment-X, esempio
2785 @cindex self-alignment-X, esempio
2787 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2790 \once \override StringNumber #'self-alignment-X = #RIGHT
2794 @subheading proprietà staff-position
2796 @cindex collisione tra oggetti all'interno del rigo
2798 Le pause d'intero di una voce possono entrare in collisione con le note
2799 di un'altra. Dal momento che queste pause sono centrate rispetto
2800 alle stanghette della battuta, calcolare quali altre note potrebbero
2801 sovrapporsi richiederebbe un notevole grado d'elaborazione, dato che l'attuale
2802 gestione delle collisioni tra note e tra note e pause riguarda solo
2803 le note e le pause simultanee. Ecco un esempio
2804 di collisione di questo tipo:
2806 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2807 << { c4 c c c } \\ { R1 } >>
2810 In questo caso la soluzione migliore è spostare in basso la pausa d'intero, poiché
2811 si trova nella seconda voce. In @code{\voiceTwo} (ovvero nella seconda
2812 voce di un costrutto @code{<<@{...@} \\ @{...@}>>}) il valore predefinito
2813 di @code{staff-position} è -4 per la pausa multipla (MultiMeasureRest), quindi
2814 dobbiamo spostarla più in basso, ad esempio di altri quattro semispazi del
2815 rigo; il nuovo valore sarà @w{@code{-8}}.
2817 @cindex MultiMeasureRest, esempio di sovrascrittura
2818 @cindex proprietà staff-position, esempio
2819 @cindex staff-position, esempio
2821 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2825 \override MultiMeasureRest #'staff-position = #-8
2830 Questa soluzione è preferibile all'uso di @code{extra-offset}, perché
2831 il taglio addizionale sopra la pausa è inserito automaticamente.
2833 @subheading proprietà extra-offset
2835 @cindex posizionare gli oggetti
2836 @cindex posizionare i grob
2837 @cindex oggetti, posizionarli
2838 @cindex grob, posizionarli
2840 La proprietà @code{extra-offset} fornisce un controllo completo
2841 sul posizionamento di un oggetto sia in orizzontale che in verticale.
2843 Nell'esempio seguente, la seconda diteggiatura viene spostata un po' a
2844 sinistra e in basso di 1.8 spazi rigo:
2846 @cindex Fingering, esempio di sovrascrittura
2847 @cindex proprietà extra-offset, esempio
2848 @cindex extra-offset, esempio
2850 @lilypond[quote,fragment,relative=1,verbatim]
2853 \once \override Fingering #'extra-offset = #'(-0.3 . -1.8)
2858 @subheading proprietà positions
2860 @cindex controllo manuale di graffette dei gruppi irregolari, travature, legature di portamento e di frase
2861 @cindex travature dei gruppi irregolari, controllo manuale
2862 @cindex legature di portamento, controllo manuale
2863 @cindex legature di frase, controllo manuale
2864 @cindex travature, controllo manuale
2866 La proprietà @code{positions} permette di controllare manualmente la posizione e
2867 l'inclinazione delle graffette dei gruppi irregolari, delle legature di portamento e di
2868 frase e delle travature. Ecco un esempio di una legatura di frase
2869 dall'aspetto orribile, dovuto al suo tentativo di evitare la legatura
2870 di portamento sull'acciaccatura.
2872 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2873 r4 \acciaccatura e8\( d8 c~ c d c d\)
2877 Potremmo semplicemente spostare la legatura di frase sopra le note:
2879 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2882 \acciaccatura e8\( d8 c~ c d c d\)
2886 Questa sarebbe la soluzione migliore. Se, invece, per qualche motivo non
2887 fosse possibile, l'alternativa sarebbe spostare un po' più in basso l'estremità
2888 sinistra della legatura di frase tramite la proprietà @code{positions}. Questo
2889 risolve anche il problema della forma sgraziata.
2891 @cindex PhrasingSlur, esempio di sovrascrittura
2892 @cindex proprietà positions, esempio
2893 @cindex positions, esempio
2895 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2897 \once \override PhrasingSlur #'positions = #'(-4 . -3)
2898 \acciaccatura e8\( d8 c~ c d c d\)
2901 Ecco un altro esempio. Vediamo che le travature collidono
2902 con le legature di valore:
2904 @lilypond[quote,verbatim,fragment,ragged-right]
2908 { c'1 ~ c'2. e'8 f' }
2910 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
2913 { c'1 ~ c'2. e'8 f' }
2915 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
2921 Si può risolvere spostando manualmente in su entrambi gli estremi della
2922 travatura dalla loro posizione di 1.81 spazi rigo sotto la linea
2923 centrale a, per esempio, 1:
2925 @cindex Beam, esempio di sovrascrittura
2926 @cindex proprietà positions, esempio
2927 @cindex positions, esempio
2929 @lilypond[quote,verbatim,fragment,ragged-right]
2933 { c'1 ~ c'2. e'8 f' }
2936 \override Beam #'positions = #'(-1 . -1)
2937 e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g''
2941 { c'1 ~ c'2. e'8 f' }
2943 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
2949 Come vedi, la sovrascrittura si applica anche alla prima voce della seconda
2950 misura di otto note, ma a nessuna delle travature nella seconda voce.
2952 @subheading proprietà force-hshift
2954 Possiamo vedere ora come applicare le correzioni finali all'esempio di Chopin
2955 introdotto alla fine del paragrafo @ref{I'm hearing Voices}, che avevamo
2958 @lilypond[quote,verbatim,fragment,ragged-right]
2959 \new Staff \relative c'' {
2974 La nota interna del primo accordo (ovvero il La bemolle della quarta
2975 voce) non deve essere allontanata dalla colonna della nota più
2976 alta. Per correggerlo impostiamo @code{force-hshift}, una proprietà
2977 di @code{NoteColumn}, su zero.
2979 Nel secondo accordo preferiamo che il Fa sia allineato al La bemolle e che
2980 la nota più grave sia posizionata leggermente più a destra, in modo da
2981 evitare la collisione dei gambi. Per farlo dobbiamo impostare
2982 @code{force-hshift} nella colonna (@code{NoteColumn}) del Re bemolle
2983 grave in modo che si sposti a destra di mezzo spazio di rigo.
2985 Ecco il risultato finale:
2987 @cindex NoteColumn, esempio di sovrascrittura
2988 @cindex proprietà force-hshift, esempio
2989 @cindex force-hshift, esempio
2991 @lilypond[quote,verbatim,fragment,ragged-right]
2992 \new Staff \relative c'' {
2999 \once \override NoteColumn #'force-hshift = #0.5
3005 \override NoteColumn #'force-hshift = #0
3014 @node Esempio musicale
3015 @subsection Esempio musicale
3016 @translationof Real music example
3018 Completiamo questa sezione delle modifiche (@emph{tweak}) mostrando passo passo
3019 come affrontare un esempio complesso che necessita varie modifiche per
3020 poter raggiungere l'aspetto desiderato. L'esempio è stato scelto
3021 appositamente per mostrare come usare la guida alla Notazione per
3022 risolvere problemi inusuali di notazione. Non rispecchia l'uso
3023 abituale di LilyPond, quindi non farti scoraggiare da queste difficoltà!
3024 Per fortuna problemi come questi sono molto rari!
3026 L'esempio è tratto dalla Première Ballade op. 23 di Chopin e va
3027 dalla battuta 6 alla 9, la transizione dal Lento iniziale al Moderato.
3028 Vediamo prima come vogliamo che l'output appaia; per evitare di
3029 complicare troppo l'esempio abbiamo però tolto le dinamiche, le diteggiature
3030 e le pedalizzazioni.
3032 @c The following should appear as music without code
3033 @c This example should not be indexed
3034 @c line-width ensures no break
3035 @lilypond[quote,ragged-right,line-width=6\in]
3036 rhMusic = \relative c'' {
3039 \once \override Tie #'staff-position = #3.5
3043 \mergeDifferentlyHeadedOn
3044 \mergeDifferentlyDottedOn
3045 bes2.^\markup { \bold "Moderato" } r8
3051 % Reposition the c2 to the right of the merged note
3052 \once \override NoteColumn #'force-hshift = #1.0
3053 % Move the c2 out of the main note column
3054 % so the merge will work
3061 % Stem on the d2 must be down to permit merging
3063 % Stem on the d2 should be invisible
3064 \tweak Stem #'transparent ##t
3065 \tweak Flag #'transparent ##t
3073 \mergeDifferentlyHeadedOff
3074 \mergeDifferentlyDottedOff
3079 lhMusic = \relative c' {
3081 <d g, d>1)\arpeggio |
3088 \new Staff = "RH" <<
3092 \new Staff = "LH" <<
3101 Vediamo che la parte della mano destra nella terza battuta
3102 richiede quattro voci. Si tratta delle cinque crome unite da travatura,
3103 il Do legato, la minima di Re che è unita alla croma di
3104 Re, e la semiminima puntata del Fa diesis, anch'essa unita
3105 alla croma della stessa altezza. Tutto il resto è su una
3106 voce singola, quindi il sistema più semplice è introdurre queste
3107 ulteriori voci temporaneamente, quando sono richieste. Se ti
3108 sei dimenticato come fare, rileggi i paragrafi @ref{I'm hearing Voices} e
3109 @ref{Explicitly instantiating voices}. In questo caso scegliamo di
3110 usare per il passaggio polifonico le voci definite esplicitamente, dato
3111 che LilyPond riesce a evitare meglio le collisioni se tutte le voci
3112 sono definite esplicitamente in questo modo.
3114 Dunque iniziamo con l'inserire le note in due variabili, impostare la
3115 struttura del rigo in un blocco \score e vedere che cosa LilyPond
3116 produce senza modifiche manuali:
3118 @c line-width ensures no break
3119 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3120 rhMusic = \relative c'' {
3126 % Inizia la sezione polifonica a quattro voci
3128 { c,8 d fis bes a } % continuazione della voce principale
3142 g2. % continuazione della voce principale
3146 lhMusic = \relative c' {
3155 \new Staff = "RH" <<
3159 \new Staff = "LH" <<
3168 Le note sono giuste ma l'aspetto è ben lontano dall'essere
3169 soddisfacente. La legatura collide col nuovo segno di tempo,
3170 alcune note non sono accorpate e mancano vari elementi
3171 della notazione. Partiamo dalle cose più semplici. Possiamo
3172 aggiungere la legatura di portamento della mano sinistra e la legatura
3173 di frase della mano destra, dato che queste sono state già trattate
3174 nel Tutorial. In questo modo abbiamo:
3176 @c line-width ensures no break
3177 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3178 rhMusic = \relative c'' {
3184 % Inizia la sezione polifonica a quattro voci
3186 { c,8 d fis bes a } % continuazione della voce principale
3200 g2.\) % continuazione della voce principale
3204 lhMusic = \relative c' {
3213 \new Staff = "RH" <<
3217 \new Staff = "LH" <<
3226 Ora la prima battuta è corretta. La seconda battuta contiene un arpeggio e
3227 è terminata da una stanghetta doppia. Dato che non sono stati menzionati
3228 in questo manuale di Apprendimento, come possiamo ottenerli? Dobbiamo
3229 andare a vedere nella guida alla Notazione. Cercando nell'indice
3230 i termini @qq{arpeggio} e @qq{stanghetta}, scopriamo rapidamente che un arpeggio
3231 viene prodotto posponendo @code{\arpeggio} a un accordo e che la stanghetta
3232 doppia si ottiene col comando @code{\bar "||"}. Questo è stato facile. Ora
3233 dobbiamo correggere la collisione della legatura di valore con l'indicazione di tempo.
3234 Il modo migliore è spostare la legatura verso l'alto. Lo spostamento degli oggetti
3235 è stato trattato prima in @ref{Moving objects}, dove si dice che gli oggetti
3236 posizionati relativamente al rigo possono essere spostati verticalmente
3237 sovrascrivendo la proprietà @code{staff-position}, specificata in metà spazi-rigo
3238 rispetto alla linea centrale del rigo. Dunque la seguente sovrascrittura
3239 posizionata proprio prima della prima nota della legatura sposta la legatura
3240 3.5 mezzi spazi di rigo sopra la linea centrale:
3242 @code{\once \override Tie #'staff-position = #3.5}
3244 Questo completa la seconda battuta:
3246 @c line-width ensures no break
3247 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3248 rhMusic = \relative c'' {
3251 \once \override Tie #'staff-position = #3.5
3256 % Inizia la sezione polifonica a quattro voci
3258 { c,8 d fis bes a } % continuazione della voce principale
3272 g2.\) % continuazione della voce principale
3276 lhMusic = \relative c' {
3278 <d g, d>1)\arpeggio |
3285 \new Staff = "RH" <<
3289 \new Staff = "LH" <<
3298 Proseguiamo con la terza battuta e l'inizio della sezione del Moderato. Nel
3299 tutorial abbiamo visto come aggiungere del testo in grassetto tramite il
3300 comando @code{\markup}, quindi aggiungere @qq{Moderato} in grassetto è
3301 facile. Ma come facciamo ad accorpare le note appartenenti a voci
3302 diverse? Ancora una volta dobbiamo rivolgerci alla guida alla Notazione per
3303 un aiuto. Una ricerca del termine @qq{accorpare} (@emph{merge}) nell'indice della
3304 guida ci porta rapidamente al paragrafo @ruser{Collision resolution}, dove
3305 troviamo i comandi per allineare le note con teste e punti diversi. Nel
3306 nostro esempio abbiamo bisogno di accorpare entrambi i tipi di note per la
3307 durata della sezione polifonica della terza battuta. Dunque, usando le
3308 informazioni trovate nella guida alla Notazione, aggiungiamo
3311 \mergeDifferentlyHeadedOn
3312 \mergeDifferentlyDottedOn
3316 all'inizio di questa sezione e
3319 \mergeDifferentlyHeadedOff
3320 \mergeDifferentlyDottedOff
3324 alla fine, ottenendo:
3326 @c line-width ensures no break
3327 @lilypond[quote,ragged-right,line-width=6\in]
3328 rhMusic = \relative c'' {
3331 \once \override Tie #'staff-position = #3.5
3335 bes2.^\markup { \bold "Moderato" } r8
3336 \mergeDifferentlyHeadedOn
3337 \mergeDifferentlyDottedOn
3338 % Inizia la sezione polifonica a quattro voci
3340 { c,8 d fis bes a } % continuazione della voce principale
3354 \mergeDifferentlyHeadedOff
3355 \mergeDifferentlyDottedOff
3356 g2.\) % continuazione della voce principale
3360 lhMusic = \relative c' {
3362 <d g, d>1)\arpeggio |
3369 \new Staff = "RH" <<
3373 \new Staff = "LH" <<
3382 Queste sovrascritture hanno accorpato i due Fa diesis, ma non i due
3383 Re. Perché? La risposta si trova nella stessa sezione della
3384 guida alla Notazione: le note da unire devono avere i gambi in
3385 direzioni opposte e due note non possono essere accorpate se c'è
3386 una terza nota nella stessa colonna. In questo esempio i due Re
3387 hanno entrambi i gambi in su e c'è una terza nota, il Do. Sappiamo
3388 come cambiare la direzione dei gambi con @code{\stemDown} e la
3389 guida alla Notazione ci dice anche come spostare il Do, applicando
3390 uno spostamento con uno dei comandi @code{\shift}. Ma quale? Il Do
3391 si trova nella seconda voce che ha lo spostamento (@emph{shift}) disattivato,
3392 mentre i due Re sono nella prima e nella terza voce, che ce l'hanno
3393 rispettivamente disattivato e attivato. Dunque dobbiamo distanziare il
3394 Do di un ulteriore livello usando @code{\shiftOnn} per evitare che
3395 interferisca con i due Re. Applicando queste modifiche abbiamo:
3397 @cindex Tie, esempio di sovrascrittura
3398 @cindex proprietà staff-position, esempio
3399 @cindex staff-position, esempio
3401 @c line-width ensures no break
3402 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3403 rhMusic = \relative c'' {
3406 \once \override Tie #'staff-position = #3.5
3410 bes2.^\markup { \bold "Moderato" } r8
3411 \mergeDifferentlyHeadedOn
3412 \mergeDifferentlyDottedOn
3413 % Inizia la sezione polifonica a quattro voci
3415 { c,8 d fis bes a } % continuazione della voce principale
3418 % Sposta il c2 fuori dalla colonna della nota principale
3419 % in modo che l'unione di note funzioni
3424 % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3432 \mergeDifferentlyHeadedOff
3433 \mergeDifferentlyDottedOff
3434 g2.\) % continuazione della voce principale
3438 lhMusic = \relative c' {
3440 <d g, d>1)\arpeggio |
3447 \new Staff = "RH" <<
3451 \new Staff = "LH" <<
3460 Ci siamo quasi, restano solo due problemi: il gambo in giù del
3461 Re unito non ci dovrebbe essere e il Do dovrebbe essere posizionato
3462 a destra dei Re. Sappiamo come fare grazie alle modifiche precedenti:
3463 rendiamo il gambo trasparente e spostiamo il Do con la proprietà
3464 @code{force-hshift}. Ecco il risultato finale:
3466 @cindex NoteColumn, esempio di sovrascrittura
3467 @cindex proprietà force-hshift, esempio
3468 @cindex force-hshift, esempio
3469 @cindex Stem, esempio di sovrascrittura
3470 @cindex proprietà transparent, esempio
3471 @cindex transparent, esempio
3473 @c line-width ensures no break
3474 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3475 rhMusic = \relative c'' {
3478 \once \override Tie #'staff-position = #3.5
3482 bes2.^\markup { \bold "Moderato" } r8
3483 \mergeDifferentlyHeadedOn
3484 \mergeDifferentlyDottedOn
3485 % Inizia la sezione polifonica a quattro voci
3487 { c,8 d fis bes a } % continuazione della voce principale
3491 % Riposiziona il c2 a destra della nota unita
3492 \once \override NoteColumn #'force-hshift = #1.0
3493 % Sposta il c2 fuori dalla colonna della nota principale
3494 % in modo che l'unione di note funzioni
3501 % Il gambo di d2 deve essere in giù per permettere l'unione delle note
3503 % Stem on the d2 should be invisible
3504 \tweak Stem #'transparent ##t
3505 \tweak Flag #'transparent ##t
3513 \mergeDifferentlyHeadedOff
3514 \mergeDifferentlyDottedOff
3515 g2.\) % continuazione della voce principale
3519 lhMusic = \relative c' {
3521 <d g, d>1)\arpeggio |
3528 \new Staff = "RH" <<
3532 \new Staff = "LH" <<
3542 @node Altre modifiche
3543 @section Altre modifiche
3544 @translationof Further tweaking
3547 * Altri usi delle modifiche::
3548 * Uso delle variabili per le modifiche::
3550 * Altre fonti di informazione::
3551 * Modifiche avanzate con Scheme::
3554 @node Altri usi delle modifiche
3555 @subsection Altri usi delle modifiche
3556 @translationof Other uses for tweaks
3558 @cindex proprietà transparent, uso della
3559 @cindex oggetti, renderli invisibili
3560 @cindex togliere gli oggetti
3561 @cindex oggetti, toglierli
3562 @cindex nascondere gli oggetti
3563 @cindex oggetti, nascondere
3564 @cindex oggetti invisibili
3565 @cindex legature di valore tra note di voci diverse
3567 @subheading Legature di valore tra note di voci diverse
3569 L'esempio seguente mostra come unire con legature di valore
3570 note appartenenti a voci diverse. Di norma, solo le note nella
3571 stessa voce possono essere unite da una legatura di valore.
3572 Se si usano due voci con le note legate in una voce
3574 @lilypond[quote,fragment,relative=2]
3575 << { b8~ b\noBeam } \\ { b8[ g] } >>
3579 e si cancella il primo gambo di quella voce, la legatura sembra
3580 attraversare le voci:
3582 @cindex Stem, esempio di sovrascrittura
3583 @cindex proprietà transparent, esempio
3584 @cindex transparent, esempio
3586 @lilypond[quote,fragment,relative=2,verbatim]
3589 \tweak Stem #'transparent ##t
3590 \tweak Flag #'transparent ##t
3598 Per far sì che il gambo cancellato non schiacci troppo la legatura,
3599 possiamo allungarlo impostando la proprietà
3600 @code{length} su @code{8},
3602 @lilypond[quote,fragment,relative=2,verbatim]
3605 \tweak Stem #'transparent ##t
3606 \tweak Flag #'transparent ##t
3607 \tweak Stem #'length #8
3615 @subheading Simulare una corona nel MIDI
3617 @cindex proprietà stencil, uso della
3618 @cindex corona, usarla nel MIDI
3620 Per gli oggetti esterni al rigo è di solito preferibile sovrascrivere
3621 la proprietà @code{stencil} piuttosto che la proprietà @code{transparent}
3622 dell'oggetto se si desidera toglierlo dall'output. Se si imposta la
3623 proprietà @code{stencil} su @code{#f} l'oggetto verrà completamente
3624 rimosso dall'output e quindi non potrà influenzare la disposizone
3625 di altri oggetti posizionati rispetto a esso.
3627 Ad esempio, se volessimo modificare il segno di metronomo solo per
3628 simulare una corona nel MIDI, non vorremmo che il segno apparisse
3629 nella partitura né vorremmo influenzare la spaziatura tra i due
3630 sistemi o la posizione di annotazioni adiacenti nel rigo. Dunque,
3631 il modo migliore è impostare la proprietà @code{stencil} su
3632 @code{#f}. Ecco l'effetto dei due metodi:
3634 @cindex MetronomeMark, esempio di sovrascrittura
3635 @cindex proprietà transparent, esempio
3636 @cindex transparent, esempio
3638 @lilypond[quote,verbatim,ragged-right]
3641 % Indicazione di tempo visibile
3644 \once \override Score.MetronomeMark #'transparent = ##t
3645 % Indicazione di tempo invisibile per allungare la fermata nel MIDI
3648 % Nuovo tempo per la sezione successiva
3657 @cindex MetronomeMark, esempio di sovrascrittura
3658 @cindex proprietà stencil, esempio
3659 @cindex stencil, esempio
3661 @lilypond[quote,verbatim,ragged-right]
3664 % Indicazione di tempo visibile
3667 \once \override Score.MetronomeMark #'stencil = ##f
3668 % Indicazione di tempo invisibile per allungare la fermata nel MIDI
3671 % Nuovo tempo per la sezione successiva
3681 Entrambi i metodi tolgono dalla partitura l'indicazione metronomica
3682 ed entrambi cambiano il tempo del MIDI come volevamo, ma nel primo esempio l'indicazione
3683 metronomica trasparente sposta troppo in alto
3684 l'indicazione di tempo successiva, mentre nel secondo esempio, dove
3685 viene tolto lo stampo (@emph{stencil}), ciò non accade.
3689 @rglosnamed{system,sistema}.
3691 @node Uso delle variabili per le modifiche
3692 @subsection Uso delle variabili per le modifiche
3693 @translationof Using variables for tweaks
3695 @cindex variabili, usarle per le modifiche
3696 @cindex usare le variabili per le modifiche
3697 @cindex modifiche, usare le variabili per le
3699 I comandi di sovrascrittura sono spesso lunghi e tediosi da
3700 scrivere, e devono essere assolutamente corretti. Se si usa
3701 più volte la stessa sovrascrittura conviene definire una
3702 variabile che la contenga.
3704 Immaginiamo di voler enfatizzare certe parole del testo usando
3705 grassetto e corsivo. I comandi @code{\italic} (corsivo) e @code{\bold}
3706 (grassetto) funzionano all'interno del testo solo se inclusi,
3707 insieme alla parola o alle parole da modificare, in un blocco
3708 @code{\markup}: dunque sono scomodi da inserire. Dovendo inserire
3709 le parole stesse non si possono usare variabili semplici. Come
3710 alternativa possiamo usare i comandi @code{\override} e @code{\revert}?
3713 @code{\override Lyrics . LyricText #'font-shape = #'italic}
3714 @code{\override Lyrics . LyricText #'font-series = #'bold}
3716 @code{\revert Lyrics . LyricText #'font-shape}
3717 @code{\revert Lyrics . LyricText #'font-series}
3720 Anche questi sarebbero molto noiosi da inserire se ci fossero
3721 molte parole che richiedono enfasi. Ma possiamo inserirli
3722 in due variabili e poi usare queste per le parole da enfatizzare.
3723 Un altro vantaggio dell'uso di variabili per queste sovrascritture
3724 è che gli spazi intorno al punto non sono necessari, perché non
3725 sono interpretati direttamente in @code{\lyricmode}. Ecco un
3726 esempio, anche se nella pratica comune avremmo scelto dei nomi
3727 più brevi per le variabili in modo da poterle inserire più
3730 @cindex LyricText, esempio di sovrascrittura
3731 @cindex proprietà font-shape, esempio
3732 @cindex font-shape, esempio
3733 @cindex proprietà font-series, esempio
3734 @cindex font-series, esempio
3736 @lilypond[quote,verbatim]
3738 \override Lyrics.LyricText #'font-shape = #'italic
3739 \override Lyrics.LyricText #'font-series = #'bold
3743 \revert Lyrics.LyricText #'font-shape
3744 \revert Lyrics.LyricText #'font-series
3747 global = { \key c \major \time 4/4 \partial 4 }
3749 SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
3750 AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
3751 TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
3752 BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
3754 VerseOne = \lyrics {
3755 E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
3758 VerseTwo = \lyricmode {
3759 O | \once \emphasize Christ, whose voice the | wa -- ters heard,
3762 VerseThree = \lyricmode {
3763 O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
3766 VerseFour = \lyricmode {
3767 O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
3774 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
3775 \new Voice = "Alto" { \voiceTwo \AltoMusic }
3776 \new Lyrics \lyricsto "Soprano" { \VerseOne }
3777 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
3778 \new Lyrics \lyricsto "Soprano" { \VerseThree }
3779 \new Lyrics \lyricsto "Soprano" { \VerseFour }
3783 \new Voice = "Tenor" { \voiceOne \TenorMusic }
3784 \new Voice = "Bass" { \voiceTwo \BassMusic }
3791 @node Fogli di stile
3792 @subsection Fogli di stile
3793 @translationof Style sheets
3795 L'output prodotto da LilyPond può essere ampiamente modificato, come
3796 abbiamo visto nel capitolo @ref{Tweaking output}. Ma se avessi molti
3797 file di input a cui voler applicare delle modifiche? O se volessi
3798 semplicemente separare le modifiche dalla musica vera e propria?
3801 Prendiamo un esempio. Non ti preoccupare se non capisci le
3802 parti che hanno @code{#()}; verranno spiegate nel capitolo
3803 @ref{Advanced tweaks with Scheme}.
3805 @lilypond[quote,verbatim,ragged-right]
3807 #(make-dynamic-script
3808 #{ \markup { \hspace #0
3809 \translate #'(5 . 0)
3810 \line { \dynamic "mp"
3811 \text \italic "dolce" } }
3815 #(define-music-function
3816 (parser location string)
3818 #{ ^\markup \bold \box #string #})
3822 a4.\mpdolce d8 cis4--\glissando a |
3826 g8(\! fis)-. e( d)-. cis2 |
3830 Facciamo qualcosa a proposito delle definizioni di @code{mpdolce} e
3831 @code{inst}. Producono l'output che desideriamo, ma potremmo volerle
3832 usare in un altro brano. Potremmo semplicemente copiarle e incollarle
3833 in cima a ogni file, ma sarebbe una seccatura e lascerebbe queste
3834 definizioni nel file di input; personalmente trovo tutti quei @code{#()}
3835 piuttosto brutti, dunque nascondiamoli in un altro file:
3838 %%% salva queste righe in un file chiamato "definitions.ily"
3840 #(make-dynamic-script
3841 #@{ \markup @{ \hspace #0
3842 \translate #'(5 . 0)
3843 \line @{ \dynamic "mp"
3844 \text \italic "dolce" @} @}
3848 #(define-music-function
3849 (parser location string)
3851 #@{ ^\markup \bold \box #string #@})
3854 Ci riferiremo a questo file tramite il comando @code{\include} in cima
3855 al file dove c'è la musica. Si usa l'estensione @file{.ily} per distinguere
3856 il file da includere, che non intendiamo compilare da solo, dal file principale.
3857 Ora modifichiamo la musica (e salviamo questo file come @file{music.ly}).
3859 @c We have to do this awkward example/lilypond-non-verbatim
3860 @c because we can't do the \include stuff in the manual.
3863 \include "definitions.ily"
3867 a4.\mpdolce d8 cis4--\glissando a |
3871 g8(\! fis)-. e( d)-. cis2 |
3875 @lilypond[quote,ragged-right]
3877 #(make-dynamic-script
3878 #{ \markup { \hspace #0
3879 \translate #'(5 . 0)
3880 \line { \dynamic "mp"
3881 \text \italic "dolce" } }
3885 #(define-music-function
3886 (parser location string)
3888 #{ ^\markup \bold \box #string #})
3892 a4.\mpdolce d8 cis4--\glissando a |
3896 g8(\! fis)-. e( d)-. cis2 |
3900 L'aspetto è migliore, ma facciamo ancora qualche modifica. Il glissando si
3901 vede appena, rendiamolo quindi più spesso e più vicino alle teste di nota.
3902 Mettiamo l'indicazione metronomica al di sopra della chiave invece che della prima
3903 nota. E, infine, dato che il mio professore di composizione odia l'indicazione
3904 di tempo @qq{C}, usiamo @qq{4/4} al suo posto.
3906 Ma non devi cambiare @file{music.ly} bensì @file{definitions.ily}, in
3912 #(make-dynamic-script
3913 #@{ \markup @{ \hspace #0
3914 \translate #'(5 . 0)
3915 \line @{ \dynamic "mp"
3916 \text \italic "dolce" @} @}
3920 #(define-music-function
3921 (parser location string)
3923 #@{ ^\markup \bold \box #string #@})
3928 \override MetronomeMark #'extra-offset = #'(-9 . 0)
3929 \override MetronomeMark #'padding = #'3
3933 \override TimeSignature #'style = #'numbered
3937 \override Glissando #'thickness = #3
3938 \override Glissando #'gap = #0.1
3943 @lilypond[quote,ragged-right]
3945 #(make-dynamic-script
3946 #{ \markup { \hspace #0
3947 \translate #'(5 . 0)
3948 \line { \dynamic "mp"
3949 \text \italic "dolce" } }
3953 #(define-music-function
3954 (parser location string)
3956 #{ ^\markup \bold \box #string #})
3961 \override MetronomeMark #'extra-offset = #'(-9 . 0)
3962 \override MetronomeMark #'padding = #'3
3966 \override TimeSignature #'style = #'numbered
3970 \override Glissando #'thickness = #3
3971 \override Glissando #'gap = #0.1
3977 a4.\mpdolce d8 cis4--\glissando a |
3981 g8(\! fis)-. e( d)-. cis2 |
3985 Ora l'aspetto è decisamente migliore! Supponiamo ora di voler pubblicare
3986 questo brano. Il mio professore di composizione non ama il segno di
3987 tempo @qq{C}, mentre a me piace. Copiamo l'attuale file @file{definitions.ily}
3988 in @file{web-publish.ily} e modifichiamolo. Dato che questa musica
3989 verrà distribuita su un pdf da leggere a schermo, aumenteremo anche
3990 la dimensione complessiva dell'output.
3995 #(make-dynamic-script
3996 #@{ \markup @{ \hspace #0
3997 \translate #'(5 . 0)
3998 \line @{ \dynamic "mp"
3999 \text \italic "dolce" @} @}
4003 #(define-music-function
4004 (parser location string)
4006 #@{ ^\markup \bold \box #string #@})
4008 #(set-global-staff-size 23)
4013 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4014 \override MetronomeMark #'padding = #'3
4021 \override Glissando #'thickness = #3
4022 \override Glissando #'gap = #0.1
4027 @lilypond[quote,ragged-right]
4029 #(make-dynamic-script
4030 #{ \markup { \hspace #0
4031 \translate #'(5 . 0)
4032 \line { \dynamic "mp"
4033 \text \italic "dolce" } }
4037 #(define-music-function
4038 (parser location string)
4040 #{ ^\markup \bold \box #string #})
4042 #(set-global-staff-size 23)
4046 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4047 \override MetronomeMark #'padding = #'3
4050 \override Glissando #'thickness = #3
4051 \override Glissando #'gap = #0.1
4057 a4.\mpdolce d8 cis4--\glissando a |
4061 g8(\! fis)-. e( d)-. cis2 |
4065 Nel file che contiene la musica non rimane che sostituire
4066 @code{\include "definitions.ily"} con
4067 @code{\include "web-publish.ily"}. Potremmo usare un sistema
4068 ancora più conveniente: creare un file @file{definitions.ily} che
4069 contenga solo le definizioni di @code{mpdolce} e @code{inst}, un file
4070 @file{web-publish.ily} che contenga solo la sezione @code{\layout}
4071 vista prima, e un file @file{university.ily} che contenga solo le
4072 modifiche necessarie per produrre l'output preferito dal mio
4073 professore. L'inizio di @file{music.ly} apparirebbe così:
4076 \include "definitions.ily"
4078 %%% Una sola di queste linee deve essere commentata
4079 \include "web-publish.ily"
4080 %\include "university.ily"
4083 Questo approccio può essere utile anche se si sta creando un
4084 insieme di parti. Uso una mezza dozzina di diversi
4085 @q{fogli di stile} per i miei progetti. Faccio iniziare
4086 ogni file musicale con @code{\include "../global.ily"}, che contiene
4090 \version @w{"@version{}"}
4092 #(ly:set-option 'point-and-click #f)
4094 \include "../init/init-defs.ly"
4095 \include "../init/init-layout.ly"
4096 \include "../init/init-headers.ly"
4097 \include "../init/init-paper.ly"
4101 @node Altre fonti di informazione
4102 @subsection Altre fonti di informazione
4103 @translationof Other sources of information
4105 La guida al Funzionamento interno contiene molte informazioni su
4106 LilyPond, ma si possono trovare ancora più informazioni nei file
4107 interni di LilyPond. Per studiarli devi prima trovare la giusta
4108 directory nel tuo sistema operativo. Il percorso di questa
4109 directory dipende da quale sistema operativo si sta usando e da
4110 come si è ottenuto LilyPond, se scaricando un binario precompilato
4111 da lilypond.org oppure installandolo da un gestore di pacchetti
4112 (come nelle distribuzioni GNU/Linux o nelle istallazioni tramite
4113 fink o cygwin) o compilandolo dai sorgenti:
4115 @strong{Scaricato da lilypond.org}
4122 @file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/}
4129 @file{@var{INSTALLDIR}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4132 usando @code{cd} in un terminale per entrare in questa
4133 directory oppure facendo un Ctrl+click sull'applicazione LilyPond e
4134 scegliendo @qq{Mostra i contenuti dei pacchetti}.
4138 Con Windows Explorer vai in
4140 @file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/}
4145 @strong{Istallato da un gestore di pacchetti o compilato da sorgenti}
4148 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, dove
4149 @var{PREFIX} è definito dal gestore pacchetti o dallo
4150 script @code{configure} e @var{X.Y.Z} è il numero di
4151 versione di LilyPond.
4155 All'interno di questa directory le due sottodirectory interessanti sono
4158 @item @file{ly/} - contiene i file nel linguaggio di LilyPond
4159 @item @file{scm/} - contiene i file nel linguaggio Scheme
4162 Iniziamo col vedere alcuni file in @file{ly/}.
4163 Apri @file{ly/property-init.ly} in un editor di testo. Quello
4164 che usi normalmente per i file @code{.ly} va bene. Questo file
4165 contiene le definizioni di tutti i comandi predefiniti standard
4166 di LilyPond, come @code{\stemUp} e @code{\slurDotted}. Vedrai
4167 che questi non sono altro che definizioni di variabili che
4168 contengono uno o più comandi @code{\override}. Ad esempio,
4169 @code{/tieDotted} è definito così:
4173 \override Tie #'dash-period = #0.75
4174 \override Tie #'dash-fraction = #0.1
4178 Se non ti piacciono i valori predefiniti, puoi facilmente
4179 definire nuovamente questi comandi, proprio come qualsiasi
4180 altra variabile, all'inizio del file di input.
4182 Ecco i file più utili che si trovano in @file{ly/}:
4184 @multitable @columnfractions .4 .6
4185 @headitem Nome del file
4187 @item @file{ly/engraver-init.ly}
4188 @tab Definizioni dei contesti degli incisori (@emph{engraver})
4189 @item @file{ly/paper-defaults-init.ly}
4190 @tab Specifiche dei valori predefiniti relativi al foglio
4191 @item @file{ly/performer-init.ly}
4192 @tab Definizioni dei contesti dei @emph{performer}
4193 @item @file{ly/property-init.ly}
4194 @tab Definizioni di tutti i comandi predefiniti più comuni
4195 @item @file{ly/spanner-init.ly}
4196 @tab Definizioni dei comandi predefiniti relativi agli estensori (@emph{spanner})
4199 Altre impostazioni (come le definizioni dei comandi di markup) sono
4200 salvate come file @file{.scm} (Scheme). Il linguaggio di programmazione
4201 Scheme serve a fornire un'interfaccia di programmazione per modificare
4202 il funzionamento interno di LilyPond. Una spiegazione dettagliata di
4203 questi file non rientra nell'obiettivo di questo manuale, dal momento che
4204 è necessario conoscere il linguaggio Scheme. Avvisiamo gli utenti che
4205 è richiesta una notevole quantità di abilità tecnica o di tempo per
4206 comprendere Scheme e questi file (vedi @rextend{Scheme tutorial}).
4208 Nel caso tu conosca Scheme, i file che potrebbero essere di interesse sono:
4210 @multitable @columnfractions .4 .6
4211 @headitem Nome del file
4213 @item @file{scm/auto-beam.scm}
4214 @tab Valori predefiniti della disposizione delle travature
4215 @item @file{scm/define-grobs.scm}
4216 @tab Impostazioni predefinite delle proprietà dei grob
4217 @item @file{scm/define-markup-commands.scm}
4218 @tab Definizione di tutti i comandi di markup
4219 @item @file{scm/midi.scm}
4220 @tab Impostazioni predefinite dell'output MIDI
4221 @item @file{scm/output-lib.scm}
4222 @tab Impostazioni che modificano l'aspetto di tasti, colori,
4223 alterazioni, stanghette, etc.
4224 @item @file{scm/parser-clef.scm}
4225 @tab Definizioni delle chiavi supportate
4226 @item @file{scm/script.scm}
4227 @tab Impostazioni predefinite delle articolazioni
4231 @node Modifiche avanzate con Scheme
4232 @subsection Modifiche avanzate con Scheme
4233 @translationof Advanced tweaks with Scheme
4235 Anche se molte cose sono possibili con i comandi @code{\override} e
4236 @code{\tweak}, un modo ancor più potente di modificare l'azione
4237 di LilyPond è resa possibile da un interfaccia programmabile al
4238 funzionamento interno di LilyPond. Il codice scritto nel linguaggio
4239 di programmazione Scheme può essere incorporato direttamente nel
4240 funzionamento interno di LilyPond. Ovviamente, per farlo è necessaria
4241 almeno una conoscenza di base della programmazione in Scheme;
4242 abbiamo scritto un'introduzione in @rextend{Scheme tutorial}.
4244 Come esempio di una delle tante possibilità, invece di impostare
4245 una proprietà su un valore costante, si può impostare su una
4246 procedura Scheme che viene poi chiamata ogni volta che LilyPond
4247 accede a quella proprietà. La proprietà può essere poi impostata
4248 dinamicamente su un valore determinato dalla procedura nel momento
4249 in cui viene chiamata. In questo esempio coloriamo le teste delle
4250 note in base alla loro posizione sul rigo.
4252 @cindex funzione x11-color, esempio d'uso
4253 @cindex x11-color, esempio d'uso
4254 @cindex NoteHead, esempio di sovrascrittura
4255 @cindex proprietà color, impostare su procedura Scheme
4256 @cindex color, impostare su procedura Scheme
4258 @lilypond[quote,verbatim,ragged-right]
4259 #(define (color-notehead grob)
4260 "Colora le teste di nota in base alla loro posizione sul rigo."
4261 (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4264 ;; Return rainbow colors
4265 ((1) (x11-color 'red )) ; for C
4266 ((2) (x11-color 'orange )) ; for D
4267 ((3) (x11-color 'yellow )) ; for E
4268 ((4) (x11-color 'green )) ; for F
4269 ((5) (x11-color 'blue )) ; for G
4270 ((6) (x11-color 'purple )) ; for A
4271 ((0) (x11-color 'violet )) ; for B
4275 % Fa sì che il colore sia preso dalla procedura color-notehead
4276 \override NoteHead #'color = #color-notehead
4277 a2 b | c2 d | e2 f | g2 a |
4281 Altri esempi che mostrano l'uso di queste interfacce programmabili
4282 si trovano in @rextend{Callback functions}.