Janek Warchoł <janek.lilyp...@gmail.com> writes: > 2012/2/7 David Kastrup <d...@gnu.org>: > >> As long as this is just user generated content, there is not much >> more to do rather than let the event chord iterator replay >> articulations after elements. > > I don't understand. Do you mean that if an articulation is applied to > EventChord, it would be automatically applied to EventChord's elements > ("moved to elements level")? Or that articulations applied to whole > EventChord will be applied on top of articulations applied to > elements? (If i screwed this completely, you don't have to waste a > lot of time explaining)
LilyPond's typesetting does not act on music expressions and music events. It acts exclusively on stream events. It is the act of iterators to convert a music expression into a sequence of stream events played in time order. The EventChord iterator is pretty simple: it just takes its "elements" field when its time comes up, turns every member into a StreamEvent and plays that through the typesetting process. The parser currently appends all postevents belonging to a chord at the end of "elements", and thus they get played at the same point of time as the elements of the chord. Due to this design, you can add per-chord articulations or postevents or even assemble chords with a common stem by using parallel music providing additional notes/events: the typesetter does not see a chord structure or postevents belonging to a chord, it just sees a number of events occuring at the same point of time in a Voice context. So all one needs to do is let the EventChord iterator play articulations after elements, and then adding to articulations in EventChord is equivalent to adding them to elements (except in cases where the order of events matters). Feel free to add this information into CG when you find a nice place... -- David Kastrup _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel