@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
@ignore
- Translation of GIT committish: 6da27f9b294c385ff8fc75876e152d67f0b4794e
+ Translation of GIT committish: f3e8b5f9b68cab4579873749f4648ba63bc92ac7
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.17.6"
+@c \version "2.17.20"
@node Modifica dell'output
@chapter Modifica dell'output
* Manuale del Funzionamento interno::
* Aspetto degli oggetti::
* Posizionamento degli oggetti::
+* Spaziatura verticale::
* Collisioni tra oggetti::
* Altre modifiche::
@end menu
le proprietà di tutti gli altri contesti, come gli oggetti @code{Voice},
gli oggetti @code{Score}, gli oggetti @code{Lyrics} e gli oggetti che
rappresentano tutti gli elementi della notazione, come le stanghette,
-le teste di nota, le legature di valore, i segni di dinamica, etc. A ogni
+le teste di nota, le legature di valore, le dinamiche, etc. A ogni
oggetto corrisponde un relativo insieme di valori di proprietà.
Alcuni tipi di oggetto hanno dei nomi speciali. Gli oggetti che rappresentano
@cindex metodi di modifica
@cindex modifica, metodi
-@strong{Il comando \override}
+@menu
+* Il comando \override::
+* Il comando \revert::
+* Il prefisso \once::
+* Il comando \overrideProperty::
+* Il comando \tweak::
+@end menu
+
+@node Il comando \override
+@unnumberedsubsubsec Il comando @code{\override}
+@translationof The \override command
@cindex override, comando
@cindex override, sintassi
La sintassi generale di questo comando è:
@example
-\override @var{Contesto}.@var{OggettoDiFormattazione} #'@var{proprietà-formattazione} =
-#@var{valore}
+\override @var{Contesto}.@var{OggettoDiFormattazione}.@var{proprietà-formattazione} = #@var{valore}
@end example
@noindent
useremo soltanto alcune proprietà e valori di facile comprensione,
in modo da spiegare il formato e l'uso di questo comando.
-Per ora non ti preoccupare del @code{#'}, che deve precedere la
-proprietà di formattazione e del@tie{}@code{#}, che deve precedere
-il valore. Tali segni vanno presentati esattamente in questa
-forma. Questo è il comando più usato nelle modifiche e quasi tutto
+Le espressioni fondamentali di LilyPond sono gli elementi musicali come le note,
+le durate e le annotazioni. Le espressioni basilari come numeri,
+stringhe di testo e liste sono elaborate nella @q{modalità Scheme}, che viene
+invocata inserendo @samp{#} prima del valore. Sebbene i valori possano
+avere talvolta una valida rappresentazione nella modalità musicale di LilyPond,
+per coerenza questo manuale li farà sempre precedere da @samp{#}. Per maggiori
+informazioni sulla modalità Scheme, si veda @rextend{LilyPond Scheme syntax}.
+
+@code{\override} è il comando più usato nelle modifiche e quasi tutto
il resto del capitolo ha lo scopo di mostrare alcuni esempi
di utilizzo. Ecco un semplice esempio che mostra come cambiare
il colore della testa di nota:
g4 a b c |
@end lilypond
-@strong{Il comando \revert}
+@node Il comando \revert
+@unnumberedsubsubsec Il comando @code{\revert}
+@translationof The \revert command
-@cindex ripristino (revert), comando
+@cindex revert, comando
+@cindex ripristino, comando \revert
@funindex \revert
@funindex revert
siano stati inseriti vari comandi @code{\override}). Impiega la seguente sintassi:
@example
-\revert @var{Contesto}.@var{OggettoDiFormmattazione} #'@var{proprietà-formattazione}
+\revert @var{Contesto}.@var{OggettoDiFormmattazione}.@var{proprietà-formattazione}
@end example
Anche in questo caso, come per il comando @code{\override}, @var{Contesto} di
b4 c |
@end lilypond
-@strong{Il prefisso \once}
+@node Il prefisso \once
+@unnumberedsubsubsec Il prefisso @code{\once}
+@translationof The \once prefix
@funindex \once
@funindex once
@cindex colore, proprietà del
@cindex NoteHead, esempio di sovrascrittura
-@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+@lilypond[quote,verbatim,relative=1]
c4 d
\override NoteHead.color = #red
e4 f |
b c |
@end lilypond
-@strong{Il comando \overrideProperty}
+Il prefisso @code{\once} può essere usato anche di fronte a molti
+comandi predefiniti per limitare il loro effetto a un momento musicale:
+
+@lilypond[quote,verbatim,relative=1]
+c4 d
+\once \stemDown
+e4 f |
+g4 a
+\once \hideNotes
+b c |
+@end lilypond
+
+Tuttavia, i comandi prefediniti che hanno la forma @code{\@dots{}Neutral},
+@code{\@dots{}Off} e @code{\un@dots{}} usano internamente @code{\revert} invece
+di @code{\override} dunque inserire @code{\once} prima di questi comandi
+non produce alcun effetto.
+
+
+@node Il comando \overrideProperty
+@unnumberedsubsubsec Il comando @code{\overrideProperty}
+@translationof The \overrideProperty command
@cindex overrideProperty, comando
si veda @rextend{Difficult tweaks}.
@c Maybe explain in a later iteration -td
-@strong{Il comando \tweak}
+@node Il comando \tweak
+@unnumberedsubsubsec Il comando @code{\tweak}
+@translationof The \tweak command
@cindex tweak, comando
forma semplice del comando @code{\tweak} è
@example
-\tweak #'@var{proprietà-formattazione} #@var{valore}
+\tweak @var{proprietà-formattazione} #@var{valore}
@end example
Il comando @code{\tweak} serve anche a modificare soltanto una di una serie
Questa forma estesa del comando @code{\tweak} può essere descritta così
@example
-\tweak @var{oggetto-formattazione} #'@var{proprietà-formattazione} @var{valore}
+\tweak @var{oggetto-formattazione}.@var{proprietà-formattazione} @var{valore}
@end example
@cindex gruppi irregolari, annidati
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
\tweak direction #up
-\times 4/3 {
+\tuplet 3/4 {
\tweak color #red
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
}
@end lilypond
@c NOTE Tuplet brackets collide if notes are high on staff
@c See issue 509
@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\times 2/3 { c8[ c c] }
+\tuplet 3/2 { c8[ c c] }
\once \override TupletNumber.text = #tuplet-number::calc-fraction-text
-\times 2/3 {
+\tuplet 3/2 {
c8[ c]
c8[ c]
\once \override TupletNumber.transparent = ##t
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
}
@end lilypond
\override Slur.thickness = #5.0
@end example
-Non dimenticare il @code{#'} che precede il nome della
-proprietà e il@tie{}@code{#} che precede il nuovo valore!
+Non dimenticare il@tie{}@code{#} che precede il nuovo valore!
L'ultima domanda è: @q{dove va messo questo comando?} Finché non sei sicuro
e stai ancora imparando, la risposta migliore è: @q{dentro la musica, prima della
tutte le conoscenze di base che ti permetteranno di costruire i tuoi comandi.
Ti manca solo un po' di pratica, che potrai fare grazie ai prossimi esempi.
-@subheading Trovare il contesto
+@subsubheading Trovare il contesto
@cindex contesto, trovare il
@cindex contesto, identificare il corretto
contesti che si trovano al livello più basso, come è sottinteso senza ambiguità
dal fatto che stiamo inserendo delle note, in questo caso possiamo ometterlo.
-@subheading Sovrascrivere una volta sola
+@subsubheading Sovrascrivere una volta sola
@cindex sovrascrivere una volta sola
@cindex \once \override
Il comando @code{\once} può essere usato anche prima del comando @code{\set}.
-@subheading Ripristinare
+@subsubheading Ripristinare
@cindex revert
@cindex ripristinare le proprietà predefinite
la proprietà è @code{font-shape} e il valore è
@code{italic}. Come in precedenza, ometteremo il contesto.
-Per inciso, è importante notare che i valori di @code{font-shape},
-essendo dei simboli, devono essere preceduti da un apostrofo
-singolo, @code{'}. Questo è il motivo per cui gli apostrofi sono
-necessari prima di @code{thickness} nell'esempio precedente e prima di
-@code{font-shape} in questo esempio.
-Entrambi sono simboli. I simboli vengono letti internamente da
-LilyPond. Alcuni sono nomi di proprietà, come @code{thickness} o
-@code{font-shape}, altri sono usati come valori da assegnare alle
-proprietà, come @code{italic}. Nota che sono diversi dalle
-stringhe di testo arbitrarie, che appaiono nella forma @code{"una stringa
-di testo"}; maggiori informazioni sui simboli e le stringhe si trovano in
-@rextend{Scheme tutorial}.
+Per inciso, è importante notare che alcune proprietà prendono come valori
+dei simboli, ad esempio @code{italic}; in questo caso i valori devono essere
+preceduti da un apostrofo, @code{'}. I simboli vengono letti internamente da
+LilyPond. Nota che sono diversi dalle stringhe di testo arbitrarie, che
+appaiono nella forma @code{"una stringa di testo"}; maggiori informazioni sui
+simboli e le stringhe si trovano in @rextend{Scheme tutorial}.
Quindi il comando @code{\override} che rende il testo corsivo è:
@noindent
e tutto il testo è in corsivo.
-@subheading Specificare il contesto nella modalità testo (\lyricmode)
-
-@cindex contesto, specifarlo nella modalità testo (\lyricmode)
-@cindex modalità testo (\lyricmode), specificare il contesto
-
-Nel caso del testo, se cerchi di specificare il contesto nel
-formato usato prima, il comando non funzionerà. Una sillaba
-inserita in modalità testo (lyricmode) può essere terminata da uno
-spazio, una nuova linea o un numero. Tutti gli altri caratteri vengono
-considerati come parte della sillaba. Per questo motivo uno spazio o una
-nuova linea devono apparire prima del @code{@}} finale per impedire che esso
-sia incluso nella sillaba finale. Analogalmente, bisogna inserire degli spazi
-prima e dopo la virgola o il punto, @q{.}, separando il nome del contesto dal
-nome dell'oggetto: altrimenti, i due nomi verranno considerati insieme e
-l'interprete non sarà in grado di distinguerli. Dunque il comando sarà:
-
-@example
-\override Lyrics.LyricText.font-shape = #'italic
-@end example
-
@warning{Nel testo bisogna lasciare sempre uno spazio bianco tra l'ultima
sillaba e la parentesi graffa che chiude il blocco.}
-@warning{Nelle sovrascritture (@emph{override}) del testo ci devono essere sempre
-degli spazi intorno al punto tra il nome del contesto e quello dell'oggetto.}
-
@seealso
Estendere: @rextend{Scheme tutorial}.
tra parentesi dopo il nome della proprietà. Ecco una lista dei tipi
che ti possono servire, corredata dalle regole per ciascun tipo e da alcuni
esempi. Ovviamente, se inseriti in un comando @code{\override}, devono
-essere sempre preceduti dal simbolo di cancelletto, @code{#}.
+essere sempre preceduti dal simbolo di cancelletto,@tie{}@code{#}, anche se
+il valore stesso già inizia con@tie{}@code{#}. In questa sede diamo solo
+esempi di costanti: se si desidera elaborare un valore con Scheme, si veda
+@rextend{Calculations in Scheme}.
@multitable @columnfractions .2 .45 .35
@headitem Tipo di proprietà
@tab O Vero (True) o Falso (False), rappresentato da #t o #f
@tab @code{#t}, @code{#f}
@item Dimension (in staff space)
- @tab Un numero positivo decimale (nell'unità di misura dello spazio del rigo)
+ @tab Un numero decimale (nell'unità di misura dello spazio del rigo)
@tab @code{2.5}, @code{0.34}
@item Direction
- @tab Una valida direzione costante o il suo equivalente numerico (sono
-ammessi valori decimali compresi tra -1 e 1)
+ @tab Una valida direzione costante o il suo equivalente numerico
+ (@code{0} o @code{CENTER} indicano una direzione neutrale)
@tab @code{LEFT}, @code{CENTER}, @code{UP},
@code{1}, @w{@code{-1}}
@item Integer
- @tab Un numero positivo intero
- @tab @code{3}, @code{1}
+ @tab Un numero intero
+ @tab @code{3}, @code{-1}
@item List
- @tab Un insieme di valori separato da spazi, racchiuso tra parentesi e
-preceduto da un apostrofo
- @tab @code{'(left-edge staff-bar)}, @code{'(1)},
+ @tab Una sequenza di costanti o simboli separata da spazi, racchiusa
+ tra parentesi e preceduta da un apostrofo
+ @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
@code{'(1.0 0.25 0.5)}
@item Markup
@tab Qualsiasi valido blocco markup
- @tab @code{\markup @{ \italic "cresc." @}}
+ @tab @code{\markup @{ \italic "cresc." @}}, @code{"bagpipe"}
@item Moment
@tab Una frazione di una nota intera costruita con la
funzione make-moment
- @tab @code{(ly:make-moment 1 4)},
- @code{(ly:make-moment 3 8)}
+ @tab @code{(ly:make-moment 1/4)},
+ @code{(ly:make-moment 3/8)}
@item Number
- @tab Qualsiasi valore decimale positivo o negativo
- @tab @code{3.5}, @w{@code{-2.45}}
+ @tab Qualsiasi valore positivo o negativo, possibilmente decimale
+ @tab @code{3}, @w{@code{-2.45}}
@item Pair (of numbers)
@tab Due numeri separati da un @q{spazio . spazio} e racchiusi tra
parentesi precedute da un apostrofo
@tab @code{bend::print}, @code{ly:text-interface::print},
@code{#f}
@item Vector
- @tab Una lista di tre elementi racchiusi tra parentesi e preceduti
-da apostrofo-cancelletto, @code{'#}.
- @tab @code{'#(#t #t #f)}
+ @tab Costanti
+ racchiuse tra @code{#(}@dots{}@code{)}.
+ @tab @code{#(#t #t #f)}
@end multitable
ovviamente, anche di molti altri oggetti grafici). Vediamole una per
volta.
-@subheading stencil
+@menu
+* La proprietà stencil::
+* La proprietà break-visibility::
+* La proprietà transparent::
+* La proprietà color::
+@end menu
+
+@node La proprietà stencil
+@unnumberedsubsubsec La proprietà @code{stencil}
+@translationof The stencil property
@cindex proprietà stencil
@cindex stencil, proprietà
}
@end lilypond
-Ora le stanghette sono sparite.
+Ora le stanghette sono sparite. Impostare la proprietà @code{stencil}
+su @code{#f} è un'operazione talmente frequente che è stata creata una
+scorciatoia, @code{\omit}:
+@funindex \omit
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+ \time 12/16
+ \omit Staff.BarLine
+ c4 b8 c d16 c d8 |
+ g,8 a16 b8 c d4 e16 |
+ e8
+}
+@end lilypond
Si noti però che impostare la proprietà @code{stencil} su @code{#f}
causerà degli errori nel caso in cui le dimensioni dell'oggetto
}
@end lilypond
-@subheading break-visibility
+@node La proprietà break-visibility
+@unnumberedsubsubsec La proprietà @code{break-visibility}
+@translationof The break-visibility property
@cindex proprietà break-visibility
@cindex break-visibility, proprietà
Questi valori controllano rispettivamente se le stanghette debbano
comparire alla fine, in mezzo o all'inizio dei righi. Dato
che nel nostro esempio vogliamo sopprimere tutte le stanghette, il valore
-che ci serve è @code{'#(#f #f #f)}. Proviamo, ricordando di includere
-il contesto @code{Staff}. Si noti che prima della parentesi di apertura
-abbiamo @code{#'#}. Il @code{'#} deve far parte del valore perché introduce
-un vettore, mentre il primo@tie{}@code{#} deve precedere, come sempre, il
-valore del comando @code{\override}.
+che ci serve è @code{#(#f #f #f)} (equivalente al nome @code{all-invisible}).
+Proviamo, ricordando di includere il contesto @code{Staff}. Si noti che prima
+della parentesi di apertura abbiamo @code{##}. Un @code{#} è necessario
+perché introduce un vettore, mentre il primo@tie{}@code{#} deve precedere, come
+sempre, il valore del comando @code{\override}.
@cindex BarLine, esempio di sovrascrittura
@cindex proprietà break-visibility, esempio
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine.break-visibility = #'#(#f #f #f)
+ \override Staff.BarLine.break-visibility = ##(#f #f #f)
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
E vediamo che anche questo comando elimina tutte le stanghette.
-@subheading transparent
+@node La proprietà transparent
+@unnumberedsubsubsec La proprietà @code{transparent}
+@translationof The transparent property
@cindex proprietà transparent
@cindex transparent, proprietà
@end lilypond
@noindent
-L'indicazione di tempo è scomparsa; è rimasto però uno spazio al suo posto. Magari questo è quello che si
-desidera, ad esempio per creare un esercizio in cui uno studente deve
-riempire degli spazi vuoti. Ma in altre circostanze ciò può
-non essere gradito. Per eliminare lo spazio vuoto bisogna usare la proprietà stencil
-e impostarla su @code{#f}:
+Impostare la proprietà @code{transparent} è un'operazione piuttosto
+frequente, perciò è stata creata la scorciatoia @code{\hide}:
+@funindex \hide
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+ \time 12/16
+ \hide Staff.TimeSignature
+ c4 b8 c d16 c d8 |
+ g,8 a16 b8 c d4 e16 |
+ e8
+}
+@end lilypond
+
+@noindent
+L'indicazione di tempo è scomparsa; è rimasto però uno spazio al suo posto. Magari
+questo è quello che si desidera, ad esempio per creare un esercizio in cui uno
+studente deve riempire degli spazi vuoti. Ma in altre circostanze ciò può
+non essere gradito. Per eliminare lo spazio vuoto bisogna impostare la
+proprietà stencil su @code{#f}:
@cindex TimeSignature, esempio di sovrascrittura
@cindex proprietà stencil, esempio
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.TimeSignature.stencil = ##f
+ \omit Staff.TimeSignature
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@end lilypond
@noindent
-la differenza è ovvia: se si imposta lo stencil su @code{#f}
-l'oggetto scompare del tutto; se si rende l'oggetto @code{trasparente}
-questo resta dove è, anche se invisibile.
+la differenza è ovvia: se si imposta lo stencil su @code{#f} (possibilmente
+con @code{\omit}) l'oggetto scompare del tutto; se si rende l'oggetto
+@code{trasparente} questo resta dove è, anche se invisibile.
-@subheading color
+@node La proprietà color
+@unnumberedsubsubsec La proprietà @code{color}
+@translationof The color property
@cindex proprietà color
@cindex color, proprietà
@noindent
e di nuovo vediamo che le stanghette non sono visibili. Si noti
che @emph{white} non è preceduto da un apostrofo, perché non
-è un simbolo, ma una @emph{funzione}. Quando viene chiamata, fornisce
+è un simbolo, ma una @emph{variabile}. Quando viene esaminata, fornisce
la lista di valori interni necessari per impostare il colore su
bianco. Gli altri colori nella lista normale sono anch'essi
-funzioni. Per convincerti che funziona potresti provare a
-cambiare il colore e usare una delle altre funzioni presenti
+delle variabili. Per convincerti che funziona potresti provare a
+cambiare il colore e usare una delle altre variabili presenti
nella lista.
@cindex color, X11
Il secondo modo per cambiare il colore è attraverso la lista
di nomi di colori X11 che si trova in @ruser{List of colors}.
-Tuttavia questi colori devono essere preceduti da un'altra
-funzione che converte i nomi di colori X11 nella lista di
-valori interni, @code{x11-color}:
+Questi colori vengono trasformati in valori reali dalla funzione
+@code{x11-color}, che converte i simboli di colore X11 nella lista
+di valori interni:
@cindex BarLine, esempio di sovrascrittura
@cindex proprietà color, esempio
@noindent
Si noti che in questo caso la funzione @code{x11-color} prende
un simbolo come argomento, dunque il simbolo deve essere preceduto
-da un apostrofo e i due elementi devono essere racchiusi tra parentesi.
+da un apostrofo per impedire che sia considerato una variabile e
+l'intera funzione deve essere racchiusa tra parentesi.
@cindex colori rgb
@cindex rgb, colori
@funindex rgb-color
-Esiste una terza funzione, che converte i valori RGB in colori
+Esiste un'altra funzione, che converte i valori RGB in colori
interni, la funzione @code{rgb-color}. Prende tre argomenti
che specificano l'intensità dei colori rosso, verde e blu.
I valori vanno da 0 a 1. Quindi per avere il colore rosso
@cindex proprietà alignAboveContext, esempio
@cindex @code{\with}, esempio
-@cindex proprietà stencil, esempio
+@funindex \omit
@cindex Clef, esempio di sovrascrittura
@cindex TimeSignature, esempio di sovrascrittura
alignAboveContext = #"main"
}
{
- \override Staff.Clef.stencil = ##f
- \override Staff.TimeSignature.stencil = ##f
+ \omit Staff.Clef
+ \omit Staff.TimeSignature
{ f8 f c }
}
>>
Ma qual è la differenza tra modificare il contesto del rigo con
@code{\with} e modificare la proprietà stencil della chiave e
-del segno di tempo con \override? La principale differenza è
-che le modifiche inserite in un blocco @code{\with} vengono applicate
-nel momento in cui viene creato il contesto e permangono come valori
-@strong{predefiniti} per la durata di quel contesto, mentre i
+del segno di tempo con @code{\override} o in questo caso @code{\omit}? La
+principale differenza è che le modifiche inserite in un blocco @code{\with}
+vengono applicate nel momento in cui viene creato il contesto e permangono
+come valori @strong{predefiniti} per la durata di quel contesto, mentre i
comandi @code{\set} o @code{\override} incorporati nel blocco
della musica sono dinamici -- le loro modifiche sono sincronizzate
con un punto preciso della musica. Se le modifiche sono disattivate o
}
@end lilypond
+Si possono usare anche le scorciatoie @code{\hide} e @code{\omit} per
+impostare la proprietà @code{transparent} e togliere lo @code{stencil}
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\new Staff ="main" {
+ \relative g' {
+ r4 g8 g c4 c8 d |
+ e4 r8
+ <<
+ { f8 c c }
+ \new Staff \with {
+ alignAboveContext = #"main"
+ % Nasconde le chiavi di questo rigo
+ \omit Clef
+ % Nasconde le indicazioni di tempo di questo rigo
+ \omit TimeSignature
+ }
+ { f8 f c }
+ >>
+ r4 |
+ }
+}
+@end lilypond
+
Infine arriviamo a modificare la dimensione degli oggetti di formattazione.
Alcuni oggetti di formattazione sono dei glifi scelti da un tipo di
carattere. Ad esempio le teste di nota, le alterazioni, le annotazioni,
-le chiavi, le indicazioni di tempo, la dinamica, il testo vocale. La loro dimensione
+le chiavi, le indicazioni di tempo, le dinamiche, il testo vocale. La loro dimensione
varia se si modifica la proprietà @code{font-size}, come vedremo a
breve. Altri oggetti di formattazione come le legature di portamento e
di valore -- in generale, tutti gli oggetti estensori (@emph{spanner}) -- vengono
{ f8 c c }
\new Staff \with {
alignAboveContext = #"main"
- \override Clef.stencil = ##f
- \override TimeSignature.stencil = ##f
+ \omit Clef
+ \omit TimeSignature
% Riduce la dimensione di tutti i tipi di carattere di circa il 24%
fontSize = #-2
}
{ f8 c c }
\new Staff \with {
alignAboveContext = #"main"
- \override Clef.stencil = ##f
- \override TimeSignature.stencil = ##f
+ \omit Clef
+ \omit TimeSignature
fontSize = #-2
% Riduce proporzionalmente la lunghezza dei gambi e la spaziatura tra le linee
\override StaffSymbol.staff-space = #(magstep -2)
(dentro il rigo) e oggetti outside-staff (fuori dal rigo).
Gli oggetti within-staff sono quelli che si trovano nel rigo, come
-le teste e i gambi delle note, le alterazioni, etc.. La loro posizione
+le teste e i gambi delle note, le alterazioni, etc@dots{} La loro posizione
è determinata perlopiù dalla musica stessa: in verticale sono collocati
su determinate posizioni del rigo o sono collegati
ad altri oggetti disposti in questo modo. Di norma LilyPond evita
destra o sulla sinistra. Tutto questo viene controllato automaticamente
quando si imposta la proprietà @code{direction}.
+@menu
+* La proprietà direction::
+* Diteggiatura::
+@end menu
+
+@node La proprietà direction
+@unnumberedsubsubsec La proprietà @code{direction}
+@translationof The direction property
+
@cindex down
+@cindex direzione, giù
@cindex up
+@cindex direzione, su
@cindex center
+@cindex direzione, centrale
@cindex neutral
+@cindex direzione, neutrale
L'esempio seguente mostra nella prima battuta il comportamento predefinito
dei gambi, per cui i gambi delle note superiori puntano in basso e quelli delle
@tab I gruppi irregolare sono sotto/sopra le note
@end multitable
-Si noti che questi comandi predefiniti @strong{non} possono essere
-preceduti da @code{\once}. Se desideri limitare l'effetto a una
-singola nota, devi usare il comando @code{\once \override} equivalente
-oppure il comando predefinito seguito, dopo la nota in questione, dal
-corrispondente comando @code{\xxxNeutral}.
+Le varianti neutral/normal di questi comandi usano @code{\revert} e quindi
+@strong{non} possono essere precedute da @code{\once}. Se desideri limitare
+l'effetto degli altri comandi (che usano @code{\override}) a un singolo
+momento temporale, devi farli precedere da @code{\once} come faresti con
+delle sovrascritture esplicite.
+
+
+@node Diteggiatura
@unnumberedsubsubsec Diteggiatura
+@translationof Fingering
@cindex diteggiatura, posizionamento
@cindex diteggiatura, accordi
@translationof Outside-staff objects
Gli oggetti esterni al rigo sono disposti automaticamente in modo da evitare
-collisioni. Gli oggetti dai valori più bassi per la proprietà
+collisioni. Ci sono vari modi per modificare la disposizione automatica
+se questa non è ottimale.
+
+@menu
+* La proprietà outside-staff-priority::
+* Il comando \textLengthOn::
+* Posizionamento delle dinamiche::
+* Dimensione dei grob::
+@end menu
+
+
+@node La proprietà outside-staff-priority
+@unnumberedsubsubsec La proprietà @code{outside-staff-priority}
+@translationof The outside-staff-priority property
+
+Gli oggetti dai valori più bassi per la proprietà
@code{outside-staff-priority} vengono posizionati più vicino al rigo,
mentre gli altri oggetti esterni al rigo vengono distanziati quanto
basta per evitare collisioni. La proprietà @code{outside-staff-priority} è
far posto al testo. Lo si può ottenere con il comando
@code{textLengthOn}.
-@subheading \textLengthOn
+@node Il comando \textLengthOn
+@unnumberedsubsubsec Il comando @code{\textLengthOn}
+@translationof The \textLengthOn command
@cindex note, distanziarle insieme al testo
@funindex textLengthOff
Per impostazione predefinita, finché si tratta di formattare la musica il
-testo prodotto dal comando \markup non occupa uno spazio orizzontale.
+testo prodotto dal comando @code{\markup} non occupa uno spazio orizzontale.
Il comando @code{\textLengthOn} inverte questo comportamento e fa sì che
le note si distanzino quanto basti per introdurre il testo:
@end lilypond
Il comando che ripristina il comportamento predefinito è
-@code{\textLengthOff}. Ricorda che @code{\once} funziona solo insieme
-a @code{\override}, @code{\set}, @code{\revert} o @code{\unset},
-dunque non si può usare con @code{\textLengthOn}.
+@code{\textLengthOff}. Altrimenti si può usare @code{\once}
+con @code{\textLengthOn} se l'effetto deve essere limitato
+a un singolo momento musicale.
+Analogalmente, la spaziatura per i segni di chiamata e le indicazioni
+di tempo è regolata in modo indipendente con i comandi @code{\markLengthOn}
+e @code{\markLengthOff}.
@cindex testo a margine, permettere le collisioni
@end lilypond
-@subheading Dinamica
+@node Posizionamento delle dinamiche
+@unnumberedsubsubsec Posizionamento delle dinamiche
+@translationof Dynamics placement
-@cindex modificare il posizionamento della dinamica
-@cindex dinamica, modificare il posizionamento
+@cindex modificare il posizionamento delle dinamiche
+@cindex dinamiche, modificare il posizionamento
Le indicazioni dinamiche sono di norma poste sotto il
rigo, ma possono essere collocati al di sopra del pentagramma col comando @code{\dynamicUp}.
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
-a4\f b\mf c\mp b\p
+a4\f b\mf a\mp b\p
@end lilypond
@noindent
ma non esiste un comando equivalente per i segni di dinamica. Dunque
dovremo scoprire come farlo usando i comandi @code{\override}.
+@node Dimensione dei grob
+@unnumberedsubsubsec Dimensione dei grob
+@translationof Grob sizing
+
@subheading Estensione dei grob
@cindex estensione dei grob
Per impostazione predefinita, gli oggetti esterni al rigo presentano estensione
pari a zero, in modo da potersi sovrapporre nella direzione orizzontale.
-Ciò si ottiene con un trucco, ovvero aggiungendo infinito all'estensione
-sinistra e infinito negativo a quella destra, impostando il valore di
-@code{extra-spacing-width} su @code{'(+inf.0 . -inf.0)}. Dunque, per
+Ciò si ottiene con un trucco, ovvero dando un valore infinito all'estensione
+sinistra e infinito negativo a quella destra, impostando la proprietà
+@code{extra-spacing-width} su @code{'(+inf.0 . -inf.0)}. Per
assicurarci che non si sovrappongano nella direzione orizzontale, dobbiamo
-sovrascrivere il valore di @code{extra-spacing-width} e impostarlo su
-@code{'(0 . 0)} in modo da inserire una larghezza vera e propria. Ecco il
-comando che lo fa sul testo della dinamica:
+sovrascrivere il valore di @code{extra-spacing-width} per dar loro un po' più
+di spazio. Le unità sono lo spazio tra due linee del rigo, dunque spostare
+il margine sinistro di mezza unità a sinistra e quello destro di mezza unità
+a destra dovrebbe dare il risultato desiderato:
@example
-\override DynamicText.extra-spacing-width = #'(0 . 0)
+\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
@end example
@noindent
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
-\override DynamicText.extra-spacing-width = #'(0 . 0)
-a4\f b\mf c\mp b\p |
+% Aumenta la larghezza di 1 spazio rigo
+\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
+a4\f b\mf a\mp b\p
@end lilypond
@noindent
-Sicuramente ha impedito un'errata disposizione delle indicazioni
-dinamiche, ma restano due problemi. Le dinamiche dovrebbero
-essere un po' più distanziate; sarebbe inoltre opportuno collocarle
-tutte alla stessa distanza dal rigo.
-Il primo problema è facilmente risolvibile. Invece di
-impostare @code{extra-spacing-width} su zero, possiamo
-aggiungere un po' di spazio. L'unità è lo spazio tra due linee
-del rigo, quindi se spostiamo il margine sinistro mezza unità
-a sinistra e il margine destro mezza unità a destra dovrebbe
-funzionare:
+L'aspetto è migliore, ma sarebbe preferibile avere i segni di dinamica
+allineati alla stessa linea di base invece di spostarsi su e giù seguendo
+la posizione delle note. La proprietà che permette di ottenere tale
+risultato è @code{staff-padding} ed è trattata nella sezione relativa
+alle collisioni (vedi @ref{Collisions of objects}).
-@cindex DynamicText, esempio di sovrascrittura
-@cindex proprietà extra-spacing-width, esempio
-@cindex extra-spacing-width, esempio
-@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-\dynamicUp
-% Aumenta la larghezza di 1 spazio rigo
-\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
-a4\f b\mf c\mp b\p
+@node Spaziatura verticale
+@section Spaziatura verticale
+@translationof Vertical spacing
+
+Di norma, la spaziatura verticale degli oggetti musicali decisa da
+LilyPond è molto buona. Vediamo come si comporta con una semplice
+canzone, composta da due voci e un accompagnamento per pianoforte:
+
+@lilypond[quote,fragment,ragged-right]
+<<
+ \new ChoirStaff
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
@end lilypond
-@noindent
-L'aspetto è migliore, ma sarebbe preferibile avere i segni di dinamica
-allineati alla stessa linea di base invece di spostarsi su e giù seguendo la posizione delle note.
-La proprietà che permette di ottenere tale risultato è @code{staff-padding} ed è trattata
-nella sezione seguente.
+Non c'è niente di sbagliato con la spaziatura verticale predefinita. Tuttavia,
+supponiamo che si stia lavorando con un editore che abbia requisiti specifici
+per la spaziatura verticale dei righi e del testo vocale, ovvero maggior spazio
+tra testo e note, e tra l'accompagnamento del pianoforte e la linea vocale, e
+minor spazio tra i righi del pianoforte. Iniziamo dal testo.
+
+the lyrics spaced away from any notes, they want the piano
+accompaniment spaced away from the vocal line and they want the two
+piano staves pushed together tightly. Let's start with the lyrics.
+
+Il testo vocale si trova all'interno di un sistema, dunque i comandi per
+modificarne la spaziatura sono descritti in @ruser{Flexible vertical spacing within systems}.
+Quel paragrafo ci dice che il testo è costituito da linee che non appartengono
+al rigo (@code{non-staff lines}), quindi il comando per cambiarne la spaziatura
+sarà riferito alla proprietà @code{nonstaff}. Per allontanarlo dal rigo a cui
+si riferiscono (la linea superiore) si usa la proprietà @code{relatedstaff}.
+Per allontanarli dalla linea più bassa si usa la proprietà @code{unrelatedstaff}.
+Le parti vocali fanno parte del @code{VerticalAxisGroup}, dunque dobbiamo
+aggiustare le sue proprietà. Proviamo a vedere se funziona.
+
+@lilypond[quote,fragment,ragged-right,verbatim]
+<<
+ \new ChoirStaff
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.
+ nonstaff-relatedstaff-spacing.padding = #5
+ \override VerticalAxisGroup.
+ nonstaff-unrelatedstaff-spacing.padding = #5
+ }
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
+@end lilypond
+
+Funziona, ma forse non molto bene. Quando impostiamo il
+@code{padding} su 5, LilyPond aggiunge 5 spazi rigo alla distanza
+tra gli oggetti, che è troppo in questo caso. Useremo 2.
+
+Ora allontaniamo la musica per pianoforte dalle parti vocali. La musica
+vocale si trova nel rigo @code{ChoirStaff}, quindi dobbiamo aumentare lo
+spazio tra quel gruppo di righi e il rigo per pianoforte che si trova sotto.
+Lo faremo modificando la proprietà @code{basic-distance} del
+@code{staffgroup-staff-spacing} di @code{StaffGrouper}.
+
+@lilypond[quote,fragment,ragged-right,verbatim]
+<<
+ \new ChoirStaff \with {
+ \override StaffGrouper.
+ staffgroup-staff-spacing.basic-distance = #15
+ }
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.
+ nonstaff-relatedstaff-spacing.padding = #2
+ \override VerticalAxisGroup.
+ nonstaff-unrelatedstaff-spacing.padding = #2
+ }
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
+@end lilypond
+
+Ottimo. Non ci resta che avvicinare i righi del pianoforte. Per farlo,
+modifichiamo di nuovo le proprietà di @code{StaffGrouper}, ma questa volta
+riduciamo sia @code{basic-distance} che @code{padding}. Ecco come fare:
+
+@lilypond[quote,fragment,ragged-right,verbatim]
+<<
+ \new ChoirStaff \with {
+ \override StaffGrouper.
+ staffgroup-staff-spacing.basic-distance = #15
+ }
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.
+ nonstaff-relatedstaff-spacing.padding = #2
+ \override VerticalAxisGroup.
+ nonstaff-unrelatedstaff-spacing.padding = #2
+ }
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff \with {
+ \override StaffGrouper.staff-staff-spacing = #'(
+ (basic-distance . 0)
+ (padding . 0))
+ }
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
+@end lilypond
+
+In questo modo sono molto vicini, ma è quello che vuole l'editore.
+Se necessario, possono essere allontanati modificando @code{padding} o
+@code{basic-distance}.
+
+Ci sono molti modi per modificare la spaziatura verticale. Il punto fondamentale
+da ricordare è che la spaziatura degli oggetti in un contesto @code{StaffGroup}
+(come i gruppi @code{GrandStaff} o @code{PianoStaff}) è controllata dalle
+variabili spaziali di @code{StaffGrouper}. La spaziatura relativa ai righi
+non raggruppati (come @code{Lyrics} e @code{Staff}) è regolata dalle variabili
+del @code{VerticalAxisGroup}. Ulteriori dettagli in
+@ruser{Flexible vertical spacing \\paper variables} e
+@ruser{Flexible vertical spacing within systems}.
@node Collisioni tra oggetti
Vediamo ora come le proprietà presentate nella sezione precedente possano
aiutare a risolvere la sovrapposizione degli elementi della notazione.
-@subheading proprietà padding
+@menu
+* La proprietà padding::
+* La proprietà right-padding::
+* La proprietà staff-padding::
+* La proprietà self-alignment-X::
+* La proprietà staff-position::
+* La proprietà extra-offset::
+* La proprietà positions::
+* La proprietà force-hshift::
+@end menu
+
+@node La proprietà padding
+@unnumberedsubsubsec La proprietà @code{padding}
+@translationof The padding property
@cindex padding
@cindex spaziatura
quell'oggetto e tutti gli oggetti esterni a esso.
-@subheading right-padding
+@node La proprietà right-padding
+@unnumberedsubsubsec La proprietà @code{right-padding}
+@translationof The right-padding property
@cindex proprietà right-padding
@cindex right-padding, proprietà
@noindent
-@subheading proprietà staff-padding
+@node La proprietà staff-padding
+@unnumberedsubsubsec La proprietà @code{staff-padding}
+@translationof The staff-padding property
@cindex allineare gli oggetti a una base
@cindex oggetti, allinearli a una base
\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
% Allinea le dinamiche alla base posta 2 unità sopra il rigo
\override DynamicLineSpanner.staff-padding = #2
-a4\f b\mf c\mp b\p
+a4\f b\mf a\mp b\p
@end lilypond
-@subheading proprietà self-alignment-X
+@node La proprietà self-alignment-X
+@unnumberedsubsubsec La proprietà @code{self-alignment-X}
+@translationof The self-alignment-X property
-L'esempio successivo mostra come questa proprietà possa risolvere la
-collisione di un numero di corda con un gambo allineando il bordo
-destro del numero al punto di riferimento della nota a cui si riferisce:
+L'esempio successivo mostra come aggiustare la posizione di un numero
+di corda rispetto a un gambo allineando il bordo destro del numero
+al punto di riferimento della nota a cui si riferisce:
@cindex StringNumber, esempio di sovrascrittura
@cindex proprietà self-alignment-X, esempio
<a\2>
@end lilypond
-@subheading proprietà staff-position
+
+@node La proprietà staff-position
+@unnumberedsubsubsec La proprietà @code{staff-position}
+@translationof The staff-position property
@cindex collisione tra oggetti all'interno del rigo
In questo caso la soluzione migliore è spostare in basso la pausa d'intero, poiché
si trova nella seconda voce. In @code{\voiceTwo} (ovvero nella seconda
-voce di un costrutto @code{<<@{...@} \\ @{...@}>>}) il valore predefinito
+voce di un costrutto @code{<<@{@dots{}@} \\ @{@dots{}@}>>}) il valore predefinito
di @code{staff-position} è -4 per la pausa multipla (MultiMeasureRest), quindi
dobbiamo spostarla più in basso, ad esempio di altri quattro semispazi del
rigo; il nuovo valore sarà @w{@code{-8}}.
Questa soluzione è preferibile all'uso di @code{extra-offset}, perché
il taglio addizionale sopra la pausa è inserito automaticamente.
-@subheading proprietà extra-offset
+@node La proprietà extra-offset
+@unnumberedsubsubsec La proprietà @code{extra-offset}
+@translationof The extra-offset property
@cindex posizionare gli oggetti
@cindex posizionare i grob
@end lilypond
-@subheading proprietà positions
+@node La proprietà positions
+@unnumberedsubsubsec La proprietà @code{positions}
+@translationof The positions property
@cindex controllo manuale di graffette dei gruppi irregolari, travature, legature di portamento e di frase
@cindex travature dei gruppi irregolari, controllo manuale
@cindex legature di frase, controllo manuale
@cindex travature, controllo manuale
-La proprietà @code{positions} permette di controllare manualmente la posizione e
-l'inclinazione delle graffette dei gruppi irregolari, delle legature di portamento e di
-frase e delle travature. Ecco un esempio di una legatura di frase
-dall'aspetto orribile, dovuto al suo tentativo di evitare la legatura
-di portamento sull'acciaccatura.
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4 \acciaccatura e8\( d8 c~ c d c d\)
-@end lilypond
-
-@noindent
-Potremmo semplicemente spostare la legatura di frase sopra le note:
+La proprietà @code{positions} permette di controllare manualmente la
+posizione verticale e quindi l'inclinazione delle graffette dei
+gruppi irregolari, delle legature di portamento e di frase e
+delle travature. Ecco un esempio in cui una legatura di frase
+e una legatura di portamento collidono:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4
-\phrasingSlurUp
-\acciaccatura e8\( d8 c~ c d c d\)
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+a8 \( ( a'16 ) a \)
@end lilypond
-@noindent
-Questa sarebbe la soluzione migliore. Se, invece, per qualche motivo non
-fosse possibile, l'alternativa sarebbe spostare un po' più in basso l'estremità
-sinistra della legatura di frase tramite la proprietà @code{positions}. Questo
-risolve anche il problema della forma sgraziata.
-
@cindex PhrasingSlur, esempio di sovrascrittura
@cindex proprietà positions, esempio
@cindex positions, esempio
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4
-\once \override PhrasingSlur.positions = #'(-4 . -3)
-\acciaccatura e8\( d8 c~ c d c d\)
+@noindent
+Si potrebbero spostare più in alto le due estremità della legatura
+di frase. Possiamo provare a impostare quella sinistra su 2.5 spazi
+sopra la linea centrale e quella destra a 4.5 spazi; LilyPond
+sceglierà la legatura di frase tra quelle candidate che hanno le
+estremità più vicine a queste:
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+\once \override PhrasingSlur.positions = #'(2.5 . 4.5)
+a8 \( ( a'16 ) a \)
@end lilypond
+È migliorato, ma perché non abbassare un po' l'estremità destra
+della legatura di portamento? Se provi vedrai che non può essere
+fatto in questo modo. Il motivo è che non ci sono legature di
+portamento candidate più basse di quella già selezionata, quindi
+in questo caso la proprietà @code{positions} non può produrre
+effetti. Tuttavia, legature di valore, di portamento e di frase
+@emph{possono} essere posizionate e disegnate in modo molto preciso
+se necessario. Per sapere come fare si veda @ruser{Modifying ties and slurs}.
+
Ecco un altro esempio. Vediamo che le travature collidono
con le legature di valore:
Come vedi, la sovrascrittura si applica anche alla prima voce della seconda
misura di otto note, ma a nessuna delle travature nella seconda voce.
-@subheading proprietà force-hshift
+@node La proprietà force-hshift
+@unnumberedsubsubsec La proprietà @code{force-hshift}
+@translationof The force-hshift property
Possiamo vedere ora come applicare le correzioni finali all'esempio di Chopin
introdotto alla fine del paragrafo @ref{I'm hearing Voices}, che avevamo
\new Voice {
\voiceTwo
c,8~
- % Reposition the c2 to the right of the merged note
+ % Riposiziona il c2 a destra della nota unita
\once \override NoteColumn.force-hshift = #1.0
- % Move the c2 out of the main note column
- % so the merge will work
+ % Sposta il c2 fuori dalla colonna della nota principale
+ % in modo che l'unione di note (merge) funzioni
\shiftOnn
c2
}
\new Voice {
\voiceThree
s8
- % Stem on the d2 must be down to permit merging
+ % Il gambo di d2 deve essere in giù per permettere l'unione delle note
\stemDown
- % Stem on the d2 should be invisible
+ % Il gambo di d2 deve essere invisibile
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
d2
}
\new Voice {
s8
% Il gambo di d2 deve essere in giù per permettere l'unione delle note
\stemDown
- % Stem on the d2 should be invisible
+ % Il gambo di d2 deve essere invisibile
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
d2
}
\new Voice {
@translationof Further tweaking
@menu
-* Altri usi delle modifiche::
-* Uso delle variabili per le modifiche::
+* Altri usi delle modifiche con \tweak::
+* Uso delle variabili per modificare la formattazione::
* Fogli di stile::
* Altre fonti di informazione::
* Modifiche avanzate con Scheme::
@end menu
-@node Altri usi delle modifiche
-@subsection Altri usi delle modifiche
+@node Altri usi delle modifiche con \tweak
+@subsection Altri usi delle modifiche con @code{\tweak}
@translationof Other uses for tweaks
+@menu
+* Legature di valore tra note di voci diverse::
+* Simulare una corona nel MIDI::
+@end menu
+
+
@cindex proprietà transparent, uso della
@cindex oggetti, renderli invisibili
@cindex togliere gli oggetti
@cindex oggetti invisibili
@cindex legature di valore tra note di voci diverse
-@subheading Legature di valore tra note di voci diverse
+@node Legature di valore tra note di voci diverse
+@unnumberedsubsubsec Legature di valore tra note di voci diverse
+@translationof Tying notes across voices
L'esempio seguente mostra come unire con legature di valore
note appartenenti a voci diverse. Di norma, solo le note nella
<<
{
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
b8~ b\noBeam
}
\\
<<
{
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
\tweak Stem.length #8
b8~ b\noBeam
}
>>
@end lilypond
-@subheading Simulare una corona nel MIDI
+@funindex \single
+@cindex tweak, generato da un override
+
+Per @emph{sovrascrivere} (con @code{\override}) la trasparenza di un oggetto
+grafico, avremmo potuto usare la scorciatoia @code{\hide}, come spiegato
+in precedenza. Ma la modifica manuale con @emph{\tweak} è un'operazione
+diversa, che riguarda solo le proprietà generate da una singola espressione
+musicale. Tuttavia è possibile convertire le sovrascritture in @emph{tweak}
+usando @code{\single}. Questo ci permette di riscrivere l'esempio precedente
+in questo modo
+
+@lilypond[quote,fragment,relative=2,verbatim]
+<<
+ {
+ \single \hide Stem
+ \single \hide Flag
+ \tweak Stem.length #8
+ b8~ b\noBeam
+ }
+\\
+ { b8[ g] }
+>>
+@end lilypond
+
+In questo caso particolare, la differenza rispetto a @code{\once \hide} non
+è evidente. La differenza è evidente quando ci sono vari oggetti che
+si trovano nello stesso punto del tempo musicale (come le teste delle note
+in un accordo). In quel caso, @code{\once} avrà effetto su tutti quegli
+oggetti mentre @code{\single} solo su uno, ovvero quello generato
+dall'espressione musicale immediatamente seguente.
+
+
+@node Simulare una corona nel MIDI
+@unnumberedsubsubsec Simulare una corona nel MIDI
+@translationof Simulating a fermata in MIDI
@cindex proprietà stencil, uso della
@cindex corona, usarla nel MIDI
% Indicazione di tempo visibile
\tempo 4=120
a4 a a
- \once \override Score.MetronomeMark.transparent = ##t
+ \once \hide Score.MetronomeMark
% Indicazione di tempo invisibile per allungare la fermata nel MIDI
\tempo 4=80
a4\fermata |
% Indicazione di tempo visibile
\tempo 4=120
a4 a a
- \once \override Score.MetronomeMark.stencil = ##f
+ \once \omit Score.MetronomeMark
% Indicazione di tempo invisibile per allungare la fermata nel MIDI
\tempo 4=80
a4\fermata |
Glossario musicale:
@rglosnamed{system,sistema}.
-@node Uso delle variabili per le modifiche
-@subsection Uso delle variabili per le modifiche
-@translationof Using variables for tweaks
+@node Uso delle variabili per modificare la formattazione
+@subsection Uso delle variabili per modificare la formattazione
+@translationof Using variables for layout adjustments
-@cindex variabili, usarle per le modifiche
-@cindex usare le variabili per le modifiche
-@cindex modifiche, usare le variabili per le
+@cindex variabili, usarle per le sovrascritture
+@cindex sovrascritture, usare le variabili per
+@cindex formattazione, usare le variabili per modificare la
I comandi di sovrascrittura sono spesso lunghi e tediosi da
scrivere, e devono essere assolutamente corretti. Se si usa
@ref{Advanced tweaks with Scheme}.
@lilypond[quote,verbatim,ragged-right]
-mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+mpdolce = -\tweak #'self-alignment-X #-0.6 #
+ (make-dynamic-script
+ (markup #:dynamic "mp"
+ #:normal-text #:italic "dolce" ))
inst =
#(define-music-function
@example
%%% salva queste righe in un file chiamato "definitions.ily"
-mpdolce =
-#(make-dynamic-script
- #@{ \markup @{ \hspace #0
- \translate #'(5 . 0)
- \line @{ \dynamic "mp"
- \text \italic "dolce" @} @}
- #@})
+mpdolce = -\tweak #'self-alignment-X #-0.6 #
+ (make-dynamic-script
+ (markup #:dynamic "mp"
+ #:normal-text #:italic "dolce" ))
inst =
#(define-music-function
@end example
@lilypond[quote,ragged-right]
-mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+mpdolce = -\tweak #'self-alignment-X #-0.6 #
+ (make-dynamic-script
+ (markup #:dynamic "mp"
+ #:normal-text #:italic "dolce" ))
inst =
#(define-music-function
@example
%%% definitions.ily
-mpdolce =
-#(make-dynamic-script
- #@{ \markup @{ \hspace #0
- \translate #'(5 . 0)
- \line @{ \dynamic "mp"
- \text \italic "dolce" @} @}
- #@})
+mpdolce = -\tweak #'self-alignment-X #-0.6 #
+ (make-dynamic-script
+ (markup #:dynamic "mp"
+ #:normal-text #:italic "dolce" ))
inst =
#(define-music-function
\layout@{
\context @{
\Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
@}
\context @{
@end example
@lilypond[quote,ragged-right]
-mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+mpdolce = -\tweak #'self-alignment-X #-0.6 #
+ (make-dynamic-script
+ (markup #:dynamic "mp"
+ #:normal-text #:italic "dolce" ))
inst =
#(define-music-function
\layout{
\context {
\Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
}
\context {
@example
%%% web-publish.ily
-mpdolce =
-#(make-dynamic-script
- #@{ \markup @{ \hspace #0
- \translate #'(5 . 0)
- \line @{ \dynamic "mp"
- \text \italic "dolce" @} @}
- #@})
+mpdolce = -\tweak #'self-alignment-X #-0.6 #
+ (make-dynamic-script
+ (markup #:dynamic "mp"
+ #:normal-text #:italic "dolce" ))
inst =
#(define-music-function
\layout@{
\context @{
\Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
@}
\context @{
@end example
@lilypond[quote,ragged-right]
-mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+mpdolce = -\tweak #'self-alignment-X #-0.6 #
+ (make-dynamic-script
+ (markup #:dynamic "mp"
+ #:normal-text #:italic "dolce" ))
inst =
#(define-music-function
\layout{
\context { \Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
}
\context { \Voice
(come nelle distribuzioni GNU/Linux o nelle istallazioni tramite
fink o cygwin) o compilandolo dai sorgenti:
-@strong{Scaricato da lilypond.org}
+@subsubheading Scaricato da lilypond.org
@itemize @bullet
@item GNU/Linux
@end itemize
-@strong{Istallato da un gestore di pacchetti o compilato da sorgenti}
+@subsubheading Istallato da un gestore di pacchetti o compilato da sorgenti
Vai in
@file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, dove
Altri esempi che mostrano l'uso di queste interfacce programmabili
si trovano in @rextend{Callback functions}.
-