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

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

Re: En rouge et noir


From: Jean Abou Samra
Subject: Re: En rouge et noir
Date: Fri, 17 Jun 2022 00:00:13 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1



Le 14/06/2022 à 18:22, Jean Abou Samra a écrit :
Bonjour Jean-Marc,


Le 14/06/2022 à 17:37, Librairie Les hirondelles a écrit :

Cher Jean (Gloire à son nom pour les siècles à venir), chère liste,

Je me cogne désormais au dernier souci suivant :

notes = \relative c{ \clef bass \time 3/4 \key e \minor
  e4 fis g c,2 b4 ais fis' a, g2 fis4
}

\score {
      \new Staff {\notes}
      \lay %%% = \layout{... tout le code créé par Jean (mille ans de gloire sur sa descendance) ...}
}

me renvoie le code d'erreur suivant : "Dessin des systèmes...<unnamed port>: In procedure scm-error in expression (scm-error (quote misc-error) #f ...):<unnamed port>: no matching clause for ()"

Tout est Ok si on met \relative c'{...}, ou même si seule la première note est octaviée (e'4 fis, g...). Je comprends pas tout, mais il semble que le fonctionnement de \lay soit lié à la présence de ledger-lines sur la première note... S'il n'y en a pas, couik : pas content.



Bizarre, pour moi tout fonctionne… Le code complet que j'ai testé :

\version "2.23.9"

lay = \layout {
  #(use-modules (ice-9 match))
  \context {
    \Staff
    \override LedgerLineSpanner.stencil =
      #(grob-transformer 'stencil
        (lambda (grob original)
          (if (ly:stencil? original)
              (let ((expr (ly:stencil-expr original))
                    (X-ext (ly:stencil-extent original X))
                    (Y-ext (ly:stencil-extent original Y)))
                (match expr
                  (('translate-stencil global-off ('combine-stencil . ledgers))
                   (let* ((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)))
                  (() original)))
              original)))
      }
    }

\score {
  \relative c{ \clef bass \time 3/4 \key e \minor
    e4 fis g c,2 b4 ais fis' a, g2 fis4
  }
  \lay
}


Et tout va bien aussi en 2.22. Quelle version utilises-tu ? Tu es
sûr que tu as bien pris le snippet avec la correction que j'ai
faite ?



Jean-Marc m'a donné un exemple en privé. C'est bête, il y a un
cas particulier s'il n'y a qu'une seule ligne supplémentaire…
La correction :


\version "2.22.2"

lay = \layout {
  #(use-modules (ice-9 match))
  \context {
    \Staff
    \override LedgerLineSpanner.stencil =
      #(grob-transformer 'stencil
        (lambda (grob original)
          (if (ly:stencil? original)
              (let ((expr (ly:stencil-expr original))
                    (X-ext (ly:stencil-extent original X))
                    (Y-ext (ly:stencil-extent original Y)))
                (define (doit x)
                  (match x
                    (('translate-stencil global-off ('combine-stencil . ledgers))
                     (let* ((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)))
                    ((translate-stencil global-off lonely-stil)
                     (doit `(translate-stencil ,global-off (combine-stencil ,lonely-stil))))
                    (() original)))
                (doit expr))
              original)))
      }
    }

\score {
  { c' }
  \lay
}

\score {
  { c''' }
  \lay
}

\score {
  { <c c'''> }
  \lay
}


Cordialement,
Jean





reply via email to

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