Subject: \repeat segno

From: Vincent Gay <[email-masked]>
Date: Sun, 24 Jul 2022 12:40:47 +0200

j'essaie progressivement d'apprivoiser lily 2.23.10, et j'en suis à 
\repeat segno. Je me base sur les pages suivantes :

https://lilypond.org/doc/v2.23/Documentation/notation/long-repeats.fr.html#segno-repeat-appearance
https://lilypond.org/doc/v2.23/Documentation/internals/jump_005fengraver

mais je ne trouve pas mon bonheur. D'ailleurs une des (grandes) 
difficultés supplémentaire lorsqu'on utilise une version de 
développement c'est qu'on ne bénéficie pas de l'autocompletion de 
Frescobaldi pour les nouveautés.

je voudrais :

  * remplacer le glyphe segno par varsegno
  * remplacer le glyphe coda par varcoda
  * personnaliser dalSegnoText dans un markup (pas seulement choisir
    #format-dal-segno-text-brief)

Merci d'avance pour votre aide

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

---

From: Vincent Gay <[email-masked]>
Date: Sun, 24 Jul 2022 12:44:00 +0200

Le 24/07/2022 à 12:40, Vincent Gay a écrit :
> j

Oups, à peine envoyé j'ai trouvé réponse aux 2 premiers points :
     \set Score.codaMarkFormatter = #format-varcoda-mark
     \set Score.segnoMarkFormatter = #format-varsegnomark

---

From: Vincent Gay <[email-masked]>
Date: Sun, 24 Jul 2022 12:54:05 +0200

>     \set Score.segnoMarkFormatter = #format-varsegnomark

J'écris trop vite! pour la coda ça marche mais pour le segno 
(#format-varsegno-mark avec le - devant mark) ça marche pas

/tmp/frescobaldi-x0w1obp9/tmps1w46_cs/document.ly:5:39: Erreur : GUILE a 
signalé une erreur pour l'expression débutant ici

\set Score.segnoMarkFormatter = #

format-varsegno-mark

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 24 Jul 2022 23:53:34 +0200

Bonsoir Vincent,

>   * remplacer le glyphe segno par varsegno

Ça n'est pas prévu par défaut, mais ça peut (évidemment)
se définir.

\version "2.23.10"

\layout {
   \context {
     \Score
     segnoMarkFormatter =
       #(lambda (num context)
          (make-concat-markup
           (list-join (make-list
                       num
                       (make-fontsize-markup
                        ;; taille à ajuster
                        -7
                        (make-musicglyph-markup "scripts.varsegno")))
                      (ly:wide-char->utf-8 #x200a))))
   }
}

{
   c'1
   \repeat segno 2 {
     c'1
   }
}

>     #format-dal-segno-text-brief)

La syntaxe est celle-ci :

\version "2.23.10"

\layout {
   \context {
     \Score
     dalSegnoTextFormatter =
     #(lambda (context return-count marks)
        #{ \markup { \bold D.S. \fontsize #-4 \musicglyph 
"scripts.varsegno" ! } #})
   }
}

{
   c'1
   \repeat segno 2 {
     c'1
   }
}

Si c'est juste une fois, mettre un \markup explicite comme cela
devrait suffire. Si tu as des ajustements particuliers à apporter
tout en gardant le choix automatique du texte (D.C., D.S. al coda,
etc.), il faut utiliser les paramètres context, return-count
et marks dans la fonction. Là, il faudrait en savoir plus sur
ce que tu recherches exactement.

Cordialement,
Jean

---

From: Vincent Gay <[email-masked]>
Date: Mon, 25 Jul 2022 08:50:03 +0200

Le 24/07/2022 à 23:53, Jean Abou Samra a écrit :
> Là, il faudrait en savoir plus sur

Merci Jean pour ton aide précieuse. Ce que cherche à faire est _très 
précisément_ ceci :

Explications : Dans tous les orchestres dans lesquels j'ai joué, tant 
classiques que jazz, j'ai vu que ce que faisaient quasiment tous les 
musiciens en recevant leurs partitions était de cercler en rouge (ou 
surligner dans une couleur vive) les indications importantes. Dont les 
reprises et les changements d'armure ou de métrique. Par ailleurs je 
distingue expressément le To Coda de la Coda finale pour éviter toute 
confusion (ça se voit régulièrement). Enfin utilisant lilyjazz c'est 
bien varsegno et varcoda que j'utilise, les segno et coda "normaux" 
étant à mon goût horribles et surchargés.

Voici ce que j'obtiens en tentant d'adapter le code que tu me propose :

Il me reste donc à mettre le Segno en rouge et à remplacer le renvoi à 
la coda par le markup qui va bien

Mon code

\paper { indent = 0 ragged-last = ##t }

\layout {
   \context {
     \Score
     \remove "Bar_number_engraver"
     segnoMarkFormatter =
       #(lambda (num context)
          (make-concat-markup
           (list-join (make-list
                       num
                       (make-fontsize-markup
                        ;; taille à ajuster
                        0
                        (make-musicglyph-markup "scripts.varsegno")))
                      (ly:wide-char->utf-8 #x200a))))
           dalSegnoTextFormatter =
     #(lambda (context return-count marks)
        #{ \markup { \with-color #red "D.S. al Coda"  } #})
   }
}

\fixed c' {
    \set Score.codaMarkFormatter = #format-varcoda-mark
   g1
   \repeat segno 2 {
     1 1
     \alternative {
       \volta 1 { 1 \break }
       \volta 2 \volta #'() {
         \section
         \sectionLabel \markup \with-color #red \musicglyph 
"scripts.varcoda"
       }
     }
   }
   1
   \bar ".."
}

Merci encore

---

From: Jean Abou Samra <[email-masked]>
Date: Mon, 25 Jul 2022 09:31:38 +0200

> Le 25 juil. 2022 à 08:50, Vincent Gay <[email-masked]> a écrit :
> 
> 
> Merci Jean pour ton aide précieuse. Ce que cherche à faire est très précisément ceci :
> 
> 
> Explications : Dans tous les orchestres dans lesquels j'ai joué, tant classiques que jazz, j'ai vu que ce que faisaient quasiment tous les musiciens en recevant leurs partitions était de cercler en rouge (ou surligner dans une couleur vive) les indications importantes. Dont les reprises et les changements d'armure ou de métrique. Par ailleurs je distingue expressément le To Coda de la Coda finale pour éviter toute confusion (ça se voit régulièrement).  Enfin utilisant lilyjazz c'est bien varsegno et varcoda que j'utilise, les segno et coda "normaux" étant à mon goût horribles et surchargés.
> 
> Il me reste donc à mettre le Segno en rouge et à remplacer le renvoi à la coda par le markup qui va bien
> 
> Mon code
> 
>         \sectionLabel \markup \with-color #red \musicglyph "scripts.varcoda"
>       }
>     }
>   }
>   1
>   \bar ".."
> }
> 

Je ne peux rien tester (vacances), mais pour le segno en rouge, il faudrait changer le segnoMarlFormatter, qui a forme

#(lambda (…)
      un-markup)

en

#(lambda (…)
    (make-with-color-markup "red" un-markup))

ce qui la syntaxe Scheme pour \with-color "red" …

Et pour la coda, essaie de rajouter dans ton layout,

codaMarkFormatter =
#(lambda _
    #{ \markup … #})

en enlevant ton \set Score.codaMarkFormatter.

Cordialement,
Jean

> https://myrealbook.vintherine.org/ - http://photos.vintherine.org/

---

From: Vincent Gay <[email-masked]>
Date: Mon, 25 Jul 2022 10:50:00 +0200

Le 25/07/2022 à 09:31, Jean Abou Samra a écrit :
> Je ne peux rien tester (vacances)

Ah, ça c'est bon les vacances. J'espère que tu en profite bien.

On y est presque !

Il ne reste plus qu'à aligner à droite le To Coda

Le code :

\version "2.23.10"
\include "lilyjazz.ily"

\layout {
   \context {
     \Score
     \remove "Bar_number_engraver"
     segnoMarkFormatter =
       #(lambda (num context)
          (make-concat-markup
           (list-join
            (make-list
                       num
                       (make-fontsize-markup 0
                         ( make-with-color-markup "red" 
(make-musicglyph-markup "scripts.varsegno"))))
                      (ly:wide-char->utf-8 #x200a))))
           dalSegnoTextFormatter =
     #(lambda (context return-count marks)
        #{ \markup { \with-color #red \fontsize #2 "D.S. al Coda"  } #})
     codaMarkFormatter = #(lambda _
     #{ \markup  { \with-color #red  { "To Coda" \raise #1 \musicglyph 
"scripts.varcoda" } } #})
   }
}

\fixed c' {
    %\set Score.codaMarkFormatter = #format-varcoda-mark
   g1
   \repeat segno 2 {
     1 1
     \alternative {
       \volta 1 { 1 \break }
       \volta 2 \volta #'() {
         \section
         \sectionLabel \markup \with-color #red \musicglyph 
"scripts.varcoda"
       }
     }
   }
   1
   \bar ".."
}