Subject: raccourcir les bendafter

From: Vincent Gay <[email-masked]>
Date: Sun, 21 Aug 2022 17:27:36 +0200

Hello lilyponders,

Dans mes partitions le line breaking n'est pas automatique, il est 
calculé pour respecter des blocs de 4 mesures. Du coup l'astuce indiquée 
dans la documentation ( La propriété |shortest-duration-space| peut 
devoir être retouchée pour ajuster l’apparence des chutes ou sauts) ne 
fonctionne pas. Pourtant j'aimerai raccourcir les bendafter que je 
trouve particulièrement moches.

Une idées ? Merci d'avance.

un petit exemple :

\version "2.23.11"
\paper {
   indent = 0\mm
   ragged-last-bottom = ##t
   ragged-bottom = ##f
   ragged-last = ##f
}
\relative c'' {
   \time 2/2 \key d \major
   \partial 2 a4 c8 a \bar "||"
   c4  a4 \bendAfter #-3 r2 | r2 c4 a8 g | a8 g e4 r2  | r4 e a a | \break
   a r r2 | r4 r8 e'~ e2 | \tuplet 3/2 { d8 c a~ } a2 r4 | r4 r8 a c4 d |
}

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

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 21 Aug 2022 18:26:18 +0200

Le 21/08/2022 à 17:27, Vincent Gay a écrit :
> calculé pour respecter des blocs de 4 mesures. Du coup l'astuce 
> indiquée dans la documentation ( La propriété 
> |shortest-duration-space| peut devoir être retouchée pour ajuster 
> l’apparence des chutes ou sauts) ne fonctionne pas. Pourtant j'aimerai 
> raccourcir les bendafter que je trouve particulièrement moches.
>

Est-ce que quelque chose comme ceci te conviendrait ? J'ai repris
et modifié la fonction qui construit le stencil du bend.

\version "2.23.11"

#(set-object-property! 'maximum-length 'backend-type? number?)

\layout {
   \context {
     \Score
     \override BendAfter.springs-and-rods = #ly:spanner::set-spacing-rods
     \override BendAfter.stencil =
     #(lambda (spanner)
         (define (close  a b)
           (< (abs (- a b)) 0.01))
         (let* ((delta-y (* 0.5 (ly:grob-property spanner 'delta-position)))
                (left-span (ly:spanner-bound spanner LEFT))
                (dots (and (grob::has-interface left-span 
'note-head-interface)
                           (ly:grob-object left-span 'dot #f)))
                (right-span (ly:spanner-bound spanner RIGHT))
                (thickness (* (ly:grob-property spanner 'thickness)
                              (ly:staff-symbol-line-thickness spanner)))
                (padding (ly:grob-property spanner 'padding 0.5))
                (common (ly:grob-system spanner))
                (common-y (ly:grob-common-refpoint spanner left-span Y))
                (minimum-length (ly:grob-property spanner 
'minimum-length 0.5))
                (maximum-length (ly:grob-property spanner 
'maximum-length 1.0))
                (left-x (+ padding
                           (max
                            (interval-end (ly:generic-bound-extent
                                           left-span common))
                            (if
                             (and dots
                                  (close
                                   (ly:grob-relative-coordinate dots 
common-y Y)
                                   (ly:grob-relative-coordinate spanner 
common-y Y)))
                             (interval-end
                              (ly:grob-robust-relative-extent dots 
common X))
                             (- INFINITY-INT)))))
                ;; FIXME: accidentals
                (right-start (ly:grob-relative-coordinate left-span 
common X))
                (right-x (min (- (max (interval-start
                                       (ly:generic-bound-extent 
right-span common))
                                      (+ left-x minimum-length))
                                 padding)
                              (+ left-x maximum-length)))
                (self-x (ly:grob-relative-coordinate spanner common X))
                (dx (- right-x left-x)))
           (make-path-stencil
            `(rmoveto
              ,(- left-x self-x) 0
              rcurveto
              ,(/ dx 3) 0
              ,dx ,(* 0.66 delta-y)
              ,dx ,delta-y)
            thickness
            1
            1
            #f)))
   }
}

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

\new Staff \with {
   \magnifyStaff #3/2
}
\relative c'' {
   \override BendAfter.minimum-length = 1
   \override BendAfter.maximum-length = 1.3
   \override BendAfter.padding = 0.5
   \time 2/2 \key d \major
   \partial 2 a4 c8 a \bar "||"
   c4  a4 \bendAfter #-3 r2 | r2 c4 a8 g | a8 g e4 r2  | r4 e a a | \break
   a r r2 | r4 r8 e'~ e2 | \tuplet 3/2 { d8 c a~ } a2 r4 | r4 r8 a\tweak 
maximum-length 0.8\bendAfter 2 c8 d4.\bendAfter -2 |
   c4.\bendAfter -2
}

Cordialement,
Jean

---

From: Vincent Gay <[email-masked]>
Date: Sun, 21 Aug 2022 19:06:35 +0200

> et modifié la fonction qui construit le stencil du bend.

Super, merci. De plus je vois que tu as modifié le paramétrage de ton 
courrielleur et que la liste n'apparaît plus en copie mais en 
destinataire. Hé, ça simplifie la vie...

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