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

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

Re: Passage en 2.23 encore un problème scheme


From: Gilles Thibault
Subject: Re: Passage en 2.23 encore un problème scheme
Date: Fri, 22 Jul 2022 18:06:04 +0200
User-agent: Webmail Free/1.3.3

j'utilise fréquemment des parenthèses ouvrantes et fermantes pour
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



reply via email to

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