Subject: ChordGrid : écart entre les lignes

From: Vincent Gay <[email-masked]>
Date: Fri, 29 Jul 2022 23:29:34 +0200

Bonsoir à toutes et à tous

dans l'exemple ci-dessous on voit que les écarts entre les lignes de la 
grille et dépendant du fait qu'il y ait des \mark ou des indications 
rythmiques. Logique. Pourtant j'aimerai qu'entre 2 lignes d'accords 
l'écart soit toujours constant.

Je sais déplacer des lignes avec [\once] \override 
Score.NonMusicalPaperColumn.line-break-system-details = #'((extra-offset 
. (X . Y ))) mais ce n'est pas très élégant et à répéter souvent.

Existe-t-il une solutions plus élégantes ?

Merci d'avance

%%%%%%%%%%%%%%%%%%%

\version "2.23.10"

grille = \chordmode {
   \override Score.RehearsalMark #'self-alignment-X = #LEFT
   \repeat volta 2 { \repeat unfold 2 { f1:5+9+ bes:13/d } } \break
   \mark \markup { \box Head \raise #1 \with-color #red \musicglyph 
"scripts.segno" }
   \repeat volta 2 {
     \repeat unfold 2 { f1:5+9+ bes:13/d } \break
     %\override Score.NonMusicalPaperColumn.line-break-system-details = 
#'((extra-offset . (0 . -8 )))
     \repeat unfold 2 { bes:5+9+ es:13 } \break
     ges2:6.9 e:7 es1 b2:7 f:7 bes1:m \break }
}

GridRhythm =
{ s1* 8
   \break
   \repeat unfold 2 { r4 c4 4. 8~ 1 }

}

\paper {
   indent = 0 ragged-right = ##f
   system-system-spacing = #'((basic-distance . 18)
                              (minimum-distance . 12)
                              (padding . 0))
}

\new ChordGridScore <<
   \new RhythmicStaff \with {
     \RemoveAllEmptyStaves
     \improvisationOn
     \override StaffSymbol.line-count = 0
     \remove Time_signature_engraver
     \remove Bar_engraver
   }
   \magnifyMusic 0.66 \GridRhythm
   \new ChordGrid \grille

-- 
Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/  -http://photos.vintherine.org/

---

From: Jean Abou Samra <[email-masked]>
Date: Sat, 30 Jul 2022 07:15:07 +0200

> Le 29 juil. 2022 à 23:32, Vincent Gay <[email-masked]> a écrit :
> 
> dans l'exemple ci-dessous on voit que les écarts entre les lignes de la grille et dépendant du fait qu'il y ait des \mark ou des indications rythmiques. Logique. Pourtant j'aimerai qu'entre 2 lignes d'accords l'écart soit toujours constant.
> 
> Je sais déplacer des lignes avec [\once] \override Score.NonMusicalPaperColumn.line-break-system-details = #'((extra-offset . (X . Y ))) mais ce n'est pas très élégant et à répéter souvent. 
> 

Intéressante question. Je pense que la solution la plus simple consiste à commencer par ne garder que le padding dans system-system-spacing. De cette façon, l’espacement ne dépend plus que des « lignes d’horizon », ou « skylines ». Tu peux les visualiser en ajoutant

\layout {
  \context {
    \ChordGridScore
    \override System.show-vertical-skylines = ##t
  }
}

L’objectif va être de faire que tous les objets autres que la ligne d’accords disparaissent des skylines. Pour cela, ajoute déjà dans le \with de la portée rythmique

\override VerticalAxisGroup.vertical-skylines = ##f

ce qui devrait supprimer tout ce qui est en provenance de cette portée des skylines. Ensuite, dans le \layout,

\context {
  \ChordGridScore
  \override RehearsalMark.vertical-skylines = ##f
}

Si tu utilises \repeat segno, répète le \override en remplaçant RehearsalMark par SegnoMark, CodaMark, SectionLabel, JumpScript.

Dis-moi si ça semble fonctionner.

>   \mark \markup { \box Head \raise #1 \with-color #red \musicglyph "scripts.segno" }
>   \repeat volta 2 {
>     %\override Score.NonMusicalPaperColumn.line-break-system-details = #'((extra-offset . (0 . -8 )))
> https://myrealbook.vintherine.org/ - http://photos.vintherine.org/

---

From: Vincent Gay <[email-masked]>
Date: Sat, 30 Jul 2022 07:55:23 +0200

Le 30/07/2022 à 07:15, Jean Abou Samra a écrit :
> L’objectif va être de faire que tous les objets autres que la ligne 
> d’accords disparaissent des skylines. Pour cela, ajoute déjà dans le 
> \with de la portée rythmique
>

Arf... non ! Le RehearsalMark c'est pas gênant, il est pris dans le 
basic-distance quqnd c'est bien réglé, donc pas besoin de supprimer 
RehearsalMark.vertical-skylines de ChordGridScore

par contre il reste toujours la distance au dessus de la ligne rythmique 
malgré le \override VerticalAxisGroup.vertical-skylines = ##f

---

From: Jean Abou Samra <[email-masked]>
Date: Sat, 30 Jul 2022 08:21:06 +0200

> Le 30 juil. 2022 à 07:57, Vincent Gay <[email-masked]> a écrit :
> 
> 
> Arf... non ! Le RehearsalMark c'est pas gênant, il est pris dans le basic-distance quqnd c'est bien réglé, donc pas besoin de supprimer RehearsalMark.vertical-skylines de ChordGridScore

Qu’est-ce que tu veux dire ? Il n’y a plus de basic-distance, justement.

Tu mets le RehearsalMark à l’intérieur d’une case, comme dans ton image ci-dessous ?

> par contre il reste toujours la distance au dessus de la ligne rythmique malgré le \override VerticalAxisGroup.vertical-skylines = ##f
> 

Ça me surprend. Peux-tu poster l’image obtenue avec show-vertical-skylines ?

---

From: Vincent Gay <[email-masked]>
Date: Sat, 30 Jul 2022 13:24:10 +0200

Hello Jean. Merci de t'occuper encore une fois de mes petits besoins 
excentriques.

> Qu’est-ce que tu veux dire ? Il n’y a plus de basic-distance, justement.

Hum... Je veux dire que dans le code de départ (sans tes modifs) ce ne 
sont pas les rehearsalmarks qui posent problème si basic-distance est 
correctement réglé. Par contre avec tes recommandations.  les 
reheasalmarks sont *dans* la case au lieu de juste au dessus (ce n'est 
pas ce que je souhaite) par contre l'écart entre la ligne rythmique et 
la ligne d'accords précédente est toujours trop gros.

Ci-dessous :
- le code que tu propose (si j'ai bien compris)
- le résultat
- ce que je souhaite (écartement constant intégrant les rehearsalmarks 
et la rythmique)

---- Le code ----

\version "2.23.10"

\layout {
   \context {
     \ChordGridScore
}}

grille = \chordmode {

GridRhythm =
{ s1* 8
   \break

\paper {

\new ChordGridScore <<

---

From: Jean Abou Samra <[email-masked]>
Date: Sat, 30 Jul 2022 14:05:14 +0200

> Le 30 juil. 2022 à 13:24, Vincent Gay <[email-masked]> a écrit :
> 
> 
> Hello Jean. Merci de t'occuper encore une fois de mes petits besoins excentriques. 
> 
> Hum... Je veux dire que dans le code de départ (sans tes modifs) ce ne sont pas les rehearsalmarks qui posent problème si basic-distance est correctement réglé. Par contre avec tes recommandations.  les reheasalmarks sont dans la case au lieu de juste au dessus (ce n'est pas ce que je souhaite) par contre l'écart entre la ligne rythmique et la ligne d'accords précédente est toujours trop gros. 
> 
> Ci-dessous :
> - ce que je souhaite (écartement constant intégrant les rehearsalmarks et la rythmique)

Dans ton code, il manque la première partie de ce que je proposais (je n’ai peut-être pas été très clair) :

\paper {
  system-system-spacing =
    #'((padding . 5))
}

Ou bien peut-être

\paper {
  system-system-spacing =
  #'((basic-distance . 0) (minimum-distance . 0) (padding . 5))
}

L’essentiel étant que seul le padding joue.

Pour la position des RehearsalMark, tu peux rajouter

\override RehearsalMark.Y-offset = 5

à ajuster.

---

From: Vincent Gay <[email-masked]>
Date: Sat, 30 Jul 2022 16:02:30 +0200

> n’ai peut-être pas été très clair) :

Il doit encore y avoir quelque chose que je n'ai pas compris : 
RehearsalMark OK RhythmicStaff KO

--- code ---

\version "2.23.10"
%\include "lilyjazz.ily"

\paper {
   indent = 0 ragged-right = ##f
   system-system-spacing = #'((padding . 5 ))
}

\layout {
   \context {
     \ChordGridScore
     \override RehearsalMark.Y-offset = 8
     \RhythmicStaff
} }

grille = \chordmode {

GridRhythm = { s1* 8 \repeat unfold 2 { r4 c4 4. 8~ 1 }}

\new ChordGridScore <<
   \new RhythmicStaff \magnifyMusic 0.66 \GridRhythm
   \new ChordGrid \grille

---

From: Jean Abou Samra <[email-masked]>
Date: Sat, 30 Jul 2022 16:10:48 +0200

> Le 30 juil. 2022 à 16:02, Vincent Gay <[email-masked]> a écrit :
> 
> 
> Il doit encore y avoir quelque chose que je n'ai pas compris : RehearsalMark OK RhythmicStaff KO

Moi non plus je ne comprends pas :)

Tu as essayé la variante avec minimum-distance et basic-distance à 0 ?

Et si tu mets aussi stretchability à 0 ? C’est-à-dire

\paper {
  system-system-spacing =
    #'((basic-distance . 0)
       (minimum-distance . 0)
       (padding . 10)
       (stretchability . 0))
}

Si ça ne marche toujours pas, montre la sortie avec

\paper {
  annotate-spacing = ##t
}

---

From: Vincent Gay <[email-masked]>
Date: Sat, 30 Jul 2022 16:15:20 +0200

> Tu as essayé la variante avec minimum-distance et basic-distance à 0 ?
Oui, pareil
> Et si tu mets aussi stretchability à 0 ? C’est-à-dire
Rien de changé

---

From: Jean Abou Samra <[email-masked]>
Date: Sat, 30 Jul 2022 16:32:35 +0200

> Le 30 juil. 2022 à 16:15, Vincent Gay <[email-masked]> a écrit :
> 

Mystérieux. Et que donne annotate-spacing ?

---

From: Vincent Gay <[email-masked]>
Date: Sat, 30 Jul 2022 16:38:44 +0200

> Mystérieux. Et que donne annotate-spacing ?
rien de mieux.

Mais une découverte : si je ne mets pas  \override 
VerticalAxisGroup.vertical-skylines = ##f  dans le context 
\RhythmicStaff (ou si je le mets à ##t) c'est mieux que si je le mets.

---

From: Jean Abou Samra <[email-masked]>
Date: Sat, 30 Jul 2022 16:45:38 +0200

> Le 30 juil. 2022 à 16:38, Vincent Gay <[email-masked]> a écrit :
> 

Mais ça doit afficher des tas d’annotations, non ? C’est sûr que ça ne va pas résoudre le problème en soi, j’aimerais juste examiner ces annotations pour mieux comprendre ce qui se passe.

> Mais une découverte : si je ne mets pas  \override VerticalAxisGroup.vertical-skylines = ##f  dans le context \RhythmicStaff (ou si je le mets à ##t) c'est mieux que si je le mets.

Euh, mis à ##t, ça doit donner un avertissement et être ignoré, non ?

Encore une chose : et avec

\paper {
  system-system-spacing =
    #'((basic-distance . -100)
        (minimum-distance . -100)
        (padding . 10)
        (stretchability . 0))
}

?

---

From: Vincent Gay <[email-masked]>
Date: Sat, 30 Jul 2022 16:49:07 +0200

Le 30/07/2022 à 16:45, Jean Abou Samra a écrit :
> Mais ça doit afficher des tas d’annotations, non ?

---

From: Jean Abou Samra <[email-masked]>
Date: Sat, 30 Jul 2022 18:45:13 +0200 (CEST)

Bon, j'ai pu emprunter un ordinateur, j'ai
fait quelques essais supplémentaires, et je suis
à peu près convaincu qu'on a affaire à un bug.
Il faudra que je voie si je trouve un exemple
simple pour le mettre dans le tracker.

Par ailleurs, j'ai quand même trouvé une solution
de contournement qui n'est pas trop moche :

\version "2.23.11"

\paper {
  indent = 0
  ragged-right = ##f
  system-system-spacing =
  #'((basic-distance . 0)
     (minimum-distance . 23)
     (padding . 0)
     (stretchability . 0))
}

\layout {
  \context {
    \RhythmicStaff
    \override VerticalAxisGroup.staff-affinity = #DOWN
    \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
      #'((basic-distance . 0)
         (minimum-distance . 9)
         (padding . 0)
         (stretchability . 0))
    \RemoveAllEmptyStaves
    \improvisationOn
    \override StaffSymbol.line-count = 0
    \remove Time_signature_engraver
    \remove Bar_engraver    
  }
}

grille = \chordmode {
  \override Score.RehearsalMark.self-alignment-X = #LEFT
  \repeat volta 2 { \repeat unfold 2 { f1:5+9+ bes:13/d } } \break
  \mark \markup { \box Head \raise #1 \with-color #red \musicglyph "scripts.segno" }
  \repeat volta 2 {
    \repeat unfold 2 { f1:5+9+ bes:13/d } \break
    %\override Score.NonMusicalPaperColumn.line-break-system-details= #'((extra-offset . (0 . -8 )))
    \repeat unfold 2 { bes:5+9+ es:13 } \break
    ges2:6.9 e:7 es1 b2:7 f:7 bes1:m \break }
}

\new ChordGridScore <<

Note que j'ai changé la syntaxe du

C'est une syntaxe très ancienne, et en 2.23.11 elle
provoque un avertissement. Utilise plutôt

  \override Score.RehearsalMark.self-alignment-X = #LEFT

Cordialement,
Jean

---

From: Vincent Gay <[email-masked]>
Date: Sat, 30 Jul 2022 19:48:26 +0200

> de contournement qui n'est pas trop moche :

Super, c'est parfait, merci beaucoup

J'ai mis minimum-distance à 20 dans le bloc \paper, à 8.5 dans 
\RhythmicStaff et j'ai mis réduit la fontsize #-1 pour la mark et ça 
donne ça (avec lilyjazz)

---

From: Vincent Gay <[email-masked]>
Date: Sat, 30 Jul 2022 20:18:05 +0200

>       (stretchability . 0))
dernière question : je peux mettre le system-system-spacing dans un 
\layout \context \ChordGridScore  plutôt que dans un bloc \paper ?

---

From: Jean Abou Samra <[email-masked]>
Date: Sat, 30 Jul 2022 20:24:37 +0200

> Le 30 juil. 2022 à 20:18, Vincent Gay <[email-masked]> a écrit :
> 
> dernière question : je peux mettre le system-system-spacing dans un \layout \context \ChordGridScore  plutôt que dans un bloc \paper ?

Non, pas possible à l’heure actuelle, pour la raison que c’est une variable quiagit au niveau du bookpart. Il y a une demande d’amélioration qui traîne dans un coin pour qu’elle puisse être mise à des valeurs différentes selon le score. Même avec ça, on pourrait la changer dans le \layout d’un \score, en dehors de tout \context, mais pas au niveau d’un \context { \ChirdGridScore … } car ce n’est pas une propriété de contexte. Il m’est arrivé de réfléchir vaguement à ce problème, mais je n’ai pas encore trouvé de solution très convaincante.