lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Grand titre partition


From: Jean Abou Samra
Subject: Re: Grand titre partition
Date: Wed, 29 Jun 2022 21:58:08 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0

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 !


Le 28/06/2022 à 11:06, Christian LE BARS a écrit :
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.)



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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]