[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Fix for /Documentation/snippets/text#text-center-text-below-hairpin-dyna
From: |
Thomas Morley |
Subject: |
Fix for /Documentation/snippets/text#text-center-text-below-hairpin-dynamics |
Date: |
Wed, 12 Sep 2012 14:20:07 +0200 |
Hi,
please have a look at the fix for
http://lilypond.org/doc/v2.16/Documentation/snippets/text#text-center-text-below-hairpin-dynamics
imported from LSR:
http://lsr.dsi.unimi.it/LSR/Item?id=233
making possible to add DynamicText to the NoteColumn where the Hairpin starts.
Additionally I added two features:
The Hairpin is now aligned to the DynamicText and the additional text
switches the direction, if the Hairpin does it, too.
If you think ist's ok, I'll change the LSR-snippet, downgrading it to
2.14.2. (simply adding a single $-sign)
Because there is nothing wrong with lilypond, only the snippet should
be improved, Phil adviced me to post the fix here, offering a minimal
review possibility.
If someone objects to such a minimal treatment, I'll take the Rietveld-route.
The code, (added as attachment, too)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.16.0"
hairpinWithCenteredText =
#(define-music-function (parser location text) (markup?)
#{
\once \override Voice.Hairpin #'after-line-breaking =
#(lambda (grob)
(let* ((stencil (ly:hairpin::print grob))
(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))
(staff-space (ly:staff-symbol-staff-space grob))
(staff-line-thickness (ly:staff-symbol-line-thickness grob))
(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)))
(ly:grob-set-property! grob 'Y-offset 0)
(ly:grob-set-property! grob 'stencil
(ly:stencil-translate-axis
new-stencil
x-shift X))))
#})
hairpinMolto =
\hairpinWithCenteredText \markup { \italic molto }
hairpinMore =
\hairpinWithCenteredText \markup { \larger moltissimo }
\layout { ragged-right = ##f }
\relative c' {
\hairpinMolto
c2\< c\f
\hairpinMore
c2\ppppp\< c\f
\break
\hairpinMolto
c2^\< c\f
\hairpinMore
c2\ppppp^\< c\f
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Harm
center-text-below-hairpin-dynamics-rev.ly
Description: Binary data
- Fix for /Documentation/snippets/text#text-center-text-below-hairpin-dynamics,
Thomas Morley <=