Originally created by: *anonymous
Originally created by: PhilEHol...@googlemail.com
Reported by Nels Daily and analysed by Reinhold:
A short analysis of the bug:
The disappearing notes start after a multi-measure rest, which did start
earlier than a multi-measure rest in the first voice. The part-combiner walks through the score as following:
1) In the first measure, only mI is playing, so it starts a solo (mII has a multi-measure rest) and uses only the music events from mI
2) In the second measure both voices have a multi-measure rest, the solo of mI has ended. As mII has a multi-measure rest already going on, the part-combiner needs to take the multi-measure rest from mI (the part-combiner is not able to split up a multi-measure rest!)
3) In the third measure, mII has a rest, so the first quarter is still detected as unisilence (thus the rest from mI is still used). Now, as there is already a whole measure rest going on, lilypond ignores the following notes.
Note that there are some other bugs in the part-combiner that can be seen with this example:
-) If one replaces the r4 with a b4 in measure 3, then the notes are displayed (marked as "Solo II", but the whole-measure rest from mI is displayed, too.
-) If one adds a measure "c1" to both voices, the "r4" in mI is wrongly
printed as a full-measure rest (rests in unisilence are taken from the second voice, unless voice one had a solo ending before the rest, like in the original example)
-) If one adds any note after the "R1*2" in mI, then the notes are correctly printed.
As Xavier already mentioned, there is a workaround to force the partcombiner to use a particular combining strategy. (Also note that the first quarter eight rest in the third measure of your original example is printed as if there were two voices present... Also in this case you need to tell the part-combiner that the rest should be a solo, too. Don't worry, the "Solo" text will still be printed on the first note, not on the rest).
:::TeX
\version "2.15.0"
mI = \relative c' {
r4 e e e |
R1*2
}
mII = \relative c' {
R1*2
%% These notes don't appear!!! %%
r4 b b b
}
\score{ <<
\partcombine \mI \mII
>>
}
Originally posted by: reinhold...@gmail.com
(No comment was entered for this change.)
Labels: partcombine
Originally posted by: nine.fie...@gmail.com
Still an issue in 2.19.19.
Originally posted by: simon.al...@mail.de
(No comment was entered for this change.)
Labels: -Priority-Medium
Diff:
Well, I thought I was on my way to fixing this with [#4600] plus another small change, but it is only sufficient to handle the case with multi-measure rests identified above. It does not help cases in which the solo begins while the two parts have out-of-sync sub-measure rests. See my expanded example below.
Rather than solve half the problem, I'm going to give up on this for now. Possibly the solo detection needs some look-ahead (or -behind) so that if a solo passage is preceded by out-of-sync silence, the part routing for the solo passage takes effect at the start of the out-of-sync silence rather than on the first note of the solo.
Related
Issues: #4600
Last edit: Dan Eble 2015-09-17
Diff: