[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: raccourcir les bendafter
From: |
Jean Abou Samra |
Subject: |
Re: raccourcir les bendafter |
Date: |
Sun, 21 Aug 2022 18:26:18 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 |
Le 21/08/2022 à 17:27, Vincent Gay a écrit :
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.
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