A correction to the code - the hairpin was not starting at the correct
place after a dynamic, but was starting at zero offset. Here's the fix:

      (cons 0 (interval-start Y-ext)))))
->
      (cons (interval-start X-ext) (interval-start Y-ext)))))

Andrew

== snip

% Open hairpin.
% By Nathan Ho and David Nalesnik.
#(define ((open-hairpin left-open right-open) grob)
   (let* ((stencil (ly:hairpin::print grob))
          (X-ext (ly:stencil-extent stencil X))
          (Y-ext (ly:stencil-extent stencil Y))
          (width (interval-length X-ext))
          (height (interval-length Y-ext)))
     (ly:stencil-translate
      (ly:stencil-add
       (ly:line-interface::line
        grob
        0 (* height (- 0.5 (* 0.5 left-open)))
        width (* height (- 0.5 (* 0.5 right-open))))
       (ly:line-interface::line
        grob
        0 (* height (+ 0.5 (* 0.5 left-open)))
        width (* height (+ 0.5 (* 0.5 right-open)))))
      (cons (interval-start X-ext) (interval-start Y-ext)))))

== snip



On 23 April 2017 at 22:31, David Nalesnik <david.nales...@gmail.com> wrote:

> On Sun, Apr 23, 2017 at 5:34 AM, Andrew Bernard
> <andrew.bern...@gmail.com> wrote:
> > Hi David and Nathan,
> >
> > Apologies for a tardy response.
> >
> > Sincere thanks to both of you for your work on this. It's really useful
> to
> > me. I prefer using the ly:line-interface::line version because of the
> way it
> > inherits the grob properties.
> >
> > David, you naturally asked for the use cases I have for this, because it
> is
> > very non-standard, for sure. There are several situations where this
> comes
> > up in the scores I set. One common case is where the composer indicates a
> > very long cresc. or decresc. between levels with open hairpins near an
> > absolute mark such as ff, rather than cluttering page after page with
> > immensely long hairpins. The attached snippet of an image gives some
> idea of
> > this.
>
> Thanks -- makes a lot more sense to me now.
>
> >
> > Once more, sincere thanks and appreciation.
> >
> > Next thing to do is to achieve the half dashed/half solid appearance - or
> > can this be done already, in the same way that slurs can?
> >
>
> Not currently.  I suppose the best way would be to allow for
> dash-definition in lily/line-interface.cc, so it could be read from
> the grob.  But you could go the replacement stencil route.  I'm
> guessing that you could make good use of Harm's code above as a
> framework.
>
> No time right now, but I should post my Scheme version of
> ly:hairpin::print, so you can meddle directly with hairpins without
> building a stencil solely for dimension info, then throwing it away.
>
> -David
>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to