Han-Wen wrote:
"Your other favorite gripe (property inheritance) was also fixed."

I'm certain that inheritance is the best way to handle properties -
thanks, Han-Wen.

May I suggest a related matter - if you will, "property ups and
downs"?

Context ranges are defined by various sorts of brackets depending on
the context level, but the most consistent context delimiter is curly
brackets {}. However, at present, the following

property 1 {
   {property 2 ...}
   { section 3 }
}

results in property 2 being applied to section 3 in many (perhaps
all?) cases. Specifically, this happens for note head shapes and note
head sizes, whether property 1 is specified explicitly or is the
default. Structured object property inheritance would be that
property 1 would apply to section 3, not property 2. In short,
properties should be inherited by children, but not reach back and
change parents, or 'sneak' sideways and change siblings.

I realize all to well from experience that this is unlikely to be a
simple change to the code! But, as a long term goal, I submit that it
would serve Lily well, by improving her logical clarity and
precision.

A while ago, to deal with this problem, Han-Wen suggested:

   \context ThreadedVoice <
    \context Thread = TA
      { \property Thread.noteHeadStyle = "cross"
        \property ThreadedVoice.ydirection = \up c16}
    \context Thread = TB
      { \property Thread.noteHeadStyle = "" a16  }
    \context Thread = TC
      { \property Thread.noteHeadStyle = "harmonic" d16 }
  >
}

    \paper {
        \translator {
          \VoiceContext
            \remove Note_heads_engraver;
              \accepts Thread;
                \name ThreadedVoice;
                }
                \translator {
                  \StaffContext
                    \accepts ThreadedVoice;
                    }
                    \translator {
                      \type Engraver_group_engraver;
                        \consists Note_heads_engraver;
                          \name Thread;
                          }
    }
}

Quite apart from the thought of publishing that in each and every one
of 555 Scarlatti files, I haven't been able to get it to work with
note head sizes on Lily 1.1.26 (the RPM I have - the siblings are still
changed). With a clean inheritance structure, none of it would be needed.

John

Reply via email to