Am Sonntag, 9. Januar 2011, um 00:44:57 schrieb David Kastrup: > Reinhold Kainhofer <[email protected]> writes: > > Actually, it's the other way round: the part-combiner has some code to > > prevent combining the voices if a manual beam, slur or tie (or even a > > hairpin) is active (and the ties/slurs of the two voices do not match > > exactly). > > So it should try keeping around uncombined voices in all cases, and have > a separate engraver running after the autobeaming that checks whether > the autobeamed version in the uncombined voices should take preference > over the combined version.
I think you are overestimating the complexity of how the part-combiner works. It basically consists of two things: -) A music function (i.e. evaluated during parsing!) that looks at the two music expressions, goes through the music moment-by-moment and tries to determine whether the notes can be combined or not (i.e. a split-list is created) -) The part-combine iterator: At each timestep the iterator looks at the split-list generated in the first step and simply redirects the first and second voices of the part-combined music to one of the voices named "one", "two", "shared", "solo", "null" (which is a Devnull context). I.e. the iterator does not create any combined chords or anything, it simply calls substitute_outlet on the input voices so that the events of the input voices are redirected to one of the five voices given above. All combining to chords etc. is not done manually, but automatically by the voice context, since two note events at the same moment simply mean a chord automatically. -) The part-combine engraver is not really involved in part-combining. All it does is generate those "a2", "Solo" or "Solo II" labels. So, in summary, the main part of part-combination is done in a music-function, which is evaluated during parsing (i.e. long before iterators or engravers do their job). Cheers, Reinhold -- ------------------------------------------------------------------ Reinhold Kainhofer, [email protected], http://reinhold.kainhofer.com/ * Financial & Actuarial Math., Vienna Univ. of Technology, Austria * http://www.fam.tuwien.ac.at/, DVR: 0005886 * LilyPond, Music typesetting, http://www.lilypond.org _______________________________________________ bug-lilypond mailing list [email protected] http://lists.gnu.org/mailman/listinfo/bug-lilypond
