Greetings,

First, thank you for all your work on LilyPond, and I hope this is the right 
place for messages like this.

I’m interested in writing a Scheme engraver to create playing technique 
transition lines, like what’s shown at

https://steinberg.help/dorico/v4/en/dorico/topics/notation_reference/notation_reference_playing_techniques/notation_reference_playing_techniques_continuation_lines_c.html

My goal is to be able to create what’s shown with the dashed lines (although I 
personally wouldn’t use dashed lines):

lbp → nbp → hbp → lbp

In case it’s helpful, I previously posted about this at

https://lists.gnu.org/archive/html/lilypond-user/2023-06/msg00152.html

My understanding is that using TextSpanner is the usual way of doing this, and 
Mark Knoop generously shared a solution that uses TextSpanner 
(https://lists.gnu.org/archive/html/lilypond-user/2023-06/msg00154.html). The 
limitation of using TextSpanner that I haven’t been able to circumvent is that 
adjacent TextSpanner objects stack on top of each other. This means that I 
can’t quite get

→ s.p. → ord.

above a staff. Instead, the “→ ord.” appears above the “→ s.p.”. I’ve attached 
a PDF showing this, and the code I used with Mark Knoop’s solution is included 
in a postscript.

I believe that the “right” way to do this is with a Scheme engraver that 
behaves like a combination of Dynamic_engraver and Dynamic_align_engraver 
(which are both implemented in C++). The problem is that, while I have a fair 
amount of development experience (https://github.com/nwhetsell) and have 
written a custom engraver 
(https://github.com/nwhetsell/lilypond-bending-additions), I’m pretty sure that 
an engraver for playing technique transitions is going to be a lot more complex 
than anything I’ve done in LilyPond (I’m nearly certain it will require a new 
event class 
<https://extending-lilypond.gitlab.io/en/extending/properties-types.html#new-event-class>,
 for example).

If anyone is willing to point me in the right direction on how to do this and 
answer occasional (and inevitable) questions about implementation, I would be 
very grateful!

Thanks,
Nate

PS — Here’s the code used to create the attached PDF:

\version "2.25.5"
\include "transitionSpanner.ily"
\paper {
  page-breaking = #ly:one-line-auto-height-breaking
  top-margin = 0
  left-margin = 0
  right-margin = 0
  oddFooterMarkup= ##f
}
{
  \once \transitionSpanner "" "s.p."
  1\startTextSpan
  \once \transitionSpanner "" "ord."
  1\stopTextSpan \startTextSpan
  1\stopTextSpan
}

Reply via email to