Subject: Re: Grille harmonique 100% Lilypond

From: Jean Abou Samra <[email-masked]>
Date: Sat, 7 May 2022 18:01:23 +0200

Bonjour Vincent,

Encore une petite question !

Dans tes grilles, je vois le code

   startRepeatBarType = #"[|:"
   endRepeatBarType = #":|]"
   doubleRepeatBarType = #":|][|:"

Est-ce que c'est standard pour le jazz ? Cela aurait-il du sens
d'en faire les valeurs par défaut dans le context ChordGrid ?

Pour info, je commence à converger vers un patch à peu près sortable.
Mon patch qui permet de redéfinir Score est passé aujourd'hui. Le
mieux étant l'ennemi du bien (et les examens approchant), j'aimerais poster
la contribution cette semaine, quitte à ne pas tout implémenter (par
exemple chordChanges ou les anticipations) et à en laisser pour plus
tard.

Cordialement,
Jean

---

From: Vincent Gay <[email-masked]>
Date: Sat, 7 May 2022 20:02:42 +0200

> d'en faire les valeurs par défaut dans le context ChordGrid ? 

Oui, absolument (selon moi). Mais le mieux n'est-il pas de ce qui est en 
vigueur justement via les \layout ?

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

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 8 May 2022 00:49:26 +0200

Le 07/05/2022 à 20:02, Vincent Gay a écrit :
> Oui, absolument (selon moi). Mais le mieux n'est-il pas de ce qui est 
> en vigueur justement via les \layout ?

Tu veux dire la variable \gridLayout ? Je vois qu'elle est présente dans
ton code, mais je n'ai pas sa définition exacte (pour info, le lien sur
https://myrealbook.vintherine.org/grille-harmonique.html renvoie vers
un fichier dont l'accès partagé est protégé par mot de passe). Après,
je me doute bien que c'est le

       \layout {
         indent = 0
         \context {
           \Score
           \override SpacingSpanner.strict-note-spacing = ##t
           proportionalNotationDuration = #(ly:make-moment 1/16)
           \consists #Recurring_break_engraver
           bars-per-line = 4
         }
         \context {
           \ChordGrid
           \override BarLine.bar-extent = #'(-5 . 5)
           \consists "Bar_engraver"
           \override StaffSymbol.line-positions = #'( -10 10 )
           \consists "Percent_repeat_engraver"
         }
         \context { \Score markFormatter = #format-mark-box-alphabet }
       }

Or, j'ai pu éliminer la plupart des commandes dans ce \layout, en
les mettant dans les valeurs par défaut du context ChordGrid (il
reste possible de les changer bien sûr, avec \layout ou \with).
Dans l'état actuel des choses, une grille s'écrit :

\paper {
   indent = 0
   system-system-spacing.padding = 2.5 % augmente un peu l'espacement 
entre les lignes
}

\new ChordGrid \chordmode {
   ...
}

Et c'est tout. Malheureusement, il y a encore du boulot pour régler les deux
variables restantes de manière automatique, car elles ne sont pas liées à
un contexte mais au \paper et ne peuvent donc pas être changées
dans la définition de ChordGrid (du moins pas sans hack). J'espère trouver
l'énergie de le faire un jour, cela ne doit pas être bien compliqué, et
puis la possibilité de modifier le system-system-spacing au niveau \score
et non \bookpart serait intéressante même sans grille d'accords.

Au fait, pour continuer à papoter : je risque à terme de devoir réintroduire
le Recurring_break_engraver et la variable bars-per-line, mais pour
des raisons techniques. (Pour ceux qui ne suivent pas : Vincent m'a
déconseillé de rendre les \break automatiques, en disant qu'il fallait
bien que la personne entre la chaise et le clavier serve à quelque chose :-)
Pourquoi ? Supposons que l'utilisateur cherche à créer une grille avec
8 cases par ligne (oui je sais que tu ne le recommandes pas ; par contre
je vois que le Baudoin le fait, j'imagine que c'est le cas pour certains).
Il faut alors ajuster la hauteur des cases pour éviter qu'elles ne
soient complètement distordues à cause de la largeur réduite. Pour
l'instant, je laisse l'utilisateur le faire avec \magnifyStaff et
\override GridChordName.font-size = ... Je ne détesterais pas que
ce soit automatique. Or, l'information qui provient des \break est
(en gros) déterminante au moment du calcul des sauts de ligne et
après. Problème : la hauteur des cases doit être connue avant les
sauts de ligne, car elle est nécessaire pour estimer combien de
systèmes tiendront sur une page. Résultat, les sauts de ligne dépendent
de la hauteur des cases et la hauteur des cases dépend des sauts
de ligne. D'où l'idée d'une propriété qui puisse être lue avant
les sauts de ligne.

Pour l'instant, je m'occupe d'un patch plus modeste qui ne fait pas
cela. D'ailleurs, je n'exclus pas de rendre ce Recurring_break_engraver
plus général pour lui donner le même genre de fonctionnalité que
tous les snippets qui circulent sur les listes qui permettent de
mettre des \break automatiques toutes les n mesures, ou bien d'écrire
#'((4 5 4) (5 6 5)) pour avoir deux pages avec respectivement
3 systèmes de 4, 5 et 4 mesures et 3 systèmes de 5, 6, 5 mesures, ...

Bref : du boulot en perspective.

Cordialement,
Jean

---

From: Jean-Jacques Gerbaud <[email-masked]>
Date: Sun, 8 May 2022 10:31:36 +0200

> Bref : du boulot en perspective.

Bonjour à tous et surtout à Jean,

Ce que tu écris ci-dessus est (presque) du chinois pour moi. Pourtant je
suis avec attention et je me dis que tu as assimilé toutes ces commandes
comme si c'était de la roupie de sansonnet ! (oui, je sais, cette
expression est obsolète, comme moi !)

Néanmoins, je ne peux que te féliciter de toute l'aide que tu apportes à
toutes les demandes sans le moindre problème et en toute modestie.

Peut être nous rencontrerons nous à l'occasion du prochain café Lily (je
suis dans le sud de la Drôme. Je n'ai rien à dire mais beaucoup à
apprendre, donc, si ça se trouve, je ferai le déplacement au moins pour
écouter. Je prendrai un cahier pour prendre des notes ! :-)

Cordialement

-- 
JJG
Drôme provençale

---

From: Vincent Gay <[email-masked]>
Date: Sun, 8 May 2022 10:51:12 +0000 (UTC)

8 mai 2022 10:32:17 Jean-Jacques Gerbaud <[email-masked]>:

> Ce que tu écris ci-dessus est (presque) du chinois pour moi.
Ok, je décode au moins partiellement. Jean fait référence à pas mal de discussions antérieures et même à des discussions privées ce qui n'arrange rien 😋

Premier point : il s'agit de la forme des barres de reprises, avec crochets dans le style LilyJazz. Jean demande s'il faut les intégrer dans le style par défaut des grilles harmoniques, je lui suggère de n'en rien faire mais de suivre les éventuels éléments fournis dans le layout qui va bien.

Deuxième point : Jean propose un paramètrage du nombre de cases par ligne. Je lui avais signalé qu'il pouvait y avoir des exceptions et qu'on pouvait laisser faire l'humain (la fameuse interface chaise clavier). Il propose donc un système plus flexible que celui initialement envisagé.

---

From: Jean-Jacques Gerbaud <[email-masked]>
Date: Sun, 8 May 2022 13:39:03 +0200

> Deuxième point : Jean propose un paramètrage du nombre de cases par ligne. Je lui avais signalé qu'il pouvait y avoir des exceptions et qu'on pouvait laisser faire l'humain (la fameuse interface ch…

Merci Vincent de tes explications mais j'avais bien compris de quoi il
retournait. Ce qui me surprend ce sont les solutions toujours claires
qu'apporte Jean aux diverses demandes d'aide qui ne manquent pas sur la
liste.

Désolé de t'avoir fait perdre du temps ! :-)

-- 
JJG
Drôme provençale

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 8 May 2022 21:29:52 +0200

> Premier point : il s'agit de la forme des barres de reprises, avec crochets dans le style LilyJazz. Jean demande s'il faut les intégrer dans le style par défaut des grilles harmoniques, je lui sugg…

Là, c'est moi qui ne suis plus :-) C'était quand même pas mal de pouvoir
en parler de vive voix !

Qu'entends-tu par « suivre ces éléments » ? Concrètement, qu'est-ce
que je mets dans la documentation ? Je ne le mentionne pas ? Je
le mentionne comme recommandé sans en faire une valeur par défaut ?

Merci pour ton aide.

Jean

---

From: Vincent Gay <[email-masked]>
Date: Sun, 8 May 2022 19:52:58 +0000 (UTC)

> Là, c'est moi qui ne suis plus :-) C'était quand même pas mal de pouvoir
Hello Jean,

Mon point de vue, mais qui n'est que mon point de vue, est que si je veux des crochets je dois pouvoir mettre
startRepeatBarType = #"[|:"
 endRepeatBarType = #":|]"
 doubleRepeatBarType = #":|][|:"
dans le context qui va bien.

Aujourd'hui cela ne fonctionne pas avec le context ChordGrid du coup je mets les à la main ce qui n'est pas bien grave.

Cette solution permettrait à tout un chacun de faire à sa guise.

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 8 May 2022 22:03:30 +0200

> Cette solution permettrait à tout un chacun de faire à sa guise.

Ah, je comprends mieux maintenant. Dans le code que j'ai posté, non, cela ne
fonctionne pas, (du moins pas en 2.22, il y a eu beaucoup de changements
de ce côté, je ne vais pas rentrer dans les détails), mais dans le patch,
si. Deux conséquences : tu peux faire

\layout {
   \context {
     \ChordGrid
     startRepeatBarType = ...
   }
}

avec ChordGrid au lieu de Score (note au passage que startRepeatType
est devenu startRepeatBarType dans les versions récentes), et d'autre part,
j'ai la possibilité d'en faire la valeur par défaut pour ChordGrid,
de sorte qu'il n'y ait rien à faire du tout dans le code pour cela.

Quand ce sera légèrement plus peaufiné, je vais essayer de faire une
compilation de binaires pour Linux et de te fournir une archive
qui serait comme une nouvelle version 2.23 téléchargée depuis lilypond.org,
mais avec le patch. Ce sera plus facile de se comprendre si tu peux
tester (comme les autres d'ailleurs ; par contre, je n'ai pas macOS
pour compiler, et pour Windows je ne sais pas trop m'y prendre).

Jean

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 8 May 2022 23:00:30 +0200

> pour compiler, et pour Windows je ne sais pas trop m'y prendre).

Bon, même si c'est encore loin d'être parfait, j'ai fini par le faire
quand même. Tu peux télécharger l'archive depuis

http://abou-samra.fr/lilypond-2.23.9-linux-x86_64.tar.gz

Pour ceux qui seraient perdus, c'est une version non-officielle de
LilyPond, faite à partir de la branche de développement, et qui
contient mes ajouts pour implémenter ChordGrid. Ces binaires sont
pour Linux.

Il faut décompresser l'archive, et l'exécutable est
/chemin/vers/lilypond-2.23.9/bin/lilypond. Dans Frescobaldi, il
faut aller dans Édition > Préférences > Préférences de LilyPond
et taper ce chemin.

Je tiens à préciser qu'on n'est pas obligé ni de désinstaller
les autres versions de LilyPond, ni de convertir toutes ses
partitions à la nouvelle version. D'ailleurs, dans les préférences
de Frescobaldi, il y a une case « Choisir automatiquement
la version de LilyPond à partir du document » (je ne sais
plus si elle est cochée par défaut). Elle fait que les fichiers
avec \version "2.23.9" seront automatiquement compilés par
cette version spéciale, alors que les autres le seront par
une version normale. Je le recommande, c'est rudement pratique.

Par ailleurs, j'ai mis ici une archive avec tous les tests
ajoutés à LilyPond :

http://abou-samra.fr/chord-grid-tests.zip

Cela permet de se faire une idée des fonctionnalités implémentées
ou non. J'ai mis aussi les PDF, pour ouvrir l'appétit à ceux qui
ne seraient pas encore sous Linux.

Merci d'avance à tous les bêta-testeurs.

Cordialement,
Jean

---

From: Vincent Gay <[email-masked]>
Date: Mon, 9 May 2022 08:56:59 +0200

> faut aller dans Édition > Préférences > Préférences de LilyPond

Merci beaucoup Jean. Malheureusement ça ne se passe pas comme prévu...

> Démarrage lilypond 2.23.9 [chord-grid-repeats.ly]...
>
> Traitement de 
> « /home/vincent/Nextcloud2/Musique/Divers/chordGrid/chord-grid-repeats.ly »
>
> Analyse...
>
> Interprétation en cours de la musique...
>
> /home/vincent/Nextcloud2/Musique/Divers/chordGrid/chord-grid-repeats.ly:13:1: 
> Avertissement : impossible de trouver ou créer le contexte : ChordGrid
>

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

---

From: Jean Abou Samra <[email-masked]>
Date: Mon, 9 May 2022 10:50:29 +0200 (CEST)

> Le 09/05/2022 08:56, Vincent Gay <[email-masked]> a écrit :
> 
> 
> > Traitement de « /home/vincent/Nextcloud2/Musique/Divers/chordGrid/chord-grid-repeats.ly »
> > Analyse...
> > /home/vincent/Nextcloud2/Musique/Divers/chordGrid/chord-grid-repeats.ly:13:1: Avertissement : impossible de trouver ou créer le contexte : ChordGrid

Oups, je me suis planté dans la création des binaires.
J'ai corrigé l'archive, tu peux réessayer.

Merci,
Jean