lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Fix for /Documentation/snippets/text#text-center-text-below-hairpin-


From: Thomas Morley
Subject: Re: Fix for /Documentation/snippets/text#text-center-text-below-hairpin-dynamics
Date: Mon, 17 Sep 2012 01:38:48 +0200

2012/9/12 Thomas Morley <address@hidden>:
> 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

I take no reaction for no objection.
http://lsr.dsi.unimi.it/LSR/Item?id=233
changed according to my proposal above.

-Harm



reply via email to

[Prev in Thread] Current Thread [Next in Thread]