Subject: Re: Modification d'armure et/ou de métrique dans toutes les portées

From: Jean Abou Samra <[email-masked]>
Date: Sun, 31 Jul 2022 17:42:10 +0200

> Le 31 juil. 2022 à 14:04, Vincent Gay <[email-masked]> a écrit :
>  Hello,
> 
> je lis sur cette page :
> \numericTimeSignature et \defaultTimeSignature s’appliquent désormais en même temps à toutes les portées – plus précisément à toutes les portées d’un même contexte Timing – afin de correspondre au comportement de \time.
> 
> Qu'est-ce que cela veut-il dire ? Peut-on vraiment  spécifier (modifier ?) la métrique dans toutes les portées d'une partition ?  Tout ce que je trouve au sujet du contexte Timing c'est cette page. 

Essaie l’exemple

<<
  \new Staff { \time 2/2 \numericTimeSignature c' }
  \new Staff { c' }

Tu constateras que le \time s’applique aux deux portées. Tu utilises une variable \global, mais si je ne m’abuse tu as aussi une variable pour les sauts de ligne, que tu mets dans un DevNull. Grâce au fait que \time s’applique à toutes les portées, tu pourrais tout aussi bien mettre les \time là-dedans (contrairement aux \key qui ne s’appliquent qu’à leur portée, logique puisqu’il est fréquent d’avoir des instruments transpositeurs avec leur propre armure, alors qu’il est beaucoup moins fréquent d’avoir des portées avec des chiffrages différents, mais j’y reviens).

Par contre, en 2.22, le \numericTimeSignature ne s’applique qu’à sa propre portée, donc dans l’exemple ci-dessus, on se retrouve avec une portée du haut en 2/2 et une portée du bas en C barré.

Ceci n’étant pas très logique, cela a été changé en 2.23. De même que \time, \numericTimeSignature s’applique désormais par défaut à toutes les portées.

Pourquoi « par défaut », me demandes-tu. Parce que LilyPond prend aussi en charge la notation polymétrique, avec des chiffrages différents selon la portée. Dans ce cas assez particulier, il faut évidemment éviter qu’un \time ne s’applique à toutes les portées. LilyPond l’évite si on le lui demande gentiment, en plaçant dans le layout un \enablePolymeter (commande que j’ai ajoutée en 2.23, en 2.22 il faut déplacer le Timing_translator et le Default_bar_line_engraver à la main). Dans ce cas, \time et \numericTimeSignature s’appliquent seulement dans leur portée.

Et c’est là qu’intervient le fameux Timing. C’est en fait un alias de contexte ajouté soit à Score, dans le cas normal, soit à Staff et assimilés (RhythmicStaff, MensuralStaff, …), dans le cas polymétrique. En fait, la définition de \numericTimeSignature dans le code source est aussi simple que ceci :

numericTimeSignature = \override Timing.TimeSignature.style = #'numbered

Et en fonction du cas, polymétrique ou non, cela s’applique au niveau Score ou Staff. Toi aussi, tu peux définir une commande

porteeRouge = \override Staff.StaffSymbol.color = "red"

et l’appliquer non seulement dans un Staff, mais aussi dans un RhythmicStaff par exemple, puisque RhythmicStaff possède l’alias Staff. Et si tu veux le faire dans un contexte qui n’a pas l’alias, rien ne t’empêche de l’ajouter avec la syntaxe

\layout {
  \context {
    \LeContexte
    \alias Staff
  }
}

Voilà, j’espère que c’est plus clair pour toi.

Cordialement,
Jean

> À ce jour j'utilise une variable global (ex: global = { \key f \major \time 4/4 } ) que j’intègre par la suite dans mes différentes variables musicales. Ça gagne du temps pour pour l'initialisation dans la mesure ou j'utilise des modèles dans lesquels ces variable sont préenregistrées (ex : Basse =  \relative c {  \global } ) mais c'est peu opérant pour les modification en cours de partie.
> 
> Bon dimanche
> -- 
> Vincent Gay
> Envoyé depuis mon saxo-phone :)
> https://myrealbook.vintherine.org/ - http://photos.vintherine.org/

---

From: Vincent Gay <[email-masked]>
Date: Sun, 31 Jul 2022 18:44:38 +0200

Le 31/07/2022 à 17:42, Jean Abou Samra a écrit :
> Tu constateras que le \time s’applique aux deux portées. Tu utilises 
> une variable \global, mais si je ne m’abuse tu as aussi une variable 
> pour les sauts de ligne, que tu mets dans un DevNull. Grâce au fait 
> que \time s’applique à toutes les portées, tu pourrais tout aussi bien 
> mettre les \time là-dedans (contrairement aux \key qui ne s’appliquent 
> qu’à leur portée, logique puisqu’il est fréquent d’avoir des 
> instruments transpositeurs avec leur propre armure, alors qu’il est 
> beaucoup moins fréquent d’avoir des portées avec des chiffrages 
> différents, mais j’y reviens).

Merci pour ces explications. Effectivement j'utilise une variable pour 
les sauts de ligne, je vais donc y mettre la métrique. Concernant les 
armures ton argument ne tient qu'à moitié car j'imagine que tout le 
monde écrit en Ut et transpose, on pourrait alors utiliser les mêmes 
arguments de transposition pour l'armure. Certes il existe de la 
poly-tonalité (Darius Milhaud, Charles Yves) mais il pourrait y avoir 
\enable \polyTone ;-) Ou tout simplement ne rien indiquer de la sorte 
dans DevNull.

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 31 Jul 2022 19:36:18 +0200

> Le 31 juil. 2022 à 18:44, Vincent Gay <[email-masked]> a écrit :
> 
> Merci pour ces explications. Effectivement j'utilise une variable pour les sauts de ligne, je vais donc y mettre la métrique. Concernant les armures ton argument ne tient qu'à moitié car j'imagine que tout le monde écrit en Ut et transpose,

Je n’en suis pas si sûr :-) Honnêtement, si tu me demandais de recopier la partition d’une symphonie, je ne m’embêterais pas et saisirais les instruments transpositeurs dans la tonalité transposée, tels que je les lis. Je sais transposer, ce n’est pas la question, mais je n’ai pas (je l’avoue) un automatisme assez fluide pour pouvoir saisir à la même vitesse en transposant à la volée. Éventuellement, après avoir tout recopié et relu, je passerais tout en ut avec la fonction de transposition du code de Frescobaldi, en rajoutant à ce moment-là le \transpose.

> on pourrait alors utiliser les mêmes arguments de transposition pour l'armure. Certes il existe de la poly-tonalité (Darius Milhaud, Charles Yves) mais il pourrait y avoir \enable \polyTone ;-) Ou tout simplement ne rien indiquer de la sorte dans DevNull.

Je comprends ton point de vue sur la transposition, mais celui des créateurs de LilyPond était un peu différent. Tu vois la transposition comme une donnée de la portée. Or \transpose n’est pas limitée à cela, elle peut transposer un fragment de musique absolument quelconque, y compris la moitié de la pièce seulement, ou bien une seule des voix s’il y en a plusieurs. On peut écrire des choses comme

<< { c' } \\ \transpose c bes { d' } >>

Après tout, ce n’est pas si absurde. Par exemple si tu saisis une fugue, tu peux écrire une seule fois le sujet, et transposer la variable dès que tu en as besoin dans une autre tonalité. Mais dans ces conditions, impossible de déterminer quelle est la transposition d’une portée, et donc de savoir comment transposer le \key pour une portée donnée.

Amicalement,
Jean

---

From: Vincent Gay <[email-masked]>
Date: Sun, 31 Jul 2022 19:39:58 +0200

Le 31/07/2022 à 19:36, Jean Abou Samra a écrit :
> Tu vois la transposition comme une donnée de la portée. Or \transpose n’est pas limitée à cela, elle peut transposer un fragment de musique absolument quelconque,

C'est incontestablement l'argument qui tue. Dommage.