TextScript dans une définition markup

Bonjour,

je cherche à inclure dans une définition de commande markup
un \override TextScript
je tourne en rond depuis 2 jours !

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.21.81"

#(define-markup-command (Stabilo layout props color xdim ydim)
   (color? pair? pair?)
   #{ \override TextScript.layer = #-1 #} ;ne retourne rien
   (interpret-markup layout props
     #{
       \markup {
         \with-dimensions-from \null
         %\override TextScript.layer = #-1 %renvoie une erreur
         \override #'(corner-radius . 3)
         \rounded-box %liseret
         \with-color $color % mettre couleur
         % la taille -x à x de -y à y et arrondi
         \filled-box #xdim #ydim #1
       }
     #}))

\relative c' {
  % calque sous les lignes
  % cherche solution pour inclure le TextScript. layer dans la commande
Stabilo
  \override TextScript.layer = #-1
  \clef treble
  \key g \major
  <>-\markup \Stabilo #"pink" #'(-6 . -5) #'(2 . 6)
  c4 d e fis |
  g4 f? e
  -\markup \Stabilo #yellow #'(-5 . 5) #'(-3 . 6)
  c |
  d4 e4 fis %
  \bar "|."
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Si si il y a toujours une LilyPond solution :slight_smile:
Merci d'avance

···

-----
♫artial♪
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

Peut-être ça ?

%%%%
\version "2.20.0"
#(define-markup-command (Stabilo layout props color xdim ydim)
   (color? pair? pair?)
   (interpret-markup layout props
     #{
       \markup {
         \with-dimensions-from \null
         \override #'(layer . -3)
         \override #'(corner-radius . 3)
         \rounded-box %liseret
         \with-color $color
         \filled-box #xdim #ydim #1
       }
     #}))

\relative c' {
  % calque sous les lignes
  % cherche solution pour inclure le TextScript. layer dans la commande
Stabilo
  \clef treble
  \key g \major
  <>-\markup \Stabilo #red #'(-6 . -5) #'(2 . 6)
  c4 d e fis |
  g4 f? e
  -\markup \Stabilo #yellow #'(-5 . 5) #'(-3 . 6)
  c |
  d4 e4 fis %
  \bar "|."
}
%%%%%

···

--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

Merci mais déjà testé
ça ne passe pas sous les lignes
<http://lilypond-french-users.1298960.n2.nabble.com/file/t300440/Capture_d’écran_du_2020-12-11_21-17-09.png&gt;

···

-----
♫artial♪
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

\version "2.20.0"
#(define-markup-command (Stabilo layout props color xdim ydim)
   (color? pair? pair?)
   (interpret-markup layout props
     #{
       \markup {
         \with-dimensions-from \null
         \override #'(corner-radius . 3)
         \rounded-box %liseret
         \with-color $color
         \filled-box #xdim #ydim #1
       }
     #}))

\relative c' {
  % calque sous les lignes
  % cherche solution pour inclure le TextScript. layer dans la commande
Stabilo
  
  \override Staff.TextScript.layer = #-1000
  \clef treble
  \key g \major
  <>-\markup \Stabilo #red #'(-6 . -5) #'(2 . 6)
  c4 d e fis |
  g4 f? e-\markup \Stabilo #yellow #'(-5 . 5) #'(-3 . 6)
  c d4 e4 fis r %
  \bar "|."
}

···

--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

-1000, c'est violent...
Pourquoi pas:

\relative c' {
% calque sous les lignes
% cherche solution pour inclure le TextScript. layer dans la commande Stabilo
\clef treble
\key g \major
<>-\tweak layer #-1 -\markup \Stabilo #red #'(-6 . -5) #'(2 . 6)

c4 d e fis |
g4 f? e
-\tweak layer #-1
-\markup \Stabilo #yellow #'(-5 . 5) #'(-3 . 6)
c |
d4 e4 fis %
\bar "|."
}

afin que les autres TextScript éventuels ne soient pas affectés par une malencontreuse mise en couche inférieure.
Cordialement,
Pierre

···

Le ven. 11 déc. 2020 à 21:40, Gloops via LilyPond French-speaking list <lilypond-user-fr@gnu.org> a écrit :

\version "2.20.0"
#(define-markup-command (Stabilo layout props color xdim ydim)
(color? pair? pair?)
(interpret-markup layout props
#{
\markup {
\with-dimensions-from \null
\override #'(corner-radius . 3)
\rounded-box %liseret
\with-color $color
\filled-box #xdim #ydim #1
}
#}))

\relative c' {
% calque sous les lignes
% cherche solution pour inclure le TextScript. layer dans la commande
Stabilo

\override Staff.TextScript.layer = #-1000
\clef treble
\key g \major
<>-\markup \Stabilo #red #'(-6 . -5) #'(2 . 6)
c4 d e fis |
g4 f? e-\markup \Stabilo #yellow #'(-5 . 5) #'(-3 . 6)
c d4 e4 fis r %
\bar "|."
}

--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

Testé aussi le -1000
ne le fait pas :frowning:

···

-----
♫artial♪
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

Ah, si pas d'autre solution même avec un \once \override dans le le
#define-markup-command
-\tweak \layer -1 fera l'affaire.
mais du coup la commande est moins concentré
-\tweak layer -1 -\markup \Stabilo couleur x y
Merci !

···

-----
♫artial♪
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

\version "2.20.0"

#(define-markup-command (myMarker layout props color xdim ydim) (color?
pair? pair?)
  (interpret-markup layout props
    (markup (#:with-dimensions (cons 0 0)(cons 0 0)
               (#:with-color color
                 (#:filled-box xdim ydim 1) )))))

roundedRectangle =
#(define-music-function ( y-lower y-upper frame-color fill-color radius)
   (number? number? scheme? scheme? number?)
   #{
     \once\override HorizontalBracket.stencil =
     $(lambda (grob)
        (let* (
                (area (ly:horizontal-bracket::print grob))
                (thick (ly:grob-property grob 'line-thickness 0.2))
                (pad (ly:grob-property grob 'broken-bound-padding 0))
                (X-ext (ly:stencil-extent area X))
                (X-ext (cons (- (car X-ext) thick) (+ (cdr X-ext) thick)))
                (open-on-left (= 1 (ly:item-break-dir (ly:spanner-bound
grob LEFT ))))
                (open-on-right (= -1 (ly:item-break-dir (ly:spanner-bound
grob RIGHT))))
                (X-ext (cons
                        (if open-on-left (+ (car X-ext) pad) (car X-ext))
                        (if open-on-right (- (cdr X-ext) pad) (cdr X-ext))))
                (Y-ext (cons y-lower y-upper))
                (outer-rect empty-stencil)
                )
          ; calculate outer borders:
          (set! outer-rect
                (if (color? frame-color)
                    (ly:make-stencil (list 'color frame-color
                                       (ly:stencil-expr (ly:round-filled-box
X-ext Y-ext radius))
                                       X-ext Y-ext))
                    empty-stencil)
                )
          ; shrink X-ext for use with inner stuff:
          (set! X-ext (cons (+ (car X-ext) thick) (cdr X-ext)))
          (set! X-ext (cons (car X-ext) (- (cdr X-ext) thick)))
          ; shrink Y-ext for use with inner stuff:
          (set! Y-ext (cons (+ (car Y-ext) thick) (cdr Y-ext)))
          (set! Y-ext (cons (car Y-ext) (- (cdr Y-ext) thick)))
          (ly:grob-set-property! grob 'layer -10)
          (ly:stencil-add
           outer-rect
           ; draw (inner) fill-rectangle
           (if (color? fill-color)
               (ly:make-stencil (list 'color fill-color
                                  (ly:stencil-expr (ly:round-filled-box
X-ext Y-ext (- radius thick)))
                                  X-ext Y-ext))
               empty-stencil)
           )
          ))
     \once\override HorizontalBracket.Y-offset = #0
     \once\override HorizontalBracket.shorten-pair = #'(-2.3 . -0.5)
   #})

#(define-markup-command (sticker layout props frame-color fill-color arg)
(color? color? markup?)
   (let* ((stencil (interpret-markup layout props arg))
          (X-ext (ly:stencil-extent stencil X))
          (Y-ext (ly:stencil-extent stencil Y))
          (cnt 0)
          (step 0)
          (dist-y (- (cdr Y-ext) (car Y-ext))))
     (set! cnt (round (/ dist-y 0.7)))
     (if (> cnt 0)
         (set! step (/ dist-y cnt))
         (set! step 0))
     (ly:stencil-add
      (makeDeltaSpan
       (car Y-ext) (cdr Y-ext) (car Y-ext) (cdr Y-ext) frame-color
fill-color
       step step #f #f 0.1 ; thick
       0 X-ext #f #f 0)
      stencil)))

\layout {
  \context {
    \Voice
    \consists "Horizontal_bracket_engraver"
  }
}

\score {
  \relative c' {
    \clef treble
\key g \major
<> -\markup\myMarker #red #'(-6 . -5) #'(2 . 6)
  c4 d e fis |
  g4 \roundedRectangle #-4 #3 #black #yellow #2
  f? \startGroup e c \stopGroup d4 e4 fis r %
  \bar "|."
  
  }
}

···

--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

\version "2.20.0"

#(define-markup-command (myMarker layout props color xdim ydim) (color?
pair? pair?)
  (interpret-markup layout props
    (markup (#:with-dimensions (cons 0 0)(cons 0 0)
              #:override '(box-padding . 0)
              #:override '(corner-radius . 2)
               #:override '(thickness . 2)
              #:rounded-box
               (#:with-color color
                 (#:filled-box xdim ydim 2) )))))

roundedRectangle =
#(define-music-function ( y-lower y-upper frame-color fill-color radius)
   (number? number? scheme? scheme? number?)
   #{
     \once\override HorizontalBracket.stencil =
     $(lambda (grob)
        (let* (
                (area (ly:horizontal-bracket::print grob))
                (thick (ly:grob-property grob 'line-thickness 0.2))
                (pad (ly:grob-property grob 'broken-bound-padding 0))
                (X-ext (ly:stencil-extent area X))
                (X-ext (cons (- (car X-ext) thick) (+ (cdr X-ext) thick)))
                (open-on-left (= 1 (ly:item-break-dir (ly:spanner-bound
grob LEFT ))))
                (open-on-right (= -1 (ly:item-break-dir (ly:spanner-bound
grob RIGHT))))
                (X-ext (cons
                        (if open-on-left (+ (car X-ext) pad) (car X-ext))
                        (if open-on-right (- (cdr X-ext) pad) (cdr X-ext))))
                (Y-ext (cons y-lower y-upper))
                (outer-rect empty-stencil)
                )
          ; calculate outer borders:
          (set! outer-rect
                (if (color? frame-color)
                    (ly:make-stencil (list 'color frame-color
                                       (ly:stencil-expr (ly:round-filled-box
X-ext Y-ext radius))
                                       X-ext Y-ext))
                    empty-stencil)
                )
          ; shrink X-ext for use with inner stuff:
          (set! X-ext (cons (+ (car X-ext) thick) (cdr X-ext)))
          (set! X-ext (cons (car X-ext) (- (cdr X-ext) thick)))
          ; shrink Y-ext for use with inner stuff:
          (set! Y-ext (cons (+ (car Y-ext) thick) (cdr Y-ext)))
          (set! Y-ext (cons (car Y-ext) (- (cdr Y-ext) thick)))
          (ly:grob-set-property! grob 'layer -10)
          (ly:stencil-add
           outer-rect
           ; draw (inner) fill-rectangle
           (if (color? fill-color)
               (ly:make-stencil (list 'color fill-color
                                  (ly:stencil-expr (ly:round-filled-box
X-ext Y-ext (- radius thick)))
                                  X-ext Y-ext))
               empty-stencil)
           )
          ))
     \once\override HorizontalBracket.Y-offset = #0
     \once\override HorizontalBracket.shorten-pair = #'(-2.3 . -0.5)
   #})

#(define-markup-command (sticker layout props frame-color fill-color arg)
(color? color? markup?)
   (let* ((stencil (interpret-markup layout props arg))
          (X-ext (ly:stencil-extent stencil X))
          (Y-ext (ly:stencil-extent stencil Y))
          (cnt 0)
          (step 0)
          (dist-y (- (cdr Y-ext) (car Y-ext))))
     (set! cnt (round (/ dist-y 0.7)))
     (if (> cnt 0)
         (set! step (/ dist-y cnt))
         (set! step 0))
     (ly:stencil-add
      (makeDeltaSpan
       (car Y-ext) (cdr Y-ext) (car Y-ext) (cdr Y-ext) frame-color
fill-color
       step step #f #f 0.1 ; thick
       0 X-ext #f #f 0)
      stencil)))

\layout {
  \context {
    \Voice
    \consists "Horizontal_bracket_engraver"
  }
}

\score {
  \relative c' {
    \clef treble
\key g \major
<> -\markup\myMarker #red #'(-6 . -5) #'(2 . 6)
  c4 d e fis |
  g4 \roundedRectangle #-4 #3 #black #yellow #2
  f? \startGroup e c \stopGroup d4 e4 fis r %
  \bar "|."
  
  }
}

···

--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

bonjour,
merci
beau code, un peu ésotérique pour moi.
Ça fonctionne, Cependant je n'arrive pas avec \markup \sticker
comment on entre l'argument "arg" ?

···

-----
♫artial♪
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

Hello,

Bonjour,

je cherche à inclure dans une définition de commande markup
un \override TextScript
je tourne en rond depuis 2 jours !

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.21.81"

#(define-markup-command (Stabilo layout props color xdim ydim)
    (color? pair? pair?)
    #{ \override TextScript.layer = #-1 #} ;ne retourne rien

En Scheme, une fonction est une suite d'expressions qui sont évaluées l'une
après l'autre. La valeur de la dernière expression évaluée est renvoyée par
la fonction. Celles qui précèdent ne peuvent servir que si elles ont des
effets de bord (par exemple, dans le contexte de LilyPond, modifier une
propriété). Donc, ce bout de code est évalué, et le résultat… jeté à la
poubelle ! Évidemment, ce n'est pas ce que vous souhaitiez.

Voici une solutionpour factoriser la retouche du layer à l'intérieur
de la commande :

\version "2.21.80"

% Commande de markup auxiliaire, qui lit une propriété et crée
% le coup de stabilo.

#(define-markup-command (Stabilo-markup layout props color xdim ydim)
(color? number-pair? number-pair?)
(interpret-markup layout props
#{
\markup
\with-dimensions-from \null
\with-color #color
\filled-box #xdim #ydim #3
#}))

% On utilise le raccourci pratique et nouveau en 2.20, \etc,
% qui permet de transférer le reste de l'évaluation des arguments
% à l'endroit où l'identifieur est rappelé avec \Stabilo. Ceci évite
% une fonction musicale.

Stabilo = \tweak layer -1 -\markup \Stabilo-markup \etc

% Exemple.

\relative c' {
\clef treble
\key g \major
c4\Stabilo #green #'(-6 . -5) #'(2 . 6)
d e fis |
g4 f?
e\Stabilo #yellow #'(-5 . 5) #'(-3 . 6)
c |
d4
e4\Stabilo #black #'(-2 . 2) #'(-2 . 2)
fis
\bar "|."
}

Cordialement,
Jean

···

Le 11/12/2020 à 19:09, martial a écrit :

b'soir,

Sioux la solution !
et merci pour l'explication

Cordialement

···

-----
♫artial♪
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/