[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