[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
OpenPGP_signature
Description: OpenPGP digital signature