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

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

Re: compoundMeter et Time signature style with note in the denominator


From: Jean Abou Samra
Subject: Re: compoundMeter et Time signature style with note in the denominator
Date: Wed, 9 Nov 2022 18:53:38 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.1

Le 09/11/2022 à 16:10, Ya Gloops a écrit :
Bonjour !
Suite à un post sur la liste anglaise, je m'aperçois que le snippet 642 que j'utilise 
ignore le "compoundMeter"...
J'ai essayé pas mal de chose mais je ne trouve pas la solution...
L'idée c'est, dans l'exemple ci-dessous, d'avoir un compoundMeter égal à 1+1+3 
sur une noire et non pas le chiffre 4...
Si quelqu'un à une idée!!!
Musicalement Gilles


Bonjour,

C'est parce que d'une part, le code du snippet ne se prend pas en
compte le cas d'une métrique plus complexe que A/B, d'autre part
parce que \compoundMeter fait elle-même un \override du TimeSignature.stencil,
qui écrase celui de la fonction. Donc, il faut la redéfinir.


\version "2.22.2"

#(define (format-compound-time-sig-note grob elts)
   (cond
    ((number-list? elts)
     (format-compound-time-sig-note grob (list elts)))
    ((number-pair? elts)
     (format-compound-time-sig-note grob (list (list (car elts)
                                                     (cdr elts)))))
    (else
     (grob-interpret-markup
      grob
      (make-line-markup
       (list-join
        (map
         (lambda (elt)
           (let* ((rev (reverse elt))
                  (den (car rev))
                  (nums (reverse (cdr rev))))
             (make-override-markup
              '(baseline-skip . 0)
              (make-center-column-markup
               (list
                (make-line-markup
                 (list-join
                  (map make-number-markup (map number->string nums))
                  "+"))
                (make-note-markup
                 (ly:make-duration (ly:intlog2 den))
                 DOWN))))))
         elts)
        (make-vcenter-markup "+")))))))

#(define-public (format-time-sig-note grob)
   (format-compound-time-sig-note grob (ly:grob-property grob 'fraction)))


\layout {
  \context {
    \Score
    \override TimeSignature.stencil = #format-time-sig-note
  }
}


compoundMeter =
#(let ((default-compoundMeter compoundMeter))
   (define-music-function (args) (pair?)
     #{
       $default-compoundMeter #args
       \once \override Timing.TimeSignature.stencil =
         #(lambda (grob)
            (format-compound-time-sig-note grob args))
     #}))

\score {
  \relative {
    \time 2/4
    \clef "bass"
    c16 d e f g a b c |
    \time 3/4  \clef "treble"
    c16 d e f g a b c d e f g |
    \time 4/4
    c,,16 d e f g a b c d e f g a b c d |
    \compoundMeter #'((1 1 3 4))
    c,,16 d e f g a b c d e f g a b c d e f g a |
    \compoundMeter #'((1 1 4) (1 8))
    c,,,16 d e f g a b c d e
    \compoundMeter #'(1 1 3 4)
    c,16 d e f g a b c d e f g a b c d e f g a |
  }
}





Cordialement,
Jean

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


reply via email to

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