Subject: Temps compose

From: Yoann LE BARS <[email-masked]>
Date: Sun, 3 Nov 2019 19:16:18 +0100

Salut à tous !

	Je dois réaliser des mesures en 14/8, qui est la composition d’un 6/8
avec un 4/4. Les six premières croches doivent donc être rassemblées par
3, les huit suivantes par deux. Également, la première fois qu’apparaît
la signature, elle doit être indiquée sous cette forme :

14/8 = 6/8 + 4/4

	Ensuite, à chaque fois ne doit apparaître que 14/8.

	J’ai cette solution (voir http://lilybin.com/u2hcit/1) :

\version "2.18.2"

\score {
  \new Staff {
    \relative c' {
      \time #'(3 3 2 2 2 2) 14/8
      c8 d e c d e c d e f c d e f
    }
  }
}

	C’est presque ce que je veux, il manque juste 14/8 = 6/8 + 4/4 la
première fois.

	J’ai une deuxième solution (voir http://lilybin.com/mj6elb/1) :

\version "2.18.2"

\score {
  \new Staff {
    \relative c' {
      \compoundMeter #'((6 8) (4 4))
      c8 d e c d e c d e f c d e f
    }
  }
}

	Cependant, je n’ai pas 14/8 = 6/8 + 4/4 et à chaque fois apparaît
6/8 + 4/4, plutôt qu’une seule fois.

	Bon, je ne sais pas si c’est très clair, mais peut être quelqu’un
a-t-il une solution à me proposer.

	À bientôt.

-- 
Yoann LE BARS
http://le-bars.net/yoann/
Diaspora* : [email-masked]

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Sun, 3 Nov 2019 19:21:55 +0100

Oui, pas sûr de bien comprendre, il suffit de combiner tes deux solutions
non ?

\version "2.18.2"

\score {
  \new Staff {
    \relative c' {
      \compoundMeter #'((6 8) (4 4))
      \time #'(3 3 2 2 2 2) 14/8
      \repeat unfold 5 { c8 d e c d e c d e f c d e f }
    }
  }
}

Cordialement,
Pierre

---

From: Yoann LE BARS <[email-masked]>
Date: Sun, 3 Nov 2019 19:32:03 +0100

Salut à tous !

	Oubliez cette histoire de première fois, c’est juste un problème de
changement de signature, mais je sais quoi faire à partir de la deuxième
fois.

Le 03/11/2019 à 19:21, Pierre Perol-Schneider a écrit :
> Oui, pas sûr de bien comprendre, il suffit de combiner tes deux
> solutions non ?

	Dans ce cas, n’apparaît que 6/8 + 4/4 et non pas
14/8 = 6/8 + 4/4.

	Pour le dire plus simplement, je cherche à faire apparaître comme
signature rythmique la formule 14/8 = 6/8 + 4/4.

	À bientôt.

---

From: Olivier Miakinen <[email-masked]>
Date: Sun, 3 Nov 2019 21:37:45 +0100

> signature rythmique la formule 14/8 = 6/8 + 4/4.

Avec de l'aide, j'avais fait un time-signature composé d'un C barré et
d'un 12/8 pour la page suivante :
https://fr.wikipedia.org/wiki/Pr%C3%A9lude_et_fugue_en_r%C3%A9_majeur_(BWV_874)#Pr%C3%A9lude

En m'inspirant de cette solution, j'ai une solution qui fonctionne
presque, sauf que le = et le + sont moches et non centrés :

#(define ((double-time-signature) grob)
   (grob-interpret-markup grob
      (markup #:override '(baseline-skip . 0) #:number
        (#:line (
                  (#:center-column ("14" "8"))
                  (#:center-column (" " "="))
                  (#:center-column ("6" "8"))
                  (#:center-column (" " "+"))
                  (#:center-column ("4" "4"))
                 )))))

et

  \override Staff.TimeSignature.stencil = #(double-time-signature)

---

From: Olivier Miakinen <[email-masked]>
Date: Sun, 3 Nov 2019 21:56:32 +0100

>                   (#:center-column ("4" "4"))

J'ai trouvé mieux en lisant le fichier
/usr/share/lilypond/2.18.2/scm/time-signature-settings.scm :

#(define ((double-time-signature) grob)
   (grob-interpret-markup grob
      (markup #:override '(baseline-skip . 0) #:number
        (#:line (
                  (#:center-column ("14" "8"))
                  (make-vcenter-markup "=")
                  (#:center-column ("6" "8"))
                  (make-vcenter-markup "+")
                  (#:center-column ("4" "4"))
                 )))))

Maintenant ils sont centrés, mais toujours aussi moches.

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Sun, 3 Nov 2019 23:39:54 +0100

Bonsoir Olivier,
C'est moche parce qu'ici les signes "=" et "+" sont considérés comme des
"#:number".
Essaie:

#(define ((double-time-signature) grob)
   (grob-interpret-markup grob
      (markup #:override '(baseline-skip . 0)
        (#:line ((#:center-column (#:number "14" #:number "8"))
                 (#:bold (make-vcenter-markup "="))
                 (#:center-column (#:number "6" #:number "8"))
                 (#:bold (make-vcenter-markup "+"))
                 (#:center-column (#:number "4" #:number "4")))))))

Cordialement,
Pierre

Le dim. 3 nov. 2019 à 22:09, Olivier Miakinen <[email-masked]> a

---

From: Yoann LE BARS <[email-masked]>
Date: Mon, 4 Nov 2019 00:12:10 +0100

Salut à tous !

> C'est moche parce qu'ici les signes "=" et "+" sont considérés comme des

	Tout rassemblé, cela donne (voir http://lilybin.com/hnmfg6/4) :

\version "2.18.2"

\score {
  \new Staff {
    \once \override Staff.TimeSignature.stencil = #(double-time-signature)
    \relative c' {
      \time #'(3 3 2 2 2 2) 14/8
      \repeat unfold 5 { c8 d e c d e c d e f c d e f }
    }
  }
}

	Ce qui donne exactement ce qu’il me faut. Merci.

	À bientôt.

---

From: Olivier Miakinen <[email-masked]>
Date: Mon, 4 Nov 2019 00:14:35 +0100

>                  (#:center-column (#:number "4" #:number "4")))))))

Splendide !

---

From: Olivier Miakinen <[email-masked]>
Date: Mon, 4 Nov 2019 00:19:20 +0100

Le 04/11/2019 00:12, Yoann LE BARS a écrit :
> [...]
>     [...]

Note que le nom « double-time-signature » n'est plus très approprié, et
que si tu relis ce code plus tard tu te demanderas peut-être pourquoi
il a été appelé comme ça...

Mais je te laisse choisir toi-même le nom qui te conviendra le mieux.
Il suffit que ce soit le même dans la définition et lors de l'appel.

---

From: Yoann LE BARS <[email-masked]>
Date: Mon, 4 Nov 2019 00:25:03 +0100

Salut à tous !

> il a été appelé comme ça...

	Très juste. J’ai donc changé le nom, même si le nouveau n’est pas
complétement parlant (je n’ai pas trouvé mieux). Voici un exemple
complet, qui montre également l’intérêt du « \once » (voir
http://lilybin.com/hnmfg6/5) :

\version "2.18.2"

#(define ((signature-composee) grob)

\score {
  \new Staff {
    \once \override Staff.TimeSignature.stencil = #(signature-composee)
    \relative c' {
      \time #'(3 3 2 2 2 2) 14/8
      \repeat unfold 5 { c8 d e c d e c d e f c d e f } \bar "||"
      \time 9/8
      \repeat unfold 5 {c d e c d e c d e} \bar "||"
      \time #'(3 3 2 2 2 2) 14/8
      \repeat unfold 5 { c8 d e c d e c d e f c d e f }
    }
  }
}

	À bientôt.

---

From: Valentin Villenave <[email-masked]>
Date: Mon, 4 Nov 2019 00:41:12 +0100

On 11/4/19, Yoann LE BARS <[email-masked]> wrote:
>  Voici un exemple complet

Et on peut même simplifier encore un peu plus la syntaxe, que ce soit
dans la définition du markup, dans l’invocation de la variable ou dans
la commande \time :

\version "2.19.83" % pas avec 2.18, désolé

#(define compound-time-signature
   (lambda (grob)
     (grob-interpret-markup grob #{
       \markup \override #'(baseline-skip . 0) {
         \center-column {\number 14 \number 8}
         \bold \vcenter =
         \center-column {\number 6 \number 8}
         \bold \vcenter +
         \center-column {\number 4 \number 4}
       } #})))

{
  \once \override Staff.TimeSignature.stencil = \compound-time-signature
  \time 3,3,4,4 14/8
  b8 b b b b b b b b b b b b b
}

%%%

V.