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

From: Ya Gloops <[email-masked]>
Date: Wed, 9 Nov 2022 15:10:48 +0000 (UTC)

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

%% http://lsr.di.unimi.it/LSR/Item?id=642

#(use-modules (ice-9 pretty-print)) \void \displayScheme #(1- (integer-length 4))
#(define-public (format-time-sig-note grob)
   (let* ((frac (ly:grob-property grob 'fraction))
          (num (if (pair? frac) (car frac) 4))
          (den (if (pair? frac) (cdr frac) 4))
          (m (markup #:override '(baseline-skip . 0.5)
                     #:center-column (#:number (number->string num)
                                               #:override '(style . default)
                                               #:note 
                                                 (ly:make-duration (1- (integer-length den)) 0 1)
                                                 DOWN))))
     (grob-interpret-markup grob m)))

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

\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 |
  }
}

---

From: Jean Abou Samra <[email-masked]>
Date: Wed, 9 Nov 2022 18:53:38 +0100

> Si quelqu'un à une idée!!!

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

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

---

From: Ya Gloops <[email-masked]>
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 <[email-masked]> a écrit : 

Bonjour,

\version "2.22.2"

\layout {
  \context {
    \Score

compoundMeter =

\score {
  \relative {
    \time 2/4
    \clef "bass"
    c16 d e f g a b c |
    \time 3/4  \clef "treble"

    c,,,16 d e f g a b c d e

  }
}

Cordialement,
Jean