Skip to content

Improve and fix interface for the Melody_engraver

Jean Abou Samra requested to merge jeanas/lilypond:dev/jas/melody-stem into master

The previous workflow of the Melody_engraver was to decide wether to act on stem directions depending on the value of their neutral-direction property. It would only add the Stem to a MelodyItem when neutral-direction was not a valid direction. This could be used to signal a particular passage where the direction of staff-centered stems was not to be adapted to the melody.

This had two downsides. For one thing, the interface was not very user-friendly, because \override Stem.neutral-direction = #'() was strictly required for the Melody_engraver to be of any usefulness. With this change, a mere \consists Melody_engraver does the right thing.

For another, the Melody_engraver does not act on every stem. An example is the (invisible, but significant) stem on every rest. This means there is no proper way to set the neutral-direction for these. It can also cause some crashes at present (see #6093 (closed)).

A new context property called suspendMelodyDecisions is introduced. That is used instead of the validity of Stem.neutral-direction to determine wether to act on a stem.

This lets us stop instructing to do

  \override Stem.neutral-direction = #'()

Merge request reports