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

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

Re: En rouge et noir, à quand la trêve de douceur ?


From: Jean Abou Samra
Subject: Re: En rouge et noir, à quand la trêve de douceur ?
Date: Fri, 6 May 2022 14:52:18 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1



Le 06/05/2022 à 12:02, Editions IN NOMINE a écrit :

Mmmm, je creuse sans tout comprendre, et je tombe sur une bizarre anomalie avec le snippet en pied de message. Vraiment désolé de vous embêter encore avec ça...

Tout fonctionne comme voulu si \up est en \relative c', mais ça plante si c'est en \relative c, avec le message : Dessin des systèmes...<unnamed port>: In procedure scm-error in expression (scm-error (quote misc-error) #f ...): <unnamed port>: no matching clause for ()

J'avoue humblement sécher au beau soleil de Bretagne... et fais appel, du fin fond des terres morbihannaises, aux cadors schemiesques !

PS : pour celles et ceux qui se diraient "Mais que diable nous fait-il transpirer gras avec un exemple pareil, il a qu'à tout mettre sur une seule voix !", petite explication. Il s'agit d'écrire pour pédalier d'orgue, la tongue droite en rouge et stemUp, la tongue gauche en noir et stemDown.

PS' : j'ai essayé de mettre tout sur la même voix en faisant \stemUp et \stemDown, ça plante itou, mais peut-être avec un message plus explicite. L'anomalie concerne la dernière noire de la mesure 2. Ça sent le plantage de calcul en dessous d'une certaine note dans le layout, non ? Lily ne parvient pas récupérer expr (ly:stencil-expr original) ?

Dessin des systèmes...C:/(...)/test.ly:12:22: In procedure ly:stencil-expr in expression (ly:stencil-expr original): C:(...)test.ly:12:22: Wrong type argument in position 1 (expecting Stencil): ()




Bonjour,

Pour moi l'exemple fonctionne ; par contre, je me rends compte
effectivement que ça plante en enlevant les notes avec lignes
supplémentaires car j'ai oublié le cas où il n'y a pas de ligne
supplémentaire du tout (le stencil n'est alors pas le même).
Voici un snippet corrigé :

\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)))
                (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)))
      }
    }

up = \relative c'{\clef bass \voiceOne \time 3/4 \key e \minor
  s4 %fis4 g
  s2 b,4 s fis s s2 fis4
  }

down = \relative c{ \voiceTwo
    e4 s2 c2 s4 ais s a g2 s4
}

\score {
  \new Staff <<
    \new Voice{\up}
    \new Voice{\down}
  >>
  \lay
  }



Cordialement,
Jean





reply via email to

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