Re: partCombine returns wrongly if \tags are used

2020-12-26 Thread Dan Eble
On Dec 26, 2020, at 13:29, Thomas Morley  wrote:
> 
> Hi,
> 
> the following code gives bad output.
> 
> %% Start
> \version "2.20.0"
> 
> one = { e''2 \tag #'score f'' \tag #'part fis'' g''1 }
> two = { e''2 d'' g'1 }
> 
> \removeWithTag #'score \partCombine \one \two
> %% end
> 
> it looks like tags are not
> respected for the length of `skip`, but both are counted, thus the
> length is off.

Harm,

I would call this a known issue, and there are other features that similarly 
interfere with \partCombine.  If it ever seemed to work in the past, it 
depended on the specifics of the music.

\partCombine is a two-pass feature.  In your example, the first pass does not 
know that you will be removing tagged music, so the information it records is 
inconsistent with the music when it comes time for the second pass.  If you 
want to use \partCombine with filtering, unfolded repeats, or other 
transformations, you must transform first so that the music is in its final 
form before the first pass, something like this:

\partCombine { \removeWithTag … \one } { \removeWithTag … \two }

Merry Christmas,
— 
Dan


___
bug-lilypond mailing list
bug-lilypond@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-lilypond


partCombine returns wrongly if \tags are used

2020-12-26 Thread Thomas Morley
Hi,

the following code gives bad output.

%% Start
\version "2.20.0"

one = { e''2 \tag #'score f'' \tag #'part fis'' g''1 }
two = { e''2 d'' g'1 }

\removeWithTag #'score \partCombine \one \two
%% end

Afaict, first bad commit is

commit 615571eda2393eba537c3ad0eb2d424f8dd218b0
Author: Dan Eble 
Date:   Wed May 27 21:23:45 2015 -0400

Issue 4423: eliminate part combiner's array of context handles (4/4)

The Part_combine_iterator no longer creates or keeps alive the Voice
contexts that it uses.  make-directed-part-combine-music does it.

When the Part_combine_iterator needs to redirect a child iterator, it
finds the new Voice by name among the siblings of the current Voice.

which is 2.19.21

Since then the code changed a lot.
As a guess, in `make-directed-part-combine-music` from
music-functions-init.ly of current master, it looks like tags are not
respected for the length of `skip`, but both are counted, thus the
length is off.

Cheers,
  Harm

___
bug-lilypond mailing list
bug-lilypond@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-lilypond