Subject: partCombine et tag avec 2.23.5

From: "F. Moinard" <[email-masked]>
Date: Wed, 8 Dec 2021 21:53:13 +0400

Bonjour,

Je cherche à obtenir des éditions de parties assemblées avec 
\partCombine ou séparées. Je cite des indications d'autres instruments 
avec \new CueVoice, et \partCombine n'aime pas. Je tente d'utiliser des 
tags pour utiliser des versions différents -avec ou sans CueVoice-, et 
cela échoue :

\version "2.23.5"

%% Ajout pour 2.23.4 proposé par Jean :
#(define-tag-group '($autoChange))
#(define-tag-group '($partCombine))

one = \relative c'' {
   c
   <<
     { s4 s s }
     \new CueVoice { d d d }
   c c c c
}

two = \relative c'' {
   a
   \tag #'partieSeule {  %% à utiliser pour produire la partie séparée
     <<
       { s4*3 }
       \new CueVoice { d4 d d }
   }
   \tag #'partiesCombine { s4*3 } %% pour la partie pupitre ou conducteur
   a4 a a a
}

\score {
   \header { piece = "une Voice (résultat recherché)" }
   \keepWithTag #'partiesCombine
   \new Voice << \one  \two  >>
}

\score {
   \header { piece = "partCombine (résultat obtenu)" }
   \keepWithTag #'partiesCombine
   \new Staff \partCombine \one \two
}

J'ai simplifié à partir d'une erreur rencontrée dans une pièce plus 
longue, et l'erreur est différente : lilypond échoue à compiler avec 
comme dernier message :

Dessin des systèmes...malloc(): invalid next size (unsorted)
Arrêté avec le code de retour 6.

Je peux poster le fichier d'origine. Une idée ?

Cordialement, Frédéric

---

From: Jean Abou Samra <[email-masked]>
Date: Wed, 8 Dec 2021 19:18:42 +0100

Bonjour,

Le 08/12/2021 à 18:53, F. Moinard a écrit :
> avec \new CueVoice, et \partCombine n'aime pas. Je tente d'utiliser 
> des tags pour utiliser des versions différents -avec ou sans 
> CueVoice-, et cela échoue :
>
> \version "2.23.5"
>

Notez que cet ajout ne devrait plus être nécessaire
en 2.23.5 car la correction a été intégrée.

> [...]

C'est effectivement une limitation de la
manière dont \partCombine fonctionne, qui
fait l'objet de
https://gitlab.com/lilypond/lilypond/-/issues/6078

Le problème est que \partCombine, quand elle
reçoit ses arguments, commence par les interpréter
totalement pour calculer les moments où
les voix sont séparées ou ensemble. Il se
passe donc certaines étapes à l'intérieur de

   \partCombine \one \two

alors que \keepWithTag n'a pas fait son effet, si
bien que toute la musique est encore présente, même
affectée par \tag. Pour y rémédier, on peut appliquer
le \keepWithTag à chacun des deux arguments de
\partCombine, comme ceci :

   \new Staff \partCombine
     \keepWithTag partiesCombine \one
     \keepWithTag partiesCombine \two

> Je peux poster le fichier d'origine.
>

Ça, c'est plutôt inquiétant. Oui, ce serait
gentil de poster le fichier. Merci d'avance.

Cordialement,
Jean