Ajouter un chiffrage entre parenthèses après un \compoundMeter

Bonjour, !

Je cherche à préciser un chiffrage de mesure après une indication complexe.

Ainsi, l'original indique 5/4, et je souhaite plutôt afficher \compoundMeter #'((6 8) (2 4)) puis préciser que le 5/4 figure sur l'original. J'ai essayé une note de bas de page avec un \score minimal, mais je ne suis pas trop satisfait du résultat (plusieurs prennent trop de place en bas de certaines parties). En revanche, le rendu proposé par http://lsr.di.unimi.it/LSR/Item?id=782 me conviendrait davantage, mais...

dans la fonction :

#(define ((time-parenthesized-time up down upp downp) grob)
(grob-interpret-markup grob
(markup #:override '(baseline-skip . 0) #:number
(#:line (
(#:center-column (up down))
#:vcenter "("
(#:center-column (upp downp))
#:vcenter ")" )))))

je ne sais pas remplacer up down par \compoundMeter... pour obtenir, dans cet exemple, le chiffrage 6/8+2/4 suivi par (5/4) .

Quelqu'un pour m'aider ?

Cordialement,
Frédéric

Voici une possibilité qui s'inspire du code de
\compoundMeter :

\version "2.22.1"

#(set-object-property! 'inter-time-signature-padding 'backend-type? number?)
#(set-object-property! 'angularity 'backend-type? number?)

twoCompoundMeters =
#(define-music-function (args args2) (pair? pair?)
(let* ((mlen (calculate-compound-measure-length args))
(beat (calculate-compound-base-beat args))
(beatGrouping (calculate-compound-beat-grouping args))
(timesig (cons (ly:moment-main-numerator mlen)
(ly:moment-main-denominator mlen))))
#{
\once \override Timing.TimeSignature.stencil =
#(lambda (grob)
(grob-interpret-markup grob
(make-concat-markup
(list
(make-compound-meter-markup args)
(make-hspace-markup
(ly:grob-property grob 'inter-time-signature-padding 0))
(make-parenthesize-markup
(make-compound-meter-markup args2))))))
\set Timing.timeSignatureFraction = #timesig
\set Timing.baseMoment = #beat
\set Timing.beatStructure = #beatGrouping
\set Timing.beamExceptions = #'()
\set Timing.measureLength = #mlen
#}))

\layout {
% Valeurs utiles à ajuster
\override Staff.TimeSignature.inter-time-signature-padding = 1.3
\override Staff.TimeSignature.thickness = 1
\override Staff.TimeSignature.width = 0.25
\override Staff.TimeSignature.angularity = 0
}

{
\twoCompoundMeters #'((6 8) (2 4)) #'(5 4)
c
}

Cordialement,
Jean

···

Le 01/09/2021 à 16:54, F. Moinard a écrit :

Bonjour, !

Je cherche à préciser un chiffrage de mesure après une indication complexe.

Ainsi, l'original indique 5/4, et je souhaite plutôt afficher \compoundMeter #'((6 8) (2 4)) puis préciser que le 5/4 figure sur l'original. J'ai essayé une note de bas de page avec un \score minimal, mais je ne suis pas trop satisfait du résultat (plusieurs prennent trop de place en bas de certaines parties). En revanche, le rendu proposé par http://lsr.di.unimi.it/LSR/Item?id=782 me conviendrait davantage, mais...

dans la fonction :

#(define ((time-parenthesized-time up down upp downp) grob)
(grob-interpret-markup grob
(markup #:override '(baseline-skip . 0) #:number
(#:line (
(#:center-column (up down))
#:vcenter "("
(#:center-column (upp downp))
#:vcenter ")" )))))

je ne sais pas remplacer up down par \compoundMeter... pour obtenir, dans cet exemple, le chiffrage 6/8+2/4 suivi par (5/4) .

Quelqu'un pour m'aider ?

Cordialement,
Frédéric

Bonsoir,

···

Le 01/09/2021 à 20:06, Jean Abou Samra a écrit :

(...)

Voici une possibilité qui s'inspire du code de
\compoundMeter :

\version "2.22.1"

#(set-object-property! 'inter-time-signature-padding 'backend-type? number?)
#(set-object-property! 'angularity 'backend-type? number?)

twoCompoundMeters =

(...)

Et c'est spectaculairement impressionnant et parfait !

Merci beaucoup :slight_smile:

Bonne soirée,
Frédéric