|
From: | Saul Tobin |
Subject: | Re: Change event properties before sending to engraver |
Date: | Mon, 20 Mar 2023 14:19:13 -0600 |
Hello,
this is a more technical question targeted to the more experienced members of
the list.
One thing that is stupidly hard to do in Lilypond is getting Slurs, Ties and
other spanners to work between different Voices. The general approach is to use
hidden notes, which is not at all nice to do or nice to read, and will require
many extra voices in more complicated cases.
So one approach I’ve been trying to attempt is to move the respectable
Engravers to a higher context (Staff or even higher) and then make use of
Spanner ids to get the default behaviour.
Basically each Voice context would be assigned a unique voice ID, and this ID
is by default used as spanner id. Then
<<
{ c8( d e d) } \\ { c( b) c( b) }
>>
would still work, as these are Slurs with different spanner ids, but we can
simply write
<<
{ c16\=1( d s8 } \\ { s c b\=1) }
>>
to get a Slur between these Voices.
Of course this would still require some additional handling, as this will add
unwanted support elements from other voices.
But the point here is that while the events have to eventually be handled on
the Staff level we kind of need to "prepare" them at the Voice level to have
the correct spanner id.
Thus I wanted to inquire if Lilypond has any mechanic that can be used for
something like this?
Alternatively one could use something like context properties to have
engravers communicate and send events and grobs to other engravers, but surey
that would be messy.
Cheers,
Valentin
[Prev in Thread] | Current Thread | [Next in Thread] |