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

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

Re: Ledgerline color


From: Jean Abou Samra
Subject: Re: Ledgerline color
Date: Sat, 12 Jun 2021 11:22:48 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1



Le 12/06/2021 à 08:43, dmlmg20110107 a écrit :
Bonjour à tous,

J'espère que ce sujet n'a pas déjà été traité sur la liste, car je n'en ai
pas trouvé d'équivalent.

Quelqu'un sait-il comment se comporte la fonction \override
Staff.LedgerLineSpanner.color ?

La situation : devant des manuscrits altérés, certains éditeurs sont
contraints de reconstituer des notes disparues ou inconnues. Pour ce faire,
il est d'usage de leur attribuer dans la gravure une autre couleur, que ce
soit la tête, la queue, les points, les altérations, les silences, les
ornements, et bien sûr les petites lignes de portée supplémentaires (qui se
nomment "Ledger Lines" si j'ai bien compris nos collègues anglosaxons).

Exemple :

<http://lilypond-french-users.1298960.n2.nabble.com/file/t390216/ledgerline.jpg>

Mon problème avec Lilypond, comme vous le constatez ci-dessus, c'est que
toutes les caractéristiques des notes peuvent être parfaitement maîtrisées
avec les commandes suivantes :

\override Stem.color = #(rgb-color x y z)
\override NoteHead.color = #(rgb-color x y z)
\override Beam.color = #(rgb-color x y z)
\override Rest.color = #(rgb-color x y z)
\override Dots.color = #(rgb-color x y z)
\override Accidental.color = #(rgb-color x y z) etc. etc. etc.

Sauf :

\override Staff.LedgerLineSpanner.color = #(rgb-color x y z)

Soit je place cette commande en début de partition, et toutes mes petites
lignes de portées supplémentaires sont colorées, soit je place la commande
devant la note à colorer, avec ou sans \once, et cela n'a aucun effet sur la
gravure.

Je ne maîtrise pas suffisamment les rouages internes de Lilypond pour
improviser quelque chose d'autre...donc quelqu'un de plus performant
aurait-il une idée ?

Vous allez me répondre qu'il s'agit là de couper un cheveu en 5, certes,
mais étant donné la puissance de Lilypond (sans exagérer) je me dis qu'il
s'agit plus d'un défi. Qu'en dites-vous ?

Avec tous mes remerciements,
Mathieu.


Bonjour,

Comme l'indique le code posté par Jacques, il n'y a qu'un seul
objet LedgerLineSpanner, qui s'étend sur toute la partition,
brisé en autant de morceaux que de systèmes. D'ailleurs, je ne
comprends pas la raison de ce choix.

Une solution consiste à commencer un nouveau symbole de portée,
ce qui force à démarrer un nouveau LedgerLineSpanner. Vous
trouverez un exemple ici :

https://lists.gnu.org/archive/html/lilypond-user/2015-03/msg00249.html

Une autre, qui vous épargnera les \stopStaff \startStaff, est
de redéfinir le graveur qui crée les lignes supplémentaires
pour qu'il produise un nouvel objet LedgerLineSpanner à chaque
étape temporelle où se trouvent des notes.

\version "2.22.1"

#(define (My_ledger_line_engraver context)
   (let ((ledgered-grobs '())
         (ledger-spanner #f))
     (make-engraver
       (acknowledgers
         ((ledgered-interface engraver grob source-engraver)
            (set! ledgered-grobs (cons grob ledgered-grobs))))
       ((process-acknowledged engraver)
          (for-each
            (lambda (grob)
              (if (not (ly:grob-property grob 'no-ledgers #f))
                  (begin
                    (if (not ledger-spanner)
                        (let ((column
                                (ly:context-property context 'currentMusicalColumn)))
                          (set! ledger-spanner
                                (ly:engraver-make-grob engraver 'LedgerLineSpanner grob))                           (ly:spanner-set-bound! ledger-spanner LEFT column)                           (ly:spanner-set-bound! ledger-spanner RIGHT column)))
                    (ly:pointer-group-interface::add-grob
                      ledger-spanner
                      'note-heads
                      grob))))
            ledgered-grobs)
          (set! ledgered-grobs '()))
       ((stop-translation-timestep engraver)
          (set! ledger-spanner #f)))))

\layout {
  \context {
    \Staff
    \remove "Ledger_line_engraver"
    \consists #My_ledger_line_engraver
  }
}

<<
  {
    c
    \once \override Staff.LedgerLineSpanner.color = "red"
    c
  }
  \\
  { a, <a, b,> }
>>

Bien cordialement,
Jean




reply via email to

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