Subject: \override en global

From: Gerard <[email-masked]>
Date: Wed, 16 Nov 2022 10:01:04 +0100

Bonjour tout le monde,

Je saisis une partition "tablature guitare" en représentant les 
vignettes d'accords par un markup fret-diagram et dont je modifie 
l'apparence à l'aide de  \override #'(fret-diagram-details.

Comme le montre l'ECM joint, je répète la partie fret-diagram-details à 
chaque markup (à chaque vignette).

Comment faire pour avoir cette partie fret-diagram-details en "global", 
une fois pour toute en début de partition ? et ainsi alléger ma saisie...

Merci encore une fois pour le coup de main !

Gérard

ps : j'essaie au maximum de consulter la doc et LSR mais pas trouvé...

---

From: Martial R <[email-masked]>
Date: Wed, 16 Nov 2022 10:53:22 +0100

Bonjour

Ceci  répond à  ta demande,
ou bien je n'ai pas compris ?
%--------------------------
\version "2.23.4"
accordDoM = \markup {
    \override #'(fret-diagram-details . (
                                          (number-type . arabic)
                                          (dot-label-font-mag . 0.9)
                                          (finger-code . in-dot)
                                          (fret-label-font-mag . 0.6)
                                          (fret-label-vertical-offset . 0)
                                          (label-dir . -1)
                                          (mute-string . "M")
                                          (xo-font-magnification . 0.4)
                                          (xo-padding . 0.3)
                                          (barre-type . straight))) {
      \fret-diagram-verbose #'((mute 6)
                               (place-fret 5 3 1)
                               (place-fret 4 5 2)
                               (place-fret 3 5 3)
                               (place-fret 2 5 4)
                               (place-fret 1 3 1)

                               (barre 5 1 3))
    }
}

accordDsimpleM = \markup {
    {
      \fret-diagram-verbose #'((mute 6)
                               (place-fret 5 3 1)
                               (place-fret 4 5 2)
                               (place-fret 3 5 3)
                               (place-fret 2 5 4)
                               (place-fret 1 3 1)
                               (barre 5 1 3))
    }
  }

}
melodie = {
  c'1^\markup\accordDoM
   c'1^\markup\accordDoM
  c'1^\markup\accordDsimpleM
}
%-----------------------------------------

cordialement

-- 
Martial Rameaux

---

From: Gerard <[email-masked]>
Date: Wed, 16 Nov 2022 12:09:16 +0100

Merci Martial !

Pas tout à fait...  L'idée c'est cela, mais je ne voudrais avoir que la 
partie fret-diagram-details dans accord... et le fret-diagram-verbose 
est dans le markup à l'endroit concerné. Quelque chose qui ressemblerait à :

\version "2.23.4"

mavignette = \markup {
                                           (barre-type . straight)))}

melodie = {  c'1^\markup {
     {
       \fret-diagram-verbose #'((mute 6)
                                (place-fret 5 3 1)
                                (place-fret 4 5 2)
                                (place-fret 3 5 3)
                                (place-fret 2 5 4)
                                (place-fret 1 3 1)
                                (barre 5 1 3))
     }
   }

où l'accord représenté sur c'1 aurait les paramètres de mavignette...

Je ne m'étonne plus de rien, que sais que Lilypond peut le faire :)

Merci encore.

Gérard

---

From: Jean Abou Samra <[email-masked]>
Date: Wed, 16 Nov 2022 13:52:59 +0100

Le 16/11/2022 à 10:01, Gerard a écrit :
> Comme le montre l'ECM joint, je répète la partie fret-diagram-details 
> à chaque markup (à chaque vignette).
>
> Comment faire pour avoir cette partie fret-diagram-details en 
> "global", une fois pour toute en début de partition ? et ainsi alléger 
> ma saisie...
>

Bonjour Martial,

Essaie comme ceci :

\version "2.23.81"

\markup mavignette =
\markup
   \override #'(fret-diagram-details
                . ((number-type . arabic)
                   (dot-label-font-mag . 0.9)
                   (finger-code . in-dot)
                   (fret-label-font-mag . 0.6)
                   (fret-label-vertical-offset . 0)
                   (label-dir . -1)
                   (mute-string . "M")
                   (xo-font-magnification . 0.4)
                   (xo-padding . 0.3)
                   (barre-type . straight)))
   \fret-diagram-verbose \etc

{
   c'1^\markup \mavignette
         #'((mute 6)
            (place-fret 5 3 1)
            (place-fret 4 5 2)
            (place-fret 3 5 3)
            (place-fret 2 5 4)
            (place-fret 1 3 1)
            (barre 5 1 3))
}

mavignette utilise le petit mot magique \etc pour « couper »
la définition de la variable et en faire une fonction qui
attend l'argument restant (celui de \fret-diagram-verbose).
Comme on veut que ce soit une fonction pour markups, il faut
mettre \markup avant mavignette pour signaler que mavignette
est définie dans le monde des markups.

Il y a un mini-exemple dans la documentation à la fin de
cette section (ajouté en 2.23) :

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

Cordialement,
Jean

---

From: Gerard <[email-masked]>
Date: Wed, 16 Nov 2022 15:56:36 +0100

Merci Jean !

Magique effectivement ! J'aurai jamais cherché dans la doc de markup.... 
comme quoi...

À ce que je devine, c'est puissant ce truc ! Ça devrait servir à 
l'occasion !

Gérard