lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ledger-extra plus courte que les autres


From: joel . gauvrit
Subject: Re: ledger-extra plus courte que les autres
Date: Sat, 27 Feb 2021 21:48:22 +0100 (CET)

Extraordinaire !
Je rêve de comprendre quelque chose à ce code ! Il faudrait proposer des 
formations !
Cependant je m'aperçois un peu tard que les normes de gravure de mon original 
de 1764 sont encore plus complexes :
ce n'est que lorsque les notes sont dans des interlignes hors portée qu'elles 
possèdent une ligne excédentaire, et les brèves n'en ont jamais !

----- Mail original -----
De: "Jean Abou Samra" <jean@abou-samra.fr>
À: "joel gauvrit" <joel.gauvrit@free.fr>, "Pierre Perol-Schneider" 
<pierre.schneider.paris@gmail.com>
Cc: "lilypond-user-fr" <lilypond-user-fr@gnu.org>
Envoyé: Samedi 27 Février 2021 19:55:59
Objet: Re: ledger-extra plus courte que les autres

Le 27/02/2021 à 18:25, joel.gauvrit@free.fr a écrit :

> Merci beaucoup Pierre,
>
> J’espérais pouvoir automatiser cela mais cela fonctionne bien et de toute 
> manière le cas reste rare.

Bonjour,

Éventuellement, on peut automatiser un peu plus :

\version "2.22.0"

#(set-object-property! 'extra-ledger-shorten 'backend-type? number?)

#(define add-shorter-ledger
    (grob-transformer 'stencil
      (lambda (grob original)
        (let* ((staff-symbol (ly:grob-object grob 'staff-symbol))
               (line-count (ly:grob-property staff-symbol 'line-count))
               (staff-position (ly:grob-property grob 'staff-position))
               (x-extent (ly:stencil-extent original X))
               (shorten (ly:grob-property grob 'extra-ledger-shorten))
               (line-x-extent (interval-widen x-extent (- shorten)))
               (line-abs-y-position (if (equal? (modulo staff-position 2)
                                                (modulo line-count 2))
                                        1/2
                                        1))
               (line-y-position (* line-abs-y-position
                                   (sign staff-position))))
          (if (< (abs staff-position)
                  line-count)
              original
              (ly:stencil-add
                original
                (ly:line-interface::line
                  grob
                  (car line-x-extent)
                  line-y-position
                  (cdr line-x-extent)
                  line-y-position)))))))


\layout {
   \override NoteHead.stencil = #add-shorter-ledger
   \override NoteHead.thickness = 2
   \override NoteHead.extra-ledger-shorten = 0.25 % à ajuster
}


\relative {
   \autoBeamOff
   \override NoteHead.style = #'petrucci
   \omit Staff.Clef
   \omit Staff.TimeSignature
   c'''16 b a g f e d c b8 a g f |
   e4 d c b |
   a2 g |
   f1
}

Cordialement,
Jean


reply via email to

[Prev in Thread] Current Thread [Next in Thread]