Currently, \melisma and \melismaEnd are defined (in ly/declarations-init.ly
) as:
:::Scheme
melisma = #(context-spec-music (make-property-set 'melismaBusy #t) 'Bottom)
melismaEnd = #(context-spec-music (make-property-unset 'melismaBusy) 'Bottom)
whereas slurs, ligatures and beams use events and the respective melismaBusyProperties
are set ‘behind the scenes’. The difference is that \melisma[End] are thus executed at the next timestep, while the events belonging to other melisma-related objects happen at the timestep of the note to which they are attached.
The inconsistency alone would not matter, but it does provide an ‘unnecessary’ difficulty: one must remember to always have \melisma last, i.e. after all post-events. This is more difficult with e.g.
"(" = \melisma
")" = \melismaEnd
applied, which is an important feature in producing different editions (following different conventions of notating melismata) from the same source. For example, { c8([ d)] }
is valid and common coding AFAICS, but with the above redefinition it doesn’t work (Error: unexpected post-event).
Diff:
I cancelled the second topic from this issue, because 1) I underestimated (of course, sorry) the complications which arise and 2) it’s another issue.
And I raised https://sourceforge.net/p/forge/site-support/11453/ on behalf of the mess in the diff above (first comment).