Bras eo Jean, comme on dit en Bretagne!
JM
Bonjour,Le 24/04/2022 à 19:07, Jean-Marc Legrand - Éditions IN NOMINE a écrit :Salutations à toute la troupe, de la part d'un lointain revenant !
Sur cette liste, personne n'a peur des revenants :-)Un petit souci que je ne parviens pas à résoudre.
Voici un exemple de code, avec 2 voix sur une même portée, de 2 couleurs différentes. Vous le verrez de suite, mon souci est que, si les ledgerlines sont bien rouges sur la voix 1 seule, dès que la voix 2 arrive, elles redeviennent noires. LedgerLineSpanner.color est une propriété de Staff, ce qui explique cela... Auriez-vous une idée de sioux pour contourner ceci ?
PS : j'ai écumé les listes, et il y a des réponses approchantes, mais pas situation identiques (mise en parallèle de 2 voix sur une même Staff)... L'idée serait peut-être de dire, via une fonction Scheme : si ce sont des ledger lines supérieures, en rouge, sinon, en noir. Chapeau bas à la personne qui saurait me faire une petite fonction comme celle-ci !
Merci d'avance !
JMarc, toujours éditeur, mais surtout libraire désormais... et breton, qui plus est !
Bon, je propose ma solution :\version "2.22.2"\layout { #(use-modules (ice-9 match)) \context { \Staff \override LedgerLineSpanner.stencil = #(grob-transformer 'stencil (lambda (grob original) (match-let* ((expr (ly:stencil-expr original)) (X-ext (ly:stencil-extent original X)) (Y-ext (ly:stencil-extent original Y)) (('translate-stencil global-off ('combine-stencil . ledgers)) expr) (new-ledgers (map (lambda (ledger) (match-let ((('translate-stencil (0.0 . ledger-Y-off) ledger-expr) ledger)) (if (positive? ledger-Y-off) `(color ,(css-color "red") ,ledger) ledger))) ledgers)) (new-expr `(translate-stencil ,global-off (combine-stencil . ,new-ledgers)))) (ly:make-stencil new-expr X-ext Y-ext)))) }}\relative \new Staff << { e''8 g c e g e c g e } \\ { b,8 a g f g a b c d } >>Je tiens tout de même à insister sur deux points :1. Ne dites à personne que je vous ai montré ce genre de truc.Si Jean Abou Samra apprenait que je poste des hacks pareils,il m'en voudrait.2. Veuillez garder en tête que ce code est fortement dépendantde détails internes, et qu'à ce titre il est possible qu'ilne fonctionne plus dans une version ultérieure (même si, apriori, il ne devrait pas être trop difficile de l'adapter).Cordialement,Jean
|