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: Ya Gloops
Subject: Re: compoundMeter et Time signature style with note in the denominator
Date: Wed, 9 Nov 2022 19:21:23 +0000 (UTC)

Enorme !!! 
On a beaucoup de chance de t'avoir sur la liste française Jean !!!
Merci beaucoup...






Le mercredi 9 novembre 2022 à 18:53:39 UTC+1, Jean Abou Samra 
<jean@abou-samra.fr> a écrit : 





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




reply via email to

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