@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
@ignore
- Translation of GIT committish: 0f6397c6fb10d919c6fd006d89bd5cb614f858c6
+ Translation of GIT committish: 63e280b6c609d307b1cb9aa1852fce7862c39738
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.11"
+@c \version "2.19.21"
@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
oggetti che hanno una forma estesa in questo modo vengono chiamati «Estensori»
(in inglese @emph{Spanner}).
+Esistono anche dei grob @q{astratti} che non stampano niente da soli, bensì
+raccolgono, posizionano e gestiscono altri grob. Esempi comuni sono
+@code{DynamicLineSpanner}, @code{BreakAlignment}, @code{NoteColumn},
+@code{VerticalAxisGroup}, @code{NonMusicalPaperColumn} e simili. Vedremo
+in seguito come si usano alcuni di questi.
+
Resta da spiegare cosa sono le «Interfacce». Molti oggetti, pur essendo
piuttosto diversi, condividono delle caratteristiche comuni che devono
essere elaborate nello stesso modo. Ad esempio, tutti i @emph{grob} hanno un
@cindex modifica, metodi
@menu
-* Il comando \override::
-* Il comando \revert::
-* Il prefisso \once::
-* Il comando \overrideProperty::
-* Il comando \tweak::
+* Il comando override::
+* Il comando revert::
+* Il prefisso once::
+* Il comando overrideProperty::
+* Il comando tweak::
+* Il prefisso single::
@end menu
-@node Il comando \override
-@unnumberedsubsubsec Il comando @code{\override}
-@translationof The \override command
+@node Il comando override
+@unnumberedsubsubsec Il comando @code{@bs{}override}
+@translationof The override command
@cindex override, comando
@cindex override, sintassi
dell'oggetto di formattazione chiamato @var{OggettoDiFormattazione}, che fa
parte del contesto @var{Contesto}, il valore @var{valore}.
-Il @var{Contesto} può essere ommesso (e di solito lo è) quando il
+Il @var{Contesto} può essere omesso (e di solito lo è) quando il
contesto richiesto è implicito e si trova a uno dei livelli più
bassi dei contesti, come ad esempio @code{Voice}, @code{ChordNames} o
@code{Lyrics}. Lo ometteremo in molti degli esempi seguenti; vedremo
g4 a b c |
@end lilypond
-@node Il comando \revert
-@unnumberedsubsubsec Il comando @code{\revert}
-@translationof The \revert command
+@node Il comando revert
+@unnumberedsubsubsec Il comando @code{@bs{}revert}
+@translationof The revert command
@cindex revert, comando
@cindex ripristino, comando \revert
b4 c |
@end lilypond
-@node Il prefisso \once
-@unnumberedsubsubsec Il prefisso @code{\once}
-@translationof The \once prefix
+@node Il prefisso once
+@unnumberedsubsubsec Il prefisso @code{@bs{}once}
+@translationof The once prefix
@funindex \once
@funindex once
b c |
@end lilypond
-Tuttavia, i comandi prefediniti che hanno la forma @code{\...Neutral},
-@code{\...Off} e @code{\un...} usano internamente @code{\revert} invece
+Tuttavia, i comandi predefiniti 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
+@node Il comando overrideProperty
+@unnumberedsubsubsec Il comando @code{@bs{}overrideProperty}
+@translationof The overrideProperty command
@cindex overrideProperty, comando
si veda @rextend{Difficult tweaks}.
@c Maybe explain in a later iteration -td
-@node Il comando \tweak
-@unnumberedsubsubsec Il comando @code{\tweak}
-@translationof The \tweak command
+@node Il comando tweak
+@unnumberedsubsubsec Il comando @code{@bs{}tweak}
+@translationof The tweak command
@cindex tweak, comando
Questa forma estesa del comando @code{\tweak} può essere descritta così
@example
-\tweak @var{oggetto-formattazione}.@var{proprietà-formattazione} @var{valore}
+\tweak @var{OggettoFormattazione}.@var{proprietà-formattazione} #@var{valore}
@end example
@cindex gruppi irregolari, annidati
}
@end lilypond
-
@seealso
+@c need to comment this until the node conflict is fixed - fb
Guida alla Notazione:
-@ruser{The tweak command}.
+@ruser{The tweak command,,The tweak command}.
+
+
+@node Il prefisso single
+@unnumberedsubsubsec Il prefisso @code{@bs{}single}
+@translationof The single prefix
+
+@funindex \single
+@cindex tweak, generato da override
+
+Immaginiamo di voler enfatizzare alcune teste di nota in particolare
+colorandole di rosso e aumentandone la dimensione; e immaginiamo anche
+che per comodità abbiamo definito una funzione per fare ciò:
+
+@lilypond[quote,verbatim]
+emphNoteHead = {
+ \override NoteHead.color = #red
+ \override NoteHead.font-size = 2
+}
+\relative {
+ c''4 a \once \emphNoteHead f d |
+}
+@end lilypond
+
+Il prefisso @code{\once} funziona bene se si desidera enfatizzare note
+singole o interi accordi, ma non permette di enfatizzare una singola
+nota @emph{dentro} un accordo. Prima abbiamo visto come si possa usare
+@code{\tweak} per fare ciò, vedi @ref{The tweak command}.
+Ma non è possibile usare @code{\tweak} in una funzione; è in questo caso che
+torna utile il comando @code{\single}:
+
+@lilypond[quote,verbatim]
+emphNoteHead = {
+ \override NoteHead.color = #red
+ \override NoteHead.font-size = 2
+}
+\relative {
+ <c'' a \single \emphNoteHead f d>4
+}
+@end lilypond
+
+In sintesi, @code{\single} converte le modifiche introdotte dal comando
+@code{\override} in modifiche eseguite dal comando @code{\tweak}.
+Ciò significa che quando ci sono vari oggetti che si trovano nello stesso
+momento musicale (come le teste di nota in un accordo), @code{\single} avrà
+effetto su uno solo, quello generato dall'espressione musicale immediatamente
+seguente; a differenza di @code{\once}, che ha effetto su tutti questi oggetti.
+
+Usando @code{\single} in questo modo qualsiasi funzione usata come
+scorciatoia che contiene soltanto @code{\override} può essere applicata
+a note individuali in un accordo. Tuttavia, @code{\single} non converte
+@code{\revert}, @code{\set} e @code{\unset} in modifiche che hanno le
+proprietà di @code{\tweak}.
+
+@seealso
+Manuale di apprendimento:
+@ref{The tweak command},
+@ref{Using variables for layout adjustments}.
@node Manuale del Funzionamento interno
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
- \relative g' {
- r4 g8 g c4 c8 d |
+ \relative {
+ r4 g'8 g c4 c8 d |
e4 r8
<<
{ f8 c c }
Gli ossia di norma vengono scritti senza chiave e senza indicazione di
tempo e hanno solitamente una dimensione leggermente inferiore a
-quella del rigo pricipale. Sappiamo già come togliere la chiave e
+quella del rigo principale. Sappiamo già come togliere la chiave e
il segno di tempo, cioè impostando semplicemente la proprietà stencil di
ciascun oggetto su @code{#f}, così:
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
- \relative g' {
- r4 g8 g c4 c8 d |
+ \relative {
+ r4 g'8 g c4 c8 d |
e4 r8
<<
{ f8 c c }
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
- \relative g' {
- r4 g8 g c4 c8 d |
+ \relative {
+ r4 g'8 g c4 c8 d |
e4 r8
<<
{ f8 c c }
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
- \relative g' {
- r4 g8 g c4 c8 d |
+ \relative {
+ r4 g'8 g c4 c8 d |
e4 r8
<<
{ f8 c c }
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
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
- \relative g' {
- r4 g8 g c4 c8 d |
+ \relative {
+ r4 g'8 g c4 c8 d |
e4 r8
<<
{ f8 c c }
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
- \relative g' {
- r4 g8 g c4 c8 d |
+ \relative {
+ r4 g'8 g c4 c8 d |
e4 r8
<<
{ f8 c c }
(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
@lilypond[quote,ragged-right,verbatim]
<<
\new Staff {
- \relative c' { c4 a, }
+ \relative { c'4 a, }
}
\new Staff {
- \relative c'''' { c4 a, }
+ \relative { c''''4 a, }
}
>>
@end lilypond
@menu
* La proprietà outside-staff-priority::
-* Il comando \textLengthOn::
-* Posizionamento della dinamica::
+* Il comando textLengthOn::
+* Posizionamento delle dinamiche::
* Dimensione dei grob::
@end menu
Le legature di portamento sono classificate come oggetti interni al rigo, anche
se spesso sono poste sopra il rigo, se le note alle quali sono collegate si
-trovano nella aprte superiore del pentagramma. Questo può far sì che gli oggetti esterni al rigo,
+trovano nella parte superiore del pentagramma. Questo può far sì che gli oggetti esterni al rigo,
come le articolazioni, siano spinti troppo in alto, dato che la legatura viene
posizionata prima. La proprietà @code{avoid-slur} dell'articolazione
può essere impostata su @code{'inside} per portare l'articolazione
far posto al testo. Lo si può ottenere con il comando
@code{textLengthOn}.
-@node Il comando \textLengthOn
-@unnumberedsubsubsec Il comando @code{\textLengthOn}
-@translationof The \textLengthOn command
+@node Il comando textLengthOn
+@unnumberedsubsubsec Il comando @code{@bs{}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:
@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
-@node Posizionamento della dinamica
-@unnumberedsubsubsec Posizionamento della 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
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.
+
+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
qualsiasi oggetto che supporti l'interfaccia @code{side-position-interface} e
quello più vicino (solitamente, la nota o le linee del rigo); @code{staff-padding}
si applica solo a quegli oggetti che stanno sempre fuori dal rigo e regola
-la quantità minima di spazio da inserire tra l'oggetto e il rigo. Nota che
+la distanza minima tra l'oggetto e il rigo. Nota che
@code{staff-padding} non ha alcun effetto sugli oggetti disposti relativamente
alla nota invece che al rigo, anche se può essere sovrascritto senza generare
degli errori per tali oggetti; quindi viene semplicemente ignorata.
tra oggetti come le pause di più misure, le legature di valore e le
note in voci diverse.
+@item
+@code{horizontal-shift}
+
+@cindex horizontal-shift, proprietà
+@cindex proprietà horizontal-shift
+@cindex colonna di note
+@cindex collisioni di note
+@cindex note, collisioni
+@cindex shift, comandi
+@funindex \shiftOff
+@funindex shiftOff
+@funindex \shiftOn
+@funindex shiftOn
+@funindex \shiftOnn
+@funindex shiftOnn
+@funindex \shiftOnnn
+@funindex shiftOnnn
+
+All'interno di una voce, tutte le note che si trovano nello stesso momento
+musicale sono raggruppate in una colonna di note, e viene creato un oggetto
+@code{NoteColumn} per controllare il posizionamento orizzontale di quel
+gruppo di note (vedi @qq{Colonne di note} in @ref{Explicitly instantiating voices}). Se
+@emph{e solo se} due o più colonne di note in un solo contesto Staff, entrambe
+con i gambi nella stessa direzione, si trovano sullo stesso momento musicale,
+i valori delle loro proprietà @code{horizontal-shift} sono usati per attribuire
+un punteggio e le colonne che hanno un punteggio più alto vengono progressivamente spostate
+per evitare le collisioni delle teste di nota. Questa proprietà viene impostata
+dai comandi @code{\voiceXXX} e può essere scavalcata direttamente con un
+comando @code{\override} o, di solito, dai comandi @code{\shiftOn}.
+Attenzione: questa proprietà viene usata per dare un @emph{punteggio} alle
+colonne di note per spostarle orizzontalmente; non specifica la grandezza dello
+spostamento, che viene aumentata progressivamente per gradi in base alla larghezza della
+testa di nota per ogni punteggio. I gradi sono solitamente di metà della
+larghezza della testa di nota, ma possono essere della larghezza intera della
+testa quando c'è un gruppo di note molto ravvicinate.
+
+
@item
@code{force-hshift}
@cindex proprietà force-hshift
@cindex force-hshift, proprietà
-Le note ravvicinate di un accordo o quelle simultanee appartenenti
-a voci diverse sono disposte su due e talvolta più colonne per
-impedire la sovrapposizione delle teste. Tali colonne si chiamano
-colonne di note (@emph{note columns}) e l'oggetto che provvede a crearle
-si chiama @code{NoteColumn}.
-
La proprietà @code{force-hshift} appartiene a @code{NoteColumn}
(più precisamente all'interfaccia @code{note-column-interface}). Modificandola
-è possibile spostare la colonna di note proporzionalmente,
-assumendo come unità la larghezza della testa della nota nella voce superiore. Si usa
+è possibile spostare la colonna di note in situazioni in cui le colonne di
+note sono sovrapposte. Non ha effetto su colonne di note non sovrapposte.
+Viene specificata in unità appropriate per una colonna di note, ovvero la
+larghezza della testa della nota nella prima voce. Si usa
in situazioni complesse in cui i normali comandi @code{\shiftOn} (vedi
@ref{Explicitly instantiating voices}) non risolvono adeguatamente le collisioni tra le
note. Per questo scopo, è preferibile alla proprietà @code{extra-offset}
@lilypond[quote,ragged-right,verbatim]
sesquisharp = \markup { \sesquisharp }
-\relative c'' {
- c4
+\relative {
+ c''4
% Mostra un triesis (alterazione ascendente di tre quarti di tono) ma lo spazio è troppo stretto
\once \override Accidental.stencil = #ly:text-interface::print
\once \override Accidental.text = #sesquisharp
@cindex oggetti, allinearli a una base
@code{staff-padding} serve ad allineare gli oggetti come i segni di
-dinamica lungo una linea di base a una certa altezza fissa sopra il
-rigo, invece che a un'altezza dipendente dalla posizione della nota al
-quale sono collegati. Non è una proprietà di @code{DynamicText} bensì
+dinamica lungo una linea di base a una certa distanza dal rigo, quando
+nessun altro elemento della notazione li allontana dal rigo.
+Non è una proprietà di @code{DynamicText} bensì
di @code{DynamicLineSpanner}, perché la base deve essere applicata
ugualmente a @strong{tutti} i segni dinamica, compresi quelli creati
come estensori. Ecco come allineare i segni di dinamica nell'esempio
@cindex staff-padding, esempio
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-\dynamicUp
-% Aumenta la larghezza di 1 unità
-\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
+\override DynamicLineSpanner.staff-padding = #3
+a4\f b\mf a\p b\mp
@end lilypond
@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
+
@node La proprietà staff-position
@unnumberedsubsubsec La proprietà @code{staff-position}
@translationof The staff-position property
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}}.
{
\time 4/2
<<
- { c'1 ~ c'2. e'8 f' }
+ { c'1 ~ 2. e'8 f' }
\\
{ e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
>>
<<
- { c'1 ~ c'2. e'8 f' }
+ { c'1 ~ 2. e'8 f' }
\\
{ e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
>>
{
\time 4/2
<<
- { c'1 ~ c'2. e'8 f' }
+ { c'1 ~ 2. e'8 f' }
\\
{
\override Beam.positions = #'(-1 . -1)
}
>>
<<
- { c'1 ~ c'2. e'8 f' }
+ { c'1 ~ 2. e'8 f' }
\\
{ e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
>>
lasciato così:
@lilypond[quote,verbatim,fragment,ragged-right]
-\new Staff \relative c'' {
+\new Staff \relative {
\key aes \major
<<
- { c2 aes4. bes8 }
+ { c''2 aes4. bes8 }
\\
{ <ees, c>2 des }
\\
@noindent
La nota interna del primo accordo (ovvero il La bemolle della quarta
voce) non deve essere allontanata dalla colonna della nota più
-alta. Per correggerlo impostiamo @code{force-hshift}, una proprietà
-di @code{NoteColumn}, su zero.
+alta. Potremmo pensare di correggerlo con @code{\shiftOff}, ma ciò
+causerebbe degli avvertimenti relativi alla collisione di note. Impostiamo
+invece @code{force-hshift}, una proprietà di @code{NoteColumn}, su zero.
Nel secondo accordo preferiamo che il Fa sia allineato al La bemolle e che
la nota più grave sia posizionata leggermente più a destra, in modo da
evitare la collisione dei gambi. Per farlo dobbiamo impostare
@code{force-hshift} nella colonna (@code{NoteColumn}) del Re bemolle
-grave in modo che si sposti a destra di mezzo spazio di rigo.
+grave in modo che si sposti a destra di mezzo spazio di rigo e @code{force-hshift}
+per il Fa su zero. Si usa @code{\once} per evitare che tali impostazioni
+si propaghino oltre il momento musicale immediato, sebbene in questo
+piccolo esempio il @code{\once} e il secondo @code{\override} nella quarta
+voce potrebbero essere omessi. Ma non sarebbe un esempio di buona pratica.
Ecco il risultato finale:
@cindex force-hshift, esempio
@lilypond[quote,verbatim,fragment,ragged-right]
-\new Staff \relative c'' {
+\new Staff \relative {
\key aes \major
<<
- { c2 aes4. bes8 }
+ { c''2 aes4. bes8 }
\\
- {
- <ees, c>2
- \once \override NoteColumn.force-hshift = #0.5
- des2
- }
+ { <ees, c>2 \once \override NoteColumn.force-hshift =
+ 0.5 des }
\\
\\
- {
- \override NoteColumn.force-hshift = #0
- aes'2 f4 fes
- }
+ { \once \override NoteColumn.force-hshift = 0 aes'2
+ \once \override NoteColumn.force-hshift = 0 f4 fes }
>> |
<c ees aes c>1 |
}
@c This example should not be indexed
@c line-width ensures no break
@lilypond[quote,ragged-right,line-width=6\in]
-rhMusic = \relative c'' {
+rhMusic = \relative {
\new Voice {
- r2 c4.\( g8 |
+ r2 c''4.\( g8 |
\once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
\mergeDifferentlyHeadedOn
\mergeDifferentlyDottedOn
- bes2.^\markup { \bold "Moderato" } r8
+ bes2.\tempo "Moderato" r8
<<
{ c,8 d fis bes a }
\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 {
}
}
-lhMusic = \relative c' {
- r2 <c g ees>2( |
+lhMusic = \relative {
+ r2 <c' g ees>2( |
<d g, d>1)\arpeggio |
r2. d,,4 r4 r |
r4
@c line-width ensures no break
@lilypond[quote,verbatim,ragged-right,line-width=6\in]
-rhMusic = \relative c'' {
+rhMusic = \relative {
\new Voice {
- r2 c4. g8 |
+ r2 c''4. g8 |
bes1~ |
\time 6/4
bes2. r8
{ c,8 d fis bes a } % continuazione della voce principale
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
}
}
-lhMusic = \relative c' {
- r2 <c g ees>2 |
+lhMusic = \relative {
+ r2 <c' g ees>2 |
<d g, d>1 |
r2. d,,4 r4 r |
r4
@c line-width ensures no break
@lilypond[quote,verbatim,ragged-right,line-width=6\in]
-rhMusic = \relative c'' {
+rhMusic = \relative {
\new Voice {
- r2 c4.\( g8 |
+ r2 c''4.\( g8 |
bes1~ |
\time 6/4
bes2. r8
{ c,8 d fis bes a } % continuazione della voce principale
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
}
}
-lhMusic = \relative c' {
- r2 <c g ees>2( |
+lhMusic = \relative {
+ r2 <c' g ees>2( |
<d g, d>1) |
r2. d,,4 r4 r |
r4
@c line-width ensures no break
@lilypond[quote,verbatim,ragged-right,line-width=6\in]
-rhMusic = \relative c'' {
+rhMusic = \relative {
\new Voice {
- r2 c4.\( g8 |
+ r2 c''4.\( g8 |
\once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
{ c,8 d fis bes a } % continuazione della voce principale
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
}
}
-lhMusic = \relative c' {
- r2 <c g ees>2( |
+lhMusic = \relative {
+ r2 <c' g ees>2( |
<d g, d>1)\arpeggio |
r2. d,,4 r4 r |
r4
@end lilypond
Proseguiamo con la terza battuta e l'inizio della sezione del Moderato. Nel
-tutorial abbiamo visto come aggiungere del testo in grassetto tramite il
-comando @code{\markup}, quindi aggiungere @qq{Moderato} in grassetto è
-facile. Ma come facciamo ad accorpare le note appartenenti a voci
-diverse? Ancora una volta dobbiamo rivolgerci alla guida alla Notazione per
-un aiuto. Una ricerca del termine @qq{accorpare} (@emph{merge}) nell'indice della
-guida ci porta rapidamente al paragrafo @ruser{Collision resolution}, dove
+tutorial abbiamo visto come aggiungere un'indicazione di tempo col comando
+@code{\tempo}, quindi aggiungere @qq{Moderato} è facile. Ma come facciamo
+ad accorpare le note appartenenti a voci diverse? Ancora una volta
+dobbiamo rivolgerci alla guida alla Notazione per un aiuto. Una ricerca
+del termine @qq{accorpare} (in inglese @emph{merge}) nell'indice della guida
+ci porta rapidamente al paragrafo @ruser{Collision resolution}, dove
troviamo i comandi per allineare le note con teste e punti diversi. Nel
nostro esempio abbiamo bisogno di accorpare entrambi i tipi di note per la
durata della sezione polifonica della terza battuta. Dunque, usando le
@c line-width ensures no break
@lilypond[quote,ragged-right,line-width=6\in]
-rhMusic = \relative c'' {
+rhMusic = \relative {
\new Voice {
- r2 c4.\( g8 |
+ r2 c''4.\( g8 |
\once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
- bes2.^\markup { \bold "Moderato" } r8
+ bes2.\tempo "Moderato" r8
\mergeDifferentlyHeadedOn
\mergeDifferentlyDottedOn
% Inizia la sezione polifonica a quattro voci
{ c,8 d fis bes a } % continuazione della voce principale
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
}
}
-lhMusic = \relative c' {
- r2 <c g ees>2( |
+lhMusic = \relative {
+ r2 <c' g ees>2( |
<d g, d>1)\arpeggio |
r2. d,,4 r4 r |
r4
@c line-width ensures no break
@lilypond[quote,verbatim,ragged-right,line-width=6\in]
-rhMusic = \relative c'' {
+rhMusic = \relative {
\new Voice {
- r2 c4.\( g8 |
+ r2 c''4.\( g8 |
\once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
- bes2.^\markup { \bold "Moderato" } r8
+ bes2.\tempo "Moderato" r8
\mergeDifferentlyHeadedOn
\mergeDifferentlyDottedOn
% Inizia la sezione polifonica a quattro voci
}
}
-lhMusic = \relative c' {
- r2 <c g ees>2( |
+lhMusic = \relative {
+ r2 <c' g ees>2( |
<d g, d>1)\arpeggio |
r2. d,,4 r4 r |
r4
@c line-width ensures no break
@lilypond[quote,verbatim,ragged-right,line-width=6\in]
-rhMusic = \relative c'' {
+rhMusic = \relative {
\new Voice {
- r2 c4.\( g8 |
+ r2 c''4.\( g8 |
\once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
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 {
}
}
-lhMusic = \relative c' {
- r2 <c g ees>2( |
+lhMusic = \relative {
+ r2 <c' g ees>2( |
<d g, d>1)\arpeggio |
r2. d,,4 r4 r |
r4
@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
* Simulare una corona nel MIDI::
@end menu
-
-@cindex proprietà transparent, uso della
-@cindex oggetti, renderli invisibili
-@cindex togliere gli oggetti
-@cindex oggetti, toglierli
-@cindex nascondere gli oggetti
-@cindex oggetti, nascondere
-@cindex oggetti invisibili
-@cindex legature di valore tra note di voci diverse
+@cindex rimuovere gli oggetti
+@cindex oggetti, rimuoverli
@node Legature di valore tra note di voci diverse
@unnumberedsubsubsec Legature di valore tra note di voci diverse
@translationof Tying notes across voices
+@cindex legature di valore tra note di voci diverse
+
L'esempio seguente mostra come unire con legature di valore
note appartenenti a voci diverse. Di norma, solo le note nella
stessa voce possono essere unite da una legatura di valore.
Se si usano due voci con le note legate in una voce
@lilypond[quote,fragment,relative=2]
-<< { b8~ b\noBeam } \\ { b8[ g] } >>
+<< { b8~ 8\noBeam } \\ { b8[ g] } >>
@end lilypond
@noindent
-e si cancella il primo gambo di quella voce, la legatura sembra
+e si toglie il primo gambo di quella voce e la sua coda, la legatura sembra
attraversare le voci:
-@cindex Stem, esempio di sovrascrittura
-@cindex proprietà transparent, esempio
-@cindex transparent, esempio
+@cindex Stem, esempio di rimozione
+@cindex Flag, esempio di rimozione
+@cindex @code{\omit}, esempio
@lilypond[quote,fragment,relative=2,verbatim]
<<
{
- \tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
- b8~ b\noBeam
+ \once \omit Stem
+ \once \omit Flag
+ b8~ 8\noBeam
}
\\
{ b8[ g] }
>>
@end lilypond
-Per far sì che il gambo cancellato non schiacci troppo la legatura,
-possiamo allungarlo impostando la proprietà
-@code{length} su @code{8},
-
-@lilypond[quote,fragment,relative=2,verbatim]
-<<
- {
- \tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
- \tweak Stem.length #8
- b8~ b\noBeam
- }
-\\
- { b8[ g] }
->>
-@end lilypond
-
-@funindex \single
-@cindex tweak, generated from override
-Per @emph{sovrascrivere} 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
+@seealso
+Manuale di apprendimento:
+@ref{The once prefix,,Il prefisso @code{@bs{}once}},
+@ref{The stencil property}.
-In questo caso particolare, la differenza rispetto a @code{\once \hide} non
-è evidente. La differenza è importante 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
la proprietà @code{stencil} piuttosto che la proprietà @code{transparent}
dell'oggetto se si desidera toglierlo dall'output. Se si imposta la
proprietà @code{stencil} su @code{#f} l'oggetto verrà completamente
-rimosso dall'output e quindi non potrà influenzare la disposizone
+rimosso dall'output e quindi non potrà influenzare la disposizione
di altri oggetti posizionati rispetto a esso.
Ad esempio, se volessimo modificare il segno di metronomo solo per
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
global = { \key c \major \time 4/4 \partial 4 }
-SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
-AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
-TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
-BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
+SopranoMusic = \relative { c'4 | e4. e8 g4 g | a4 a g }
+AltoMusic = \relative { c'4 | c4. c8 e4 e | f4 f e }
+TenorMusic = \relative { e4 | g4. g8 c4. b8 | a8 b c d e4 }
+BassMusic = \relative { c4 | c4. c8 c4 c | f8 g a b c4 }
VerseOne = \lyrics {
E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
@lilypond[quote,verbatim,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold 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" @} @}
- #@})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
+
inst =
#(define-music-function
@lilypond[quote,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
inst =
#(define-music-function
@example
%%% definitions.ily
mpdolce =
-#(make-dynamic-script
- #@{ \markup @{ \hspace #0
- \translate #'(5 . 0)
- \line @{ \dynamic "mp"
- \text \italic "dolce" @} @}
- #@})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
inst =
#(define-music-function
@lilypond[quote,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
inst =
#(define-music-function
@example
%%% web-publish.ily
mpdolce =
-#(make-dynamic-script
- #@{ \markup @{ \hspace #0
- \translate #'(5 . 0)
- \line @{ \dynamic "mp"
- \text \italic "dolce" @} @}
- #@})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
inst =
#(define-music-function
@lilypond[quote,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
inst =
#(define-music-function