Center text below hairpin dynamics: Difference between revisions
mNo edit summary |
mNo edit summary |
||
| Line 9: | Line 9: | ||
\once \override Voice.Hairpin.after-line-breaking = | \once \override Voice.Hairpin.after-line-breaking = | ||
#(lambda (grob) | #(lambda (grob) | ||
(let* ((stencil (ly:hairpin::print grob)) | |||
(par-y (ly:grob-parent grob Y)) | |||
(dir (ly:grob-property par-y 'direction)) | |||
(staff-line-thickness | |||
(ly:output-def-lookup (ly:grob-layout grob) 'line-thickness)) | (ly:output-def-lookup (ly:grob-layout grob) | ||
'line-thickness)) | |||
(new-stencil | |||
(ly:stencil-aligned-to | |||
(ly:stencil-combine-at-edge | |||
(ly:stencil-aligned-to stencil X CENTER) | (ly:stencil-aligned-to stencil X CENTER) | ||
Y dir | Y dir | ||
(ly:stencil-aligned-to | (ly:stencil-aligned-to | ||
(grob-interpret-markup | |||
grob | |||
(make-fontsize-markup | |||
(magnification->font-size | |||
(+ (ly:staff-symbol-staff-space grob) | |||
(/ staff-line-thickness 2))) | |||
text)) | |||
X CENTER)) | |||
X LEFT)) | |||
(staff-space (ly:output-def-lookup | |||
(ly:grob-layout grob) 'staff-space)) | (ly:grob-layout grob) 'staff-space)) | ||
(par-x (ly:grob-parent grob X)) | |||
(dyn-text (grob::has-interface par-x | |||
'dynamic-text-interface)) | |||
(dyn-text-stencil-x-length | |||
(if dyn-text | (if dyn-text | ||
(interval-length | |||
(ly:stencil-extent | |||
(ly:grob-property par-x 'stencil) X)) | |||
0)) | |||
(if dyn-text | (x-shift | ||
(if dyn-text (- (+ staff-space dyn-text-stencil-x-length) | |||
(* 0.5 staff-line-thickness)) | |||
0))) | |||
(ly:grob-set-property! grob 'Y-offset 0) | |||
(ly:grob-set-property! grob | |||
'stencil (ly:stencil-translate-axis | |||
new-stencil | |||
x-shift X)))) | |||
#}) | #}) | ||
hairpinMolto = | hairpinMolto = \hairpinWithCenteredText \markup { \italic molto } | ||
\hairpinWithCenteredText \markup { \italic molto } | hairpinMore = \hairpinWithCenteredText \markup { \larger moltissimo } | ||
hairpinMore = | |||
\hairpinWithCenteredText \markup { \larger moltissimo } | |||
\relative c' { | \relative c' { | ||
\hairpinMolto | \hairpinMolto c2\< c\f | ||
\hairpinMore c2\ppppp\< c\f | |||
\hairpinMore | |||
\break | \break | ||
\hairpinMolto | \hairpinMolto c2^\< c\f | ||
\hairpinMore c2\ppppp\< c\f | |||
\hairpinMore | |||
} | } | ||
</lilypond> | </lilypond> | ||