[Top][All Lists]

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

Re: Issue 1630 in lilypond: Completion heads engraver produces duplicate

From: lilypond
Subject: Re: Issue 1630 in lilypond: Completion heads engraver produces duplicate ties
Date: Fri, 29 Apr 2011 13:27:10 +0000

Comment #2 on issue 1630 by karin.hoethker: Completion heads engraver produces duplicate ties

Here is a patch that fixes the bug (see attachment).

The problem was that the Completion_heads_engraver splits notes which are then passed to the Tie_engraver. The Tie_engraver doesn't know about splitting and therefore tries to apply the manual tie ~ too early. The bugfix for 498 apparently solved this by adding the missing ties in the Completion_heads_engraver. For one voice the double ties are not visible, but for chords they are (as the example above shows).

The idea of the patch is to save the information that a note end was created by an automatic split in the note representation and only process ties in the Tie_engraver when not at an automatic split position. The Completion_heads_engraver takes care of automatically generated ties itself. This seems to work, but I would be curious if a lilypond expert can come up with a solution that doesn't involve an extra parameter. I searched for a way to determine from existing information in the Tie_engraver whether the current event end had been generated by an automatic split or by user input, but I couldn't find any.

The patch files were created for lilypond version 2.13.60.
The attached lilypond file test.ly contains various examples involving ties, and pdfs created for version version 2.13.60 before and after the patch. The pdf for version 2.12.3 shows that the triplet example broken in 2.13.60 used to work in 2.12.3 (but that is another bug). The patch also fixes the problem that ties could not be used between chords (as in <f' a'
4 ~ <f' a' >4), but only within chords (as in <c'~ e'~ >4 <c' e' >4).

        patch_and_tests_bug1630.zip  101 KB

reply via email to

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