Grille harmonique 100% Lilypond

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

···

Le 07/05/2022 à 18:01, Jean Abou Samra a écrit :

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 ?

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

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
Grille harmonique - MyRealBook 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 :slight_smile:
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

···

Le 07/05/2022 à 20:02, Vincent Gay a écrit :

Le 07/05/2022 à 18:01, Jean Abou Samra a écrit :

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 ?

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

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 ! :slight_smile:

Cordialement

···

Le 08/05/2022 à 00:49, Jean Abou Samra a écrit :

Le 07/05/2022 à 20:02, Vincent Gay a écrit :

Le 07/05/2022 à 18:01, Jean Abou Samra a écrit :

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 ?

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
Grille harmonique - MyRealBook 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 :slight_smile:
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.

--
JJG
Drôme provençale

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 :yum:

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é.

···

8 mai 2022 10:32:17 Jean-Jacques Gerbaud <****@****>:

Ce que tu écris ci-dessus est (presque) du chinois pour moi.

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 ! :slight_smile:

···

Le 08/05/2022 à 12:51, Vincent Gay a écrit :

8 mai 2022 10:32:17 Jean-Jacques Gerbaud <****@****>:

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 :yum:

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é.

--
JJG
Drôme provençale

Là, c'est moi qui ne suis plus :slight_smile: 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

···

Le 08/05/2022 à 12:51, Vincent Gay a écrit :

8 mai 2022 10:32:17 Jean-Jacques Gerbaud <****@****>:

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 :yum:

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.

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.

···

8 mai 2022 21:29:55 Jean Abou Samra <****@****>:

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

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

···

Le 08/05/2022 à 21:52, Vincent Gay a écrit :

8 mai 2022 21:29:55 Jean Abou Samra <****@****>:

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

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.

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

···

Le 08/05/2022 à 22:03, Jean Abou Samra a écrit :

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).

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

···

Le 08/05/2022 à 23:00, Jean Abou Samra a écrit :

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.

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/](https://myrealbook.vintherine.org/) - [http://photos.vintherine.org/](http://photos.vintherine.org/)

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

Merci,
Jean

···

Le 09/05/2022 08:56, Vincent Gay <****@****> a écrit :

Le 08/05/2022 à 23:00, Jean Abou Samra a écrit :
> 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.

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