[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