[ << Expressive marks ] | [Top][Contents] | [ Repeats >> ] |
[ < Ocultar la línia d’extensió de les expressions textuals de dinàmica ] | [ Up : Expressive marks ] | [ Inserir una cesura > ] |
Alinear horitzontalment indicacions dinàmiques personalitzades (per exemple "sempre pp""piu f""subito p")
Algunes expressions de matís dinàmic porten text addicional, com "sempre pp". Considerant que els matisos solen anar centrats sota la nota, el \p s’imprimiria molt després de la nota a la qual s’aplica el matís.
Per alinear correctament el "sempre pp" en sentit horitzontal, de manera que s’alineï com si estigués solament el \pp, hi h a diversos enfocaments:
* Senzillament usar \once\override DynamicText.X-offset =
#-9.2
abans de la nota que porta el matís, per desplaçar-lo
manualment a la posició correcta. Inconvenient: cal fer-ho
manualment cada cop que usem aquesta indicació dinàmica.
* Afegir una mica de farciment (#:hspace 7.1
) dins de la
definició de la nostra indicació dinàmica personalitzada, de forma
que després que el LilyPond l’hagi centrat, ja estigui alineada
correctament. Inconvenient: el farciment realment ocupa aquest
espai i no permet que es gravi cap altre element de marcatge o
matís dinàmic en aquesta posició.
* Desplaçar la inscripció dinàmica \once\override ... .X-offset = ..
.
Inconvenient: ¡cal \once\override
per a cada una de les invocacions!
* Fixar les dimensions del text addicional a zero (usant
#:with-dimensions '(0 . 0) '(0 . 0)
). Inconvenient: per al
LilyPond "sempre" no té dimensions, per la qual cosa podria
gravar altres elements en el seu mateix lloc i produir col·lisions
(que no serien advertides pel mecanisme de detecció de
col·lisions). Així mateix, aparentment hi ha algun espai, i per
tant no és exactament la mateixa alineació que sense el text addicional.
* Afegir un desplaçament explicit directament dins de la funció de l’Scheme que produeix l’element dynamic-script.
* Fixar una alineació explícita dins del dynamic-script. De forma
predeterminada, això no tindria cap efecte, a no ser que fixéssim
un valor per a X-offset. Inconvenient: hem de donar un valor a
DynamicText.X-offset
que s’aplicaria a tots els textos de
dinàmica. A més a més, s’alinea amb l’extrem dret del text
addicional, no amb el centre del pp.
\paper { ragged-right = ##f indent = 2.5\cm tagline = ##f } % Solution 1: Using a simple markup with a particular halign value % Drawback: It's a markup, not a dynamic command, so \dynamicDown % etc. will have no effect semppMarkup = \markup { \halign #1.4 \italic "sempre" \dynamic "pp" } % Solution 2: Using a dynamic script & shifting with % \once \override ...X-offset = .. % Drawback: \once \override needed for every invocation semppK = #(make-dynamic-script (markup #:line (#:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 3: Padding the dynamic script so the center-alignment % puts it at the correct position % Drawback: the padding really reserves the space, nothing else can be there semppT = #(make-dynamic-script (markup #:line (#:normal-text #:italic "sempre" #:dynamic "pp" #:hspace 7.1))) % Solution 4: Dynamic, setting the dimensions of the additional text to 0 % Drawback: To lilypond "sempre" has no extent, so it might put % other stuff there => collisions % Drawback: Also, there seems to be some spacing, so it's not exactly the % same alignment as without the additional text semppM = #(make-dynamic-script (markup #:line (#:with-dimensions '(0 . 0) '(0 . 0) #:right-align #:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 5: Dynamic with explicit shifting inside the scheme function semppG = #(make-dynamic-script (markup #:hspace 0 #:translate '(-18.85 . 0) #:line (#:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 6: Dynamic with explicit alignment. This has only effect % if one sets X-offset! % Drawback: One needs to set DynamicText.X-offset! % Drawback: Aligned at the right edge of the additional text, % not at the center of pp semppMII = #(make-dynamic-script (markup #:line (#:right-align #:normal-text #:italic "sempre" #:dynamic "pp"))) \new StaffGroup << \new Staff = "s" \with { instrumentName = \markup \column { Normal } } << \relative c'' { \key es \major c4\pp c\p c c | c\ff c c\pp c } >> \new Staff = "sMarkup" \with { instrumentName = \markup \column { Normal markup } } << \relative c'' { \key es \major c4-\semppMarkup c\p c c | c\ff c c-\semppMarkup c } >> \new Staff = "sK" \with { instrumentName = \markup \column { Explicit shifting } } << \relative c'' { \key es \major \once \override DynamicText.X-offset = #-9.2 c4\semppK c\p c c c4\ff c \once \override DynamicText.X-offset = #-9.2 c4\semppK c } >> \new Staff = "sT" \with { instrumentName = \markup \column { Right padding } } << \relative c'' { \key es \major c4\semppT c\p c c | c\ff c c\semppT c } >> \new Staff = "sM" \with { instrumentName = \markup \column { Set dimension "to zero" } } << \relative c'' { \key es \major c4\semppM c\p c c | c\ff c c\semppM c } >> \new Staff = "sG" \with { instrumentName = \markup \column { Shift inside dynamics} } << \relative c'' { \key es \major c4\semppG c\p c c | c\ff c c\semppG c } >> \new Staff = "sMII" \with { instrumentName = \markup \column { Alignment inside dynamics } } << \relative c'' { \key es \major % Setting to ##f (false) gives the same result \override DynamicText.X-offset = #0 c4\semppMII c\p c c | c\ff c c\semppMII c } >> >> \layout { \override Staff.InstrumentName.self-alignment-X = #LEFT }
[ << Expressive marks ] | [Top][Contents] | [ Repeats >> ] |
[ < Ocultar la línia d’extensió de les expressions textuals de dinàmica ] | [ Up : Expressive marks ] | [ Inserir una cesura > ] |