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

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

Re: Position verticale du nom d'instrument


From: Jean Abou Samra
Subject: Re: Position verticale du nom d'instrument
Date: Wed, 26 Jan 2022 00:06:07 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0

Le 25/01/2022 à 23:37, joel.gauvrit@free.fr a écrit :
Bonjour à tous,

Comment remonter l'indication d'instrument le modèle ci-dessous :

\version "2.22.1"

\new Staff
         \with {  instrumentName = \markup { \raise #1 TENOR }}
          { \override Staff.StaffSymbol.line-positions = #'(4 2 0 -2)
            c''4 }
J'ai modifié le nombre de lignes de la portée et leurs dispositions, je vois bien que cela génère un décalage de "TENOR".
Est-il cependant possible de ne pas changer la position des lignes mais de centrer 
verticalement "TENOR" ?


Bonjour,

Comme vous en informe la page de InstrumentName dans la
référence des propriétés internes
(http://lilypond.org/doc/v2.23/Documentation/internals/instrumentname),
cet objet prend en charge l'interface self-alignment-interface,
qui permet de modifier son alignment vertical avec la
propriété self-alignment-Y.

\version "2.22.1"

\new Staff \with {
  instrumentName = \markup { \raise #2 TENOR }
  \override InstrumentName.self-alignment-Y = -0.55
  \override StaffSymbol.line-positions = #'(4 2 0 -2)
}
{
  c''1
}


Cela dit, je trouve aussi le placement par défaut pas
très correct et ai ouvert le bug
https://gitlab.com/lilypond/lilypond/-/issues/6269
pour en discuter. On peut modifier légèrement le
code interne pour toujours centrer les noms d'instrument
sur la portée…

\version "2.22.1"

#(define (system-start-text::calc-y-offset-staff-centered grob)
  (define (live-elements-list me)
    (let ((elements (ly:grob-object me 'elements)))
      (filter! grob::is-live?
               (ly:grob-array->list elements))))
  (let* ((left-bound (ly:spanner-bound grob LEFT))
         (live-elts (live-elements-list grob))
         (system (ly:grob-system grob))
         (extent empty-interval))
    (if (and (pair? live-elts)
             (interval-sane? (ly:grob-extent grob system Y)))
        (let get-extent ((lst live-elts))
          (if (pair? lst)
              (let ((axis-group (car lst)))
                (if (and (ly:spanner? axis-group)
                         (equal? (ly:spanner-bound axis-group LEFT)
                                 left-bound))
                    (set! extent (add-point extent
                                            ;; Modifié :
;;;(ly:grob-relative-coordinate
                                            ;;; axis-group system Y)
                                            (interval-center
                                             (ly:grob-extent
                                              (ly:grob-object axis-group 'staff-symbol)
                                              system Y)))))
                (get-extent (cdr lst)))))
        ;; no live axis group(s) for this instrument name -> remove from system
        (ly:grob-suicide! grob))

    (+
     (ly:self-alignment-interface::y-aligned-on-self grob)
     (interval-center extent))))


\new Staff \with {
  instrumentName = \markup { \raise #2 TENOR }
  \override InstrumentName.Y-offset = #system-start-text::calc-y-offset-staff-centered
  \override StaffSymbol.line-positions = #'(4 2 0 -2)
}
{
  c''1
}


… et je compte proposer le changement dans quelque jours
s'il n'y a pas d'objections sur le tracker.

Cordialement,
Jean







reply via email to

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