Subject: Grand titre partition

From: Christian LE BARS <[email-masked]>
Date: Tue, 28 Jun 2022 11:06:49 +0200

Désolé Jean mais j'ai encore besoin de toi!

Je veux faire un grand titre à mon conducteur.

J'ai donc pompé une procédure en scheme qui le fait,

A laquelle je ni comprend rien (je n'ai pas encore eu le temps de me
plonger  dans ta doc.)

j'aimerai changer quelque chose, dans "SousTitre = "Christian le Bars""

je voudrais mettre la liste des instruments du genre:

Picolo

flute 1

flute2

etc....

a tu une idée?

par avance merci

---

From: Jean Abou Samra <[email-masked]>
Date: Wed, 29 Jun 2022 21:58:08 +0200

Bonsoir Christian,

Même si je vais effectivement répondre à ta question, je préfère
tout de même si les questions sur la liste s'adressent à tous :-)
La liste est un espace où des personnes très différentes peuvent
intervenir pour apporter leur pierre, et j'encourage tout le
monde à participer. D'autant plus que dans le cas qui nous occupe,
tout ce que tu demandes peut se faire en syntaxe LilyPond sans une
seule ligne de code Scheme !

> A laquelle je ni comprend rien (je n'ai pas encore eu le temps de me

Déjà, ce sera sans doute plus clair pour toi en convertissant
toutes ces mini-fonctions Scheme en syntaxe LilyPond, sachant
que c'est possible avec \etc dans les versions récentes. Par exemple,
au lieu d'écrire

#(define-markup-command (couv_infoRecueil_settings layout props name)
(string?)
         (interpret-markup layout props (markup #:abs-fontsize 16
#:medium name)))

on peut faire

\markup couv_infoRecueil_settings = \markup \abs-fontsize #16 \medium \etc

C'est plus clair, non ? On voit que \markup \couv_infoRecueil_settings XXX
est juste un raccourci pour \markup \abs-fontsize #16 \medium XXX,
comme indiqué par le symbole « \etc ». On définit une bête variable, mais
\etc lui permet d'accepter des arguments, ce qui en fait une fonction.
Il y a un exemple à la fin de cette section de la doc :

https://lilypond.org/doc/v2.23/Documentation/notation/formatting-text#text-markup-introduction

(attention, ce n'est que dans la doc 2.23 même si ça existait déjà en 2.22).

Avec \etc, ton code devient :

\version "2.22.2"

%---------------------------------------------------------------------
Compositeur = "franco Cesarini"
Dates = "2000-2017"
Titre =  "Arizona"
FromRecueil = "folk indien"
InfoRecueil = "Version 1"
DateRecueil = "01-09-2022"
SousTitre = "Christian le Bars"

\markup couv_recueil_settings =
   \markup \abs-fontsize #36 \medium \caps \override #'(font-name .
"Lilyjazz-text") \etc

\markup couv_infoRecueil_settings =
   \markup \abs-fontsize #20  \medium \caps \override #'(font-name .
"Lilyjazz-text") \etc

\markup couv_dateRecueil_settings =
   \markup \abs-fontsize #16 \medium \caps \override #'(font-name .
"Lilyjazz-text") \etc

\markup couv_fromRecueil_settings =
   \markup \abs-fontsize #20 \medium \caps \override #'(font-name .
"Lilyjazz-text") \etc

\markup couv_subtitle_settings =
   \markup \abs-fontsize #16 \medium \caps \override #'(font-name .
"Lilyjazz-text") \etc

\markup couv_compositeur_settings =
   \markup \abs-fontsize #28 \medium \caps \override #'(font-name .
"Lilyjazz-text") \etc

\markup couv_datesCompositeur_settings =
   \markup \abs-fontsize #20 \medium \caps \override #'(font-name .
"Lilyjazz-text") \etc

\markup couv_title_settings =
   \markup \abs-fontsize #36 \medium \caps \override #'(font-name .
"Lilyjazz-text") \etc

%-------------------------------------------------------
couvfromRecueil = \markup \couv_fromRecueil_settings #FromRecueil
couvinfoRecueil = \markup \couv_infoRecueil_settings #InfoRecueil
couvdateRecueil = \markup \couv_dateRecueil_settings #DateRecueil
couvTitre = \markup \couv_title_settings #Titre
couvSoustitre = \markup \couv_subtitle_settings #SousTitre
couvCompositeur = \markup \couv_compositeur_settings #Compositeur
couvDates = \markup \couv_datesCompositeur_settings #Dates
%-----------------------------------------------------------------
CouvSettings =
\paper
  {
    bookTitleMarkup =
    \markup
    {
      \column
       {
         \fill-line { \lower #25 \couvCompositeur }
         \fill-line { \lower #6 \couvDates }
         \fill-line { \lower #11 \draw-line #'(30 . 0) }
         \fill-line { \lower #18 \couvTitre }
                         \fill-line { \lower #10 \couvfromRecueil }
                        \fill-line { \lower #4 \couvinfoRecueil }
                        \fill-line { \lower #3 \draw-line #'(5 . 0) }
                        \fill-line { \lower #5 \couvdateRecueil }
                         \fill-line { \lower #14 \draw-line #'(30 . 0) }
                         \fill-line { \lower #20 \couvSoustitre }
        }
    }
}

\book {
   \paper { \CouvSettings }
   \markup \null \pageBreak
   \score { { c' } }
}

Maintenant, deuxième étape. Plutôt que toutes ces commandes qui ne sont
pas franchement utiles, il suffit de mettre les réglages directement dans
le bookTitleMarkup. Cela permet aussi d'écrire un seul \medium et un seul
et un seul \override pour tout le titre. (Et au passage, on n'a même
plus besoin de \etc, même si je voulais le mentionner car cela aide à mon
avis à comprendre ce qu'il avait dans ce code Scheme.)

\version "2.22.2"

%---------------------------------------------------------------------
Compositeur = "franco Cesarini"
Dates = "2000-2017"
Titre =  "Arizona"
FromRecueil = "folk indien"
InfoRecueil = "Version 1"
DateRecueil = "01-09-2022"
SousTitre = "Christian le Bars"

%-----------------------------------------------------------------
CouvSettings =
\paper
  {
    bookTitleMarkup =
    \markup \medium \override #'(font-name . "Lilyjazz-text")
    {
      \column
       {
         \fill-line { \lower #25 \abs-fontsize #28 \Compositeur }
         \fill-line { \lower #6 \abs-fontsize #16 \Dates }
         \fill-line { \lower #11 \draw-line #'(30 . 0) }
         \fill-line { \lower #18 \abs-fontsize #36 \Titre }
                         \fill-line { \lower #10 \abs-fontsize #20
\FromRecueil }
                        \fill-line { \lower #4 \abs-fontsize #20
\InfoRecueil }
                        \fill-line { \lower #3 \draw-line #'(5 . 0) }
                        \fill-line { \lower #5 \abs-fontsize #16
\DateRecueil }
                         \fill-line { \lower #14 \draw-line #'(30 . 0) }
                         \fill-line { \lower #20 \abs-fontsize #16
\SousTitre }
        }
    }
}

\book {
   \paper { \CouvSettings }
   \markup \null \pageBreak
   \score { { c' } }
}

C'est déjà plus simple et lisible, non ? Maintenant, je propose une
troisième étape, qui est d'éliminer ces variables globales, et de
mettre des \fromproperty #'header:machin dans le bookTitleMarkup.
Le \fromproperty lit alors la propriété « machin » du bloc \header,
ce qui permet de se retrouver avec une syntaxe de \header très
familière.

\version "2.22.2"

CouvSettings =
\paper
{
   bookTitleMarkup =
     \markup \override #'(font-name . "Lilyjazz-text") \column
     {
       \fill-line { \lower #25 \abs-fontsize #28 \fromproperty
#'header:composer }
       \fill-line { \lower #6 \abs-fontsize #16 \fromproperty
#'header:dates }
       \fill-line { \lower #11 \draw-line #'(30 . 0) }
       \fill-line { \lower #18 \abs-fontsize #36 \fromproperty
#'header:title }
       \fill-line { \lower #10 \abs-fontsize #20 \fromproperty
#'header:collection }
       \fill-line { \lower #4 \abs-fontsize #20 \fromproperty
#'header:collection-info }
       \fill-line { \lower #3 \draw-line #'(5 . 0) }
       \fill-line { \lower #5 \abs-fontsize #16 \fromproperty
#'header:collection-date }
       \fill-line { \lower #14 \draw-line #'(30 . 0) }
       \fill-line { \lower #20 \abs-fontsize #16 \fromproperty
#'header:subtitle }
     }
}

\book {
   \paper { \CouvSettings }
   \header {
     title = "Arizona"
     subtitle = "Christian le Bars"
     composer = "franco Cesarini"
     dates = "2000-2017"
     collection = "folk indien"
     collection-info = "Version 1"
     collection-date = "01-09-2022"
   }
   \markup \null \pageBreak
   \score { { c' } }
}

Cerise sur le gâteau, avec cette syntaxe, tu peux mettre CouvSettings
dans un fichier \include.

Concernant la question que tu poses, je ne l'ai pas très bien comprise.
Tu veux changer le sous-titre pour mettre plusieurs lignes avec des
noms d'instruments ? Il faut alors faire

subtitle = \markup \column { "Piccolo" "Flûte 1" ... }

Ou bien tu veux rajouter un champ pour les instruments ? Il suffit
de mettre une ligne de plus dans le bookTitleMarkup,

\fill-line { \lower #ce-que-tu-veux \abs-font-size #ce-que-tu-veux
\fromproperty #'header:instruments }

et dans le \header :

instruments = \markup \column { "Piccolo" "Flûte 1" ... }

Bref, je ne sais pas exactement ce que tu cherches, mais je pense
qu'avec cette manière d'écrire le code, tu devrais t'en sortir mieux
et pouvoir le modifier plus facilement.

Au passage, pas besoin de \medium s'il n'y a pas de \bold à
annuler. Autre chose, il y avait des \caps qui n'avaient pas d'effet
car \caps ne marche que si son argument est une chaîne toute
simple et pas un \markup. Si tu veux des petites capitales, il
faut les mettre dans chaque champ, par exemple

title = \markup \caps "Arizona"
subtitle = \markup \caps "Christian le Bars"
...

Bonne soirée,
Jean

---

From: Christian LE BARS <[email-masked]>
Date: Thu, 30 Jun 2022 15:36:58 +0200

Bonjour a tous.

Merci Jean pour ta réponse.

Effectivement maintenant je comprend le code.

Cependant il y a une chose que je m'explique pas!

J'ai bien ma page de garde ( que j'ai pu adapté a mon goût)

cependant la liste des instruments s'invitent sur la partition Picolo,
sans que je le demande;

Comment faire pour supprimer cette liste.

ci-joint le code de la partition

Je pars en vacances demain matin aussi je vous souhaite a tous de bonnes
vacances.

A bientot.

cordialement

Christian

---

From: Jean-Jacques Gerbaud <[email-masked]>
Date: Thu, 30 Jun 2022 17:40:37 +0200

> Comment faire pour supprimer cette liste.
Je dois probablement être à côté de la plaque mais il me semble que la
partie piccolo comprend la table des matières ! Je l'ai enlevée,
supprimé le \pageBreak et la partie Piccolo est immédiatement dans la
page Arizona.

Pour faire une partition parfaite, il faut un F majuscule à franco ! :-)
> Je pars en vacances demain matin aussi je vous souhaite a tous de bonnes

(Pas sûr que ce soit la bonne solution ! ;-)

--
JJG
Drôme provençale