Subject: [LilyPond] liaison de prolongation : Est-ce un bug ?

From: Sébastien MANEN via LilyPond <[email-masked]>
Date: Sun, 09 Mar 2025 10:50:34 +0000

Bonjour,

Je ne sais pas si c'est un bug mais l'apparence de la liaison de prolongation sur la voix supérieure change d'aspect en fonction de la voix du bas. Je ne comprends pas pourquoi : 
![image|365x88](upload://ks3nOKEl0RwyzDJOu0ZzWhHUTLu.png)

```
\version "2.25.21"

voixA = \relative c {
	f''2.~ f4
	f2.~ f4
	f2.~ f4
	f2.~ f4
	f2.~ f4
}
voixB = \relative c {
	e''2.~ e4
	d2.~ d4
	c2.~ c4
	b2.~ b4
	a2.~ a4
}

voixC = \relative c {
	<e'' f>2.~ q4
	<d f>2.~ q4
	<c f>2.~ q4
	<b f'>2.~ q4
	<a f'>2.~ q4
}
\score {
	\partCombine  \voixA \voixB
}

\score {
	\voixC
}
```
Merci pour votre aide.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/liaison-de-prolongation-est-ce-un-bug/5870/1).

Pour créer un nouveau sujet, écrivez à [[email-masked]](mailto:[email-masked]) ou visitez la [page d'accueil de lilypond.community](https://lilypond.community).

---

From: Gilles via LilyPond <[email-masked]>
Date: Sun, 09 Mar 2025 11:25:44 +0000

[quote="Seb79, post:1, topic:5870"]
```
voixA = \relative c {
	f''2.~ f4
	f2.~ f4
	f2.~ f4
	f2.~ f4
	f2.~ f4
}
voixB = \relative c {
	e''2.~ e4
	d2.~ d4
	c2.~ c4
	b2.~ b4
	a2.~ a4
}

voixC = \relative c {
	<e'' f>2.~ q4
	<d f>2.~ q4
	<c f>2.~ q4
	<b f'>2.~ q4
	<a f'>2.~ q4
}
\score {

\score {
	\voixC
}
```
[/quote]

Bonjour ! Si c'est un bug, il date depuis longtemps, car on obtient le même résultat avec les versions 2.18 2.20 2.22 et 2.24...

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/liaison-de-prolongation-est-ce-un-bug/5870/2).

---

From: Sébastien MANEN via LilyPond <[email-masked]>
Date: Mon, 10 Mar 2025 18:32:14 +0000

D'après ce que j'ai vu dans les bugs ouverts, ça semble être évoqué dans la réponse que fait Jean dans ce bug :

https://gitlab.com/lilypond/lilypond/-/issues/6495

> Citation A more immediate problem is that slurs were being pushed away further than necessary when starting or ending on dotted notes, because Slur_configuration::score_extra_encompass in slur-configuration.cc has a special path for grobs that overlap with the note heads, and this path was being triggered for dots, while they are in fact not overlapping horizontally with the heads.  This code path would cause the slur to push itself away enough to start/end at a higher point than the top of the dot.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/liaison-de-prolongation-est-ce-un-bug/5870/3).

---

From: Michel Guénard via LilyPond <[email-masked]>
Date: Thu, 20 Mar 2025 14:35:28 +0000

[quote="Seb79, post:1, topic:5870, full:true"]
Bonjour,

Je ne sais pas si c'est un bug mais l'apparence de la liaison de prolongation sur la voix supérieure change d'aspect en fonction de la voix du bas. Je ne comprends pas pourquoi :
![image|365x88](upload://ks3nOKEl0RwyzDJOu0ZzWhHUTLu)

```
\version "2.25.21"

voixA = \relative c {
	f''2.~ f4
	f2.~ f4
	f2.~ f4
	f2.~ f4
	f2.~ f4
}
voixB = \relative c {
	e''2.~ e4
	d2.~ d4
	c2.~ c4
	b2.~ b4
	a2.~ a4
}

voixC = \relative c {
	<e'' f>2.~ q4
	<d f>2.~ q4
	<c f>2.~ q4
	<b f'>2.~ q4
	<a f'>2.~ q4
}
\score {

\score {
	\voixC
}
```

Merci pour votre aide.
[/quote]

Réponse directe

* Ajoutez \override Tie.Y-offset = #0.5 au début de voixA pour ajuster la position des liaisons et maintenir une apparence cohérente.

Contexte

Il semble que l'apparence des liaisons dans la voix supérieure change en fonction de la voix inférieure lorsque vous utilisez \partCombine dans LilyPond. Cela est probablement dû à des ajustements automatiques pour éviter les collisions entre les notes des deux voix, surtout quand elles sont proches, comme lorsque voixB est à e'' près de f'' dans voixA.

Solution proposée

Pour résoudre ce problème, modifiez voixA en ajoutant \override Tie.Y-offset = #0.5 au début. Cela déplacera légèrement les liaisons vers le haut (0,5 espace de portée), réduisant ainsi les interférences visuelles avec les notes de voixB. Vous pouvez ajuster cette valeur (par exemple, #1 ou #0,3) si nécessaire pour obtenir le résultat souhaité.

Détail inattendu

Une découverte intéressante est que, même si les voix sont toujours séparées dans votre cas (car elles ont des hauteurs différentes), LilyPond peut ajuster les liaisons pour éviter les collisions, ce qui affecte leur apparence, surtout quand les notes sont proches, comme e'' et f''.

---

Note détaillée

Cette note explore en détail le problème de l'apparence changeante des liaisons de prolongation dans la voix supérieure lorsqu'on utilise \partCombine dans LilyPond, en s'appuyant sur une analyse approfondie du code fourni et de la documentation pertinente. Elle vise à fournir une solution complète et à expliquer les raisons sous-jacentes, en imitant le style d'un article professionnel.

Contexte et Analyse du Code

L'utilisateur utilise LilyPond pour combiner deux voix, voixA et voixB, en utilisant \partCombine, et remarque que l'apparence des liaisons dans voixA change en fonction des notes de voixB. Le code fourni inclut :

lilypond

```
voixA = \relative c {
  f''2.~ f4
  f2.~ f4
  f2.~ f4
  f2.~ f4
  f2.~ f4
}
voixB = \relative c {
  e''2.~ e4
  d2.~ d4
  c2.~ c4
  b2.~ b4
  a2.~ a4
}
```

Chaque mesure semble être en 3/4, avec 2.~ 4 totalisant 3 quarts (une blanche pointée liée à une noire). Dans \partCombine \voixA \voixB, voixA est toujours f'' avec des liaisons, tandis que voixB varie de e'' à a', toujours en dessous de f''.

Exploration des Causes

Pour comprendre pourquoi l'apparence des liaisons change, examinons comment \partCombine fonctionne. La documentation, comme celle de [Multiple voices](http://lilypond.org/doc/v2.25/Documentation/notation/multiple-voices), indique que \partCombine combine deux voix en un seul staff, avec des tiges automatiques (up pour "one", down pour "two") et des ajustements pour les éléments graphiques comme les liaisons. Une recherche dans les forums, comme [Part combine problems](https://lilypond-user.gnu.narkive.com/0EgI5jGF/part-combine-problems), révèle que \partCombine peut poser des problèmes avec les liaisons, surtout en cas de collisions.

Dans ce cas, voixA (f'' lié) est "one" avec des tiges vers le haut, et voixB (e'', d'', etc.) est "two" avec des tiges vers le bas. Puisque les hauteurs sont toujours différentes, les voix sont imprimées séparément, mais quand voixB est proche, comme e'' (quatrième ligne, près de f'' dans l'espace au-dessus), il peut y avoir des ajustements pour éviter les collisions, affectant l'apparence des liaisons de f''.

Analyse des Positions

Calculons les positions pour mieux comprendre. En clé de sol :

* Ligne inférieure : f' (position 1)

* Ligne supérieure : g'' (position 5)

* c' est à 0 en position absolue, d' à 1, e' à 2, f' à 3, g' à 4, a' à 5, b' à 6, c'' à 7, d'' à 8, e'' à 9, f'' à 10, etc.

* f'' est à la position 10 (espace entre e'' et g''), e'' est à 9 (quatrième ligne), donc très proche.

Quand voixB est e'', les notes sont proches, ce qui peut entraîner des ajustements de la liaison de f'' pour éviter les collisions avec e'', expliquant le changement d'apparence. Pour les autres cas (d'', c'', b', a'), voixB est plus bas, laissant plus d'espace, donc la liaison semble normale.

Solution Recommandée

Pour résoudre ce problème, une approche consiste à ajuster manuellement la position des liaisons dans voixA en utilisant \override Tie.Y-offset = #0.5. Cela déplacera les liaisons vers le haut de 0,5 espace de portée, réduisant les interférences. Par exemple, modifiez voixA comme suit :

lilypond

```
voixA = \relative c {
  \override Tie.Y-offset = #0.5
  f''2.~ f4
  f2.~ f4
  f2.~ f4
  f2.~ f4
  f2.~ f4
}
```

Vous pouvez ajuster la valeur (#1 ou #0,3) si nécessaire. Cette méthode est soutenue par des extraits comme [Engraving ties manually](https://lilypond.org/doc/v2.25/Documentation/snippets/rhythms_003a-engraving-ties-manually), qui montrent comment modifier la position des liaisons.

Considérations Techniques

* Propriétés des Liaisons : La propriété Y-offset déplace verticalement les objets graphiques, ici les liaisons, de la valeur spécifiée en espaces de portée. Cela peut aider à éviter les collisions sans affecter la lisibilité.

* Limites Potentielles : Si la valeur est trop grande, les liaisons peuvent apparaître trop hautes, affectant l'esthétique. Testez différentes valeurs pour trouver un équilibre.

* Comparaison avec \voixC : Dans \voixC, les accords comme <e'' f>2.~ q4 (probablement une erreur, devrait être <e'' f>4) ont des liaisons cohérentes car c'est une seule voix, sans ajustements pour collisions entre voix séparées.

Tableaux pour Résumer

Voici un tableau récapitulatif des positions et des effets possibles :

|Note|Position (staff-position)|Proximité avec f'' (10)|Effet probable sur la liaison|
| --- | --- | --- | --- |
|e'' (voixB)|9|Très proche|Ajustement, changement d'apparence|
|d'' (voixB)|8|Plus bas, espace|Moins d'ajustement, apparence normale|
|c'' (voixB)|7|Plus bas, espace|Moins d'ajustement, apparence normale|
|b' (voixB)|6|Plus bas, espace|Moins d'ajustement, apparence normale|
|a' (voixB)|5|Plus bas, espace|Moins d'ajustement, apparence normale|

Ce tableau montre que seul e'' est suffisamment proche pour causer des ajustements, confirmant notre hypothèse.

Conclusion

En résumé, pour aligner l'apparence des liaisons dans voixA malgré les variations de voixB, utilisez \override Tie.Y-offset = #0.5 dans voixA. Cela devrait maintenir une apparence cohérente, surtout quand voixB est proche, comme e''. Si des ajustements supplémentaires sont nécessaires, testez différentes valeurs pour Y-offset.

---

Citations Clés

* [Multiple voices LilyPond Notation Reference](http://lilypond.org/doc/v2.25/Documentation/notation/multiple-voices)

* [Engraving ties manually LilyPond Snippets](https://lilypond.org/doc/v2.25/Documentation/snippets/rhythms_003a-engraving-ties-manually)

* [Part combine problems LilyPond Mailing List](https://lilypond-user.gnu.narkive.com/0EgI5jGF/part-combine-problems)

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/liaison-de-prolongation-est-ce-un-bug/5870/4).

---

From: Sébastien MANEN via LilyPond <[email-masked]>
Date: Thu, 20 Mar 2025 18:13:51 +0000

Bonjour Michel

Et Merci beaucoup pour cette réponse hyper détaillée.
Je vais voir ce que je vais choisir comme possibilité.

Sébastien

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/liaison-de-prolongation-est-ce-un-bug/5870/5).

---

From: Jean Abou Samra via LilyPond <[email-masked]>
Date: Fri, 21 Mar 2025 12:40:11 +0000

Réponse hyper-détaillée… dont les parties qui ne sont pas fausses sont hors-sujet. @Michel_Guenard Je n'ai rien contre l'IA en soi (même si la manière dont la majorité des IAs grand public sont aujourd'hui créées et déployées pose d'énormes problèmes à l'environnement, la cybersécurité, la souveraineté, et au passage [aux infrastructures de nombreuses communautés de logiciels libres comme LilyPond](https://thelibre.news/foss-infrastructure-is-under-attack-by-ai-companies/)), mais il me semblerait préférable de ne poster des réponses générées par IA qu'a minima après s'être assuré que la réponse est bien pertinente. Par exemple, en compilant le code pour s'assurer qu'il répond au problème posé.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/liaison-de-prolongation-est-ce-un-bug/5870/6).

---

From: Jean Abou Samra via LilyPond <[email-masked]>
Date: Fri, 21 Mar 2025 12:48:39 +0000

Pour revenir au sujet, c'est vrai que les choix faits sont bizarres. Voilà au moins un moyen de corriger localement lorsque nécessaire pour forcer les liaisons à se rapprocher des têtes de note :

```
\once \override Tie.details.horizontal-distance-penalty-factor = 1000
```

Sur l'exemple de départ, ça donne :

```
\version "2.25.21"

\relative c {
	<e'' f>2.~ q4
	\once \override Tie.details.horizontal-distance-penalty-factor = 1000
	<d f>2.~ q4
	<c f>2.~ q4
	\once \override Tie.details.horizontal-distance-penalty-factor = 1000
	<b f'>2.~ q4
	<a f'>2.~ q4
}
```

Pas terrible, mais déjà mieux. Je crois que le problème est à peu près ce qu'il y a dans ce bug : https://gitlab.com/lilypond/lilypond/-/issues/1126

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/liaison-de-prolongation-est-ce-un-bug/5870/7).

---

From: Sébastien MANEN via LilyPond <[email-masked]>
Date: Mon, 24 Mar 2025 17:40:20 +0000

Bonjour Jean

Je confirme qu'effectivement ce que tu proposes rend les liaisons quasiment identiques.

Merci.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/liaison-de-prolongation-est-ce-un-bug/5870/8).