bug-lilypond
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Oodles of bugs


From: Reinhold Kainhofer
Subject: Re: Oodles of bugs
Date: Sun, 9 Jan 2011 21:27:58 +0100
User-agent: KMail/1.13.5 (Linux/2.6.35-24-generic; KDE/4.5.4; i686; ; )

Am Sonntag, 9. Januar 2011, um 00:44:57 schrieb David Kastrup:
> Reinhold Kainhofer <address@hidden> 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, address@hidden, 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]