Subject: de la bonne façon de créer un divisi de violons

From: Olivier CHARADE <[email-masked]>
Date: Mon, 19 Dec 2022 16:53:55 +0100

Bonjour,

Après avoir lu la page 
http://lilypond.org/doc/v2.23/Documentation/notation/modifying-single-staves#index-divisi_002c-portees 
(trouvée grâce à l'index que m'a signalé Jean et qui était trop en 
dessous du bas de mon écran pour que je le trouve tout seul), j'ai 
conclu que la façon la plus simple de lancer le divisi était de créer 
une portée d'ossia sur la période voulue.
Ca a très bien marché pour les premiers violons.

Je fais la même chose avec les seconds violons, qui partent en divisi au 
même endroit que les premiers et là, surprise:
Le divisi des premiers apparaît sous la portée des seconds (divisi du 
haut), suivi en dessous par le divisi bas des seconds.

A la réflexion, ce n'est pas étonnant puisque le \new Staff des divisi 
apparaît après la création des portées "simples" des deux pupitres de 
violons.

Je viens d'essayer de mettre chaque pupitre de violons dans un 
GrandStafff pour lui tout seul, mais le divisi enjambe quand même le voisin.

Là, je sèche...

Olivier

---

From: Xavier Scheuer <[email-masked]>
Date: Mon, 19 Dec 2022 21:16:05 +0100

Bonjour,

Je n'arrive pas à la même conclusion et utilise pour mes
divisi.le Keep_alive_together_engraver avec remove-layer et la propriété
keepAliveInterfaces comme expliqué sur cette même page.
Le résultat est juste parfait.

> haut), suivi en dessous par le divisi bas des seconds.

Difficile de suivre sans exemple de code minimal.
Vous utilisez alignAboveContext (ou alignBelowContext) comme montré dans
certains exemples sur cette même page ?

Cordialement,
Xavier

-- 
Xavier Scheuer <[email-masked]>

---

From: Olivier Charade <[email-masked]>
Date: Tue, 20 Dec 2022 09:04:09 +0100

Merci Xavier,

J'avais commencé par essayer cette méthode mais je n'étais arrivé à 
rien, sans doute parce que j'ai voulu l'appliquer directement à ma 
partition au lieu de commencer par recopier l'exemple pour jouer avec.

En partant de l'exemple, ça commence à ressembler et je comprends un peu 
plus ce que font les diverses commandes; je me demande quand même si ça 
peut vraiment répondre à ce que je veux faire.

Dans la "variation" ci-dessous sur l'exemple proposé, je vois que la 
portée supplémentaire du divisi apparaît dès le début du système où le 
divisi commence, alors que les mesures sont vides. Et ajouter un \break 
juste avant peut mal tomber selon ce qui précède.
A l'inverse, je voudrais que cette portée disparaisse de la même façon 
quand le pupitre redevient uni.
C'est ce qui m'avait fait basculer vers la portée d'ossia, avant que je 
ne rajoute le reste du quatuor en dessous. Je trouvais également plus 
intuitif de gérer deux portées au lieu de jouer à cache cache avec trois.

Je prends toutes les propositions

Olivier

\version "2.23.8"
\layout {
   short-indent = 2\cm
   indent = 3\cm
   \context {
     \Staff
     keepAliveInterfaces = #'()
   }
}

violIa = {
   \repeat unfold 48 { d'4 }
   \unset Staff.keepAliveInterfaces
   <d' g''>2
   \repeat unfold 14 { d'4 }
   \set Staff.keepAliveInterfaces = #'()
   \repeat unfold 24 { d'4 }
   \bar "|."
}

violIb = {
   \repeat unfold 48 { s4 }
   <g d'>2
   \repeat unfold 14 { g4 }
   \repeat unfold 24 { s4 }
   \bar "|."
}

\new StaffGroup \with { \consists Keep_alive_together_engraver } <<
   \new Staff \with {
     instrumentName = "Violins I"
     shortInstrumentName = "V I"
     \override VerticalAxisGroup.remove-layer = 2
   } \violIa
   \new Staff \with {
     instrumentName = "Violin I"
     shortInstrumentName = "V I"
     \RemoveAllEmptyStaves
     \override VerticalAxisGroup.remove-layer = 1
   } \violIa
   \new Staff \with {
     instrumentName = "Violin I"
     shortInstrumentName = "V I"
     \RemoveAllEmptyStaves
     \override VerticalAxisGroup.remove-layer = 1
   } \violIb

Le 19/12/2022 à 21:16, Xavier Scheuer a écrit :
> On Mon, 19 Dec 2022 at 16:54, Olivier CHARADE <[email-masked] 
> <mailto:[email-masked]>> wrote:
>  >
>  > Bonjour,
>  >
>  > Après avoir lu la page
>  > 
> http://lilypond.org/doc/v2.23/Documentation/notation/modifying-single-staves#index-divisi_002c-portees <http://lilypond.org/doc/v2.23/Documentation/notation/modifying-single-staves#index-divisi_002c-portees>
> Xavier Scheuer <[email-masked] <mailto:[email-masked]>>
> 

-- 
Olivier Charade
Directeur adjoint de la Division Technique de l'INSU pour le site de Meudon
Coordinateur technique RESIF
Responsable technique des parcs géophysiques de l'INSU
Division Technique de l'INSU
UAR 855 du CNRS
1 place Aristide Briand
92195 Meudon Cedex
France
téléphone: +33(0)1 45 07 51 82
cellulaire: +33(0)6 11 39 09 59
télécopie:  +33(0)1 45 07 51 40
http://gpsmob.resif.fr/
http://gpscope.dt.insu.cnrs.fr/

---

From: Xavier Scheuer <[email-masked]>
Date: Tue, 20 Dec 2022 09:47:14 +0100

> juste avant peut mal tomber selon ce qui précède.

Salut,

Oui mais non.
violIb doit contenir également les notes communes avec violIa (voir votre
exemple adapté ci-dessous).
Si vous indiquez des silences invisibles (s4) la portée apparaîtra
effectivement comme vide avant le divisi.

Pour moi il faut vraiment s'imaginer les musiciens dans l'orchestre : qui
joue quoi.
Ainsi violIa reprend toutes les notes jouées par les musiciens assis à
droite au pupitre de premier violon, violIb toutes les notes jouées par les
musiciens assis à gauche au pupitre de premier violon.
Et les \unset Staff.keepAliveInterfaces et \set Staff.keepAliveInterfaces =
#'() permettent juste de dire "ici c'est divisi (différentes portées)" ou
"ici c'est unison (une seule portée)" et LilyPond se charge de compléter
les débuts et fins de ligne avant et après le passage divisi.

> intuitif de gérer deux portées au lieu de jouer à cache cache avec trois.

Maintenant si on veut avoir des portées qui apparaissent en cours de ligne
(mais je n'ai jamais vu cela dans une "vraie partition") on peut utiliser
les portées d'ossia (avec alignAboveContext ou alignBelowContext comme dit
précédemment).

%%%%
\layout {
  short-indent = 2\cm
  indent = 3\cm
  \context {
    \Staff

violIa = {

violIb = {

\score {
  \new StaffGroup = "violinOneStaffgroup" \with {
    \consists Keep_alive_together_engraver
  } <<
    \new Staff = "violinOneStaff" \with {
      instrumentName = "Violins I"
      shortInstrumentName = "V I"
      \override VerticalAxisGroup.remove-layer = 2
    } {
      \violIa
    }
    \new Staff = "violinOneUpStaff" \with {
      instrumentName = "Violin Ia"
      shortInstrumentName = "V Ia"
      \RemoveAllEmptyStaves
      \override VerticalAxisGroup.remove-layer = 1
    } {
      \violIa
    }
    \new Staff = "violinOneDownStaff" \with {
      instrumentName = "Violin Ib"
      shortInstrumentName = "V Ib"
      \RemoveAllEmptyStaves
      \override VerticalAxisGroup.remove-layer = 1
    } {
      \violIb
    }
}
%%%%

Cordialement,
Xavier

---

From: Olivier Charade <[email-masked]>
Date: Wed, 21 Dec 2022 10:47:17 +0100

Encore merci Xavier.
J'ai réussi à obtenir la présentation que je voulais et j'ai compris ce 
que faisait la solution proposée dans la documentation.
Suite à vos remarques j'ai exploré tout ce qui traînait comme conducteur 
chez moi et effectivement, la séparation en deux portées fait toujours 
toute la largeur de la page même si les voix sont identiques sur une 
partie de la ligne.
Du coup je bascule sur cette présentation-là.
Content d'avoir encore appris quelque chose.
Bonnes fêtes à tous,
Olivier