Subject: Passage en 2.23 encore un problème scheme

From: Vincent Gay <[email-masked]>
Date: Thu, 21 Jul 2022 22:15:01 +0200

Bonsoir à toutes et à tous

j'utilise fréquemment des parenthèses ouvrantes et fermantes pour 
encadre non pas une seule note ou accord mais plusieurs. Par exemple :

ou encore

voici un exemple minimal en 2.22.2

startParenthesis = {
   \once \override ParenthesesItem.stencils = #(lambda (grob)
                                                 (let ((par-list 
(parentheses-item::calc-parenthesis-stencils grob)))
                                                   (list (car par-list) 
point-stencil )))
}
endParenthesis = {
   \once \override ParenthesesItem.stencils = #(lambda (grob)
                                                 (let ((par-list 
(parentheses-item::calc-parenthesis-stencils grob)))
                                                   (list point-stencil 
(cadr par-list))))
}

{  c1 \startParenthesis \parenthesize  c c \endParenthesis \parenthesize   }

mais Jean m'avais signalé que le traitement des parenthèse avait 
beaucoup évolué avec la 2.23, et que parentheses-item n'existe plus. De 
fait cela ne fonctionne plus même après un convert-ly.

Le message de Lily :

> Analyse...
>
> /home/vincent/Nextcloud2/Musique/Lilypond/Essais/Parenthèses.ly:7:19: 
> Erreur : chemin erroné d'accès à la propriété de « grob »
>
> \once \override
>
> ParenthesesItem.stencils = #(lambda (grob)
>
> /home/vincent/Nextcloud2/Musique/Lilypond/Essais/Parenthèses.ly:12:19: 
> Erreur : chemin erroné d'accès à la propriété de « grob »
>
> \once \override
>
> ParenthesesItem.stencils = #(lambda (grob)
>
> /home/vincent/Nextcloud2/Musique/Lilypond/Essais/Parenthèses.ly:17:76: 
> Erreur : syntax error, unexpected '}', expecting \header
>
> { c1 \startParenthesis \parenthesize c c \endParenthesis \parenthesize
>
> }
>
> /home/vincent/Nextcloud2/Musique/Lilypond/Essais/Parenthèses.ly:17:1: 
> Erreur : suite à des erreurs répétées, l'expression musicale sera ignorée
>

Quelqu'un connaît-il une autre solution, ou saurait-il comment faire 
évoluer ceci ?

Merci d'avance

-- 
Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/  -http://photos.vintherine.org/

---

From: Jean Abou Samra <[email-masked]>
Date: Thu, 21 Jul 2022 22:45:35 +0200

Le 21/07/2022 à 22:15, Vincent Gay a écrit :
> beaucoup évolué avec la 2.23, et que parentheses-item n'existe plus. 
> De fait cela ne fonctionne plus même après un convert-ly.
>
> Le message de Lily :
>
>> Analyse...
>>

Bonsoir Vincent,

Est-ce que tu es sûr d'avoir correctement passé convert-ly ?
Il n'y a pas eu une fausse manip en cours de route ? Car pour
moi, la conversion de 2.22 vers 2.23.10 donne :

\version "2.23.11"

startParenthesis = {
   \once \override Parentheses.stencils = #(lambda (grob)
                                                 (let ((par-list 
(parentheses-interface::calc-parenthesis-stencils grob)))
                                                   (list (car par-list) 
point-stencil )))
}
endParenthesis = {
   \once \override Parentheses.stencils = #(lambda (grob)
                                                 (let ((par-list 
(parentheses-interface::calc-parenthesis-stencils grob)))
                                                   (list point-stencil 
(cadr par-list))))
}

En rajoutant à la fin du snippet le « c » qui manque avant
l'accolade fermante, j'ai un résultat qui compile.

Amicalement,
Jean

---

From: Vincent Gay <[email-masked]>
Date: Thu, 21 Jul 2022 22:59:50 +0200

> l'accolade fermante, j'ai un résultat qui compile.
Je suis rouge de honte. Merci Jean.

-- 
Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/ - http://photos.vintherine.org/

---

From: Jean Abou Samra <[email-masked]>
Date: Thu, 21 Jul 2022 23:23:02 +0200

> Je suis rouge de honte. Merci Jean.

Mais non, pas de raison, et puis après tout, ça vaut toujours mieux que 
d'être rouge de chaleur… :-)

---

From: Gilles Thibault <[email-masked]>
Date: Fri, 22 Jul 2022 18:06:04 +0200

> encadre non pas une seule note ou accord mais plusieurs. Par exemple :

Bonjour Vincent.
Pour les séquences d'au moins 2 notes, j'utilise la fonction scheme 
ci-dessous. Bon elle est un peu lourde, mais je pense qu'elle devrait 
marcher aussi pour la 2.23 (non testé).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.22.0"

textSize = #-2

#(define (seq-paren m)
"Parenthesize a sequence of music"
    (define sym1 'start-parenthesize) ; use gensym instead
    (define sym2 'end-parenthesize)
    (define ((stencil-func sym) grob)
      (let ((par-list (parentheses-item::calc-parenthesis-stencils 
grob)))
         (if (eq? sym sym1)
           (list (first par-list) point-stencil)
           (list point-stencil (second par-list)))))
    (let ((notes (extract-named-music m '(EventChord NoteEvent 
RestEvent))))
       (for-each
          (lambda(note sym)
            (let ((tags (ly:music-property note 'tags)))
              (ly:music-set-property! note 'tags (cons sym tags))))
          (list (first notes) (last notes))
          (list sym1 sym2))
       (music-map
         (lambda(evt)
           (let* ((tags (ly:music-property evt 'tags))
                  (syms (or (memq sym1 tags)(memq sym2 tags))))
             (if syms
               (let ((sym (car syms)))
                 (ly:music-set-property! evt 'tags (delq sym tags))
                 #{ \once \override ParenthesesItem.stencils = 
#(stencil-func sym)
                    \once \override ParenthesesItem.font-size = #(+ 
textSize 5)
                    \parenthesize #evt #})
               evt)))
         m)))

seqParen = #(define-music-function (seqMusic)(ly:music?)
    (seq-paren seqMusic))

music = \relative c' { c4 d \seqParen { e f g a } b2 | c1 }

\new Staff \music

-- 
Gilles