This example provides a function to typeset a hairpin (de)crescendo
with some additional text below it, such as @qq{molto} or @qq{poco}.
The added text will change the direction according to the direction of
-the hairpin. The Hairpin is aligned to DynamicText. The example also
-illustrates how to modify the way an object is normally printed, using
-some Scheme code.
+the hairpin. The Hairpin is aligned to DynamicText.
+
+The example also illustrates how to modify the way an object is
+normally printed, using some Scheme code.
"
doctitle = "Center text below hairpin dynamics"
(par-y (ly:grob-parent grob Y))
(dir (ly:grob-property par-y 'direction))
(new-stencil (ly:stencil-aligned-to
- (ly:stencil-combine-at-edge
- (ly:stencil-aligned-to stencil X CENTER)
- Y dir
- (ly:stencil-aligned-to (grob-interpret-markup grob text) X CENTER))
- X LEFT))
+ (ly:stencil-combine-at-edge
+ (ly:stencil-aligned-to stencil X CENTER)
+ Y dir
+ (ly:stencil-aligned-to (grob-interpret-markup grob text) X CENTER))
+ X LEFT))
(staff-space (ly:output-def-lookup (ly:grob-layout grob) 'staff-space))
- (staff-line-thickness (ly:output-def-lookup (ly:grob-layout grob) 'line-thickness))
+ (staff-line-thickness
+ (ly:output-def-lookup (ly:grob-layout grob) 'line-thickness))
(grob-name (lambda (x) (assq-ref (ly:grob-property x 'meta) 'name)))
(par-x (ly:grob-parent grob X))
(dyn-text (eq? (grob-name par-x) 'DynamicText ))
- (dyn-text-stencil-x-length (if dyn-text
- (interval-length (ly:stencil-extent (ly:grob-property par-x 'stencil) X))
- 0))
- (x-shift (if dyn-text (- (+ staff-space dyn-text-stencil-x-length) (* 0.5 staff-line-thickness)) 0)))
+ (dyn-text-stencil-x-length
+ (if dyn-text
+ (interval-length
+ (ly:stencil-extent (ly:grob-property par-x 'stencil) X))
+ 0))
+ (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
texidoc = "
In orchestral scores sometimes single or groups of instruments are
silent for a while and their staves can be removed for that time (with
-@code{\\removeEmptStaves}).
+@code{\\removeEmptyStaves}).
When they play again it is often preferred to show the staves of all
\score {
<<
- \new StaffGroup = "StaffGroup_woodwinds" <<
+ \new StaffGroup = "StaffGroup_woodwinds"
+ <<
\new Staff = "Staff_flute" \with {
instrumentName = "Flute"
shortInstrumentName = "Fl"}
- \relative { \repeat unfold 3 { c'4 c c c | c c c c | c c c c | \break } }
+ \relative { \repeat unfold 3 { c'4 c c c | c c c c | c c c c | \break }
+ }
>>
- \new StaffGroup = "StaffGroup_Strings" <<
- \new GrandStaff = "GrandStaff_violins" <<
+ \new StaffGroup = "StaffGroup_Strings"
+ <<
+ \new GrandStaff = "GrandStaff_violins"
+ <<
\new Staff = "StaffViolinI" \with {
instrumentName = "Violin I"
- shortInstrumentName = "Vi I"}
- \relative c'' { a1 \repeat unfold 7 { s1 } \repeat unfold 12 a16 a4}
+ shortInstrumentName = "Vi I"
+ }
+ \relative c'' {
+ a1 \repeat unfold 7 { s1 } \repeat unfold 12 a16 a4
+ }
\new Staff = "StaffViolinII" \with {
instrumentName = "Violin II"
- shortInstrumentName = "Vi II"}
- \relative { e1 \repeat unfold 8 { s1 } }
+ shortInstrumentName = "Vi II"
+ }
+ \relative { e1 \repeat unfold 8 { s1 } }
>>
\new Staff = "Staff_cello" \with {
instrumentName = "Cello"
- shortInstrumentName = "Ce"}
- \relative c { \clef bass \repeat unfold 9 { c1 }}
+ shortInstrumentName = "Ce"
+ }
+ \relative c { \clef bass \repeat unfold 9 { c1 }}
>>
>>
}