Subject: \mark, encadrement et positionnement conditionnel

From: Frédéric Moinard <[email-masked]>
Date: Tue, 26 Sep 2023 06:02:22 +0000

Bonjour,

Je cherche à modifier l'allure de l'encadrement obtenu avec rehearsalMarkFormatter = #format-mark-box-barnumbers :

- comment ajuster l'encadrement ? Surtout l'espace (padding?) entre le numéro et le cadre et l'épaisseur du trait ?
- comment obtenir une allure manuscrite pour l'encadrement (demande d'utilisateurs aimant bien le look des encadrements chez Sibelius), surtout pour s'accorder avec lilijazz ?

Une autre question (un autre mail ?) : \mark affiche les numéros de mesure et ces derniers sont également affichés en début de ligne. Si le \mark tombe en début de ligne, je souhaiterais :

- que l'alignement du \mark soit modifié (pour qu'il s'aligne sur le bord gauche de la portée)
- ne pas afficher le numéro de mesure pour cette mesure.

Je sais réaliser cela manuellement, mais est-il possible de le faire automatiquement ? Et je suis à peu près persuadé d'avoir déjà la solution dans arriver à la retrouver...

Cordialement,
Frédéric Moinard

---

From: Frédéric Moinard <[email-masked]>
Date: Tue, 26 Sep 2023 07:01:06 +0000

re

> - comment ajuster l'encadrement ? Surtout l'espace (padding?) entre le numéro et le cadre et l'épaisseur du trait ?

Un très bon début (merci Jean, sur la liste anglophone, Re: RhythmicStaff with measure counter, 06/09/2023 18:57) :

\layout {
   \context {
      \Score
      rehearsalMarkFormatter = #format-mark-barnumbers
      \override RehearsalMark.stencil = #(make-stencil-boxer 0.2 1.25 ly:text-interface::print)
   }
}

Ça c'est fait ;) Trop forts, les gens qui répondent aux question bien avant qu'elles soient posées.

Frédéric

---

From: Jean Abou Samra <[email-masked]>
Date: Wed, 27 Sep 2023 20:46:58 +0200

Bonjour,

> * comment obtenir une allure manuscrite pour l'encadrement (demande
> d'utilisateurs aimant bien le look des encadrements chez Sibelius),
> surtout pour s'accorder avec lilijazz ?

Je ne visualise pas bien, à quoi est-ce que cela ressemblerait ? Une espèce
de rectangle avec des côtés pas droits ?

> Une autre question (un autre mail ?) : \mark affiche les numéros de mesure et
> ces derniers sont également affichés en début de ligne. Si le \mark tombe en
> début de ligne, je souhaiterais :
> 
>  * que l'alignement du \mark soit modifié (pour qu'il s'aligne sur le bord gauche de la portée)

Ça, c'est simple à réaliser :

\version "2.24.2"

\layout {
  \override Score.RehearsalMark.break-align-symbols = #'(left-edge staff-bar key-signature clef)
}

{
  c'1 \break
  \mark \default
  c'1
  \mark \default
  c'1
}

>  * ne pas afficher le numéro de mesure pour cette mesure.

Rajouter

myMark =
#(define-music-function (label) ((index-or-markup?))
   #{
     \once \omit Score.BarNumber
     #(if label #{ \mark #label #} #{ \mark \default #})
   #})

et utiliser \myMark au lieu de \mark.

Cordialement,
Jean

---

From: Frédéric Moinard <[email-masked]>
Date: Fri, 29 Sep 2023 03:55:06 +0000

Bonjour,

> de rectangle avec des côtés pas droits ?

Réponse en message personnel pour ne pas encombrer la liste avec une image.

>   \override Score.RehearsalMark.break-align-symbols = #'(left-edge staff-bar key-signature clef)

Ah mais oui bien sûr ! Merci pour le rappel sur l'utilité d'une liste :)

> et utiliser \myMark au lieu de \mark.

Ah mais tout à fait également, merci !

Cordialement,
Frédéric

---

From: Jean Abou Samra <[email-masked]>
Date: Fri, 29 Sep 2023 13:03:30 +0200

> Réponse en message personnel pour ne pas encombrer la liste avec une image.

Comme ça, ça devrait le faire :

\version "2.24.2"

#(use-modules (ice-9 match))
#(define-markup-command (handwriting-box layout props arg) (markup?)
   #:properties ((thickness 0.3)
                 (padding 0.5)
                 (width 0.2))
   (match-let* ((stil (interpret-markup layout props arg))
                ((start-X . end-X) (interval-widen (ly:stencil-extent stil X) padding))
                ((start-Y . end-Y) (interval-widen (ly:stencil-extent stil Y) padding))
                (width (* width (- end-Y start-Y)))
                (Y-point (lambda (x)
                           (+ start-Y (* x (- end-Y start-Y))))))
     (ly:stencil-add
      stil
      (make-path-stencil
       `(moveto ,start-X ,start-Y
                lineto ,end-X ,start-Y
                curveto ,(+ end-X width) ,(Y-point 1/3)
                        ,(+ end-X width) ,(Y-point 2/3)
                        ,end-X ,end-Y
                lineto ,start-X ,end-Y
                curveto ,(- start-X width) ,(Y-point 2/3)
                        ,(- start-X width) ,(Y-point 1/3)
                        ,start-X ,start-Y)
       thickness 1 1 #f))))

%% \markup \handwriting-box "foo"

\layout {
  \set Score.rehearsalMarkFormatter = #format-mark-barnumbers
  \override Score.RehearsalMark.stencil =
  #(grob-transformer
    'stencil
    (lambda (grob orig)
      (grob-interpret-markup
       grob
       #{
         \markup
         %% ajuster les paramètres
         \override #'((thickness . 0.4)
                      (padding . 0.4)
                      (width . 0.2))
         \handwriting-box \stencil #orig
       #})))
  \override Score.RehearsalMark.break-align-symbols = #'(left-edge staff-bar key-signature clef)
}

myMark =

{
  c'1 \break
  \myMark \default
  c'1
  \myMark \default
  c'1
}

---

From: Frédéric Moinard <[email-masked]>
Date: Sat, 30 Sep 2023 04:45:20 +0000

Bonjour,

Le 29/09/2023 à 15:03, Jean Abou Samra a écrit :

> (...)

Mais oui, ça le fait carrément ! :)

(Même compte tenu de ma propension à ne pas trouver ce que j'ai sous le nez, J'étais vaguement étonné par l'absence de demande en ce sens pour s'accorder au goût des polices manuscrites avec repères encadrés de la sorte chez d'autres éditeurs.)

Merci !

Cordialement,
Frédéric