Arrangement vertical : encore une petite amélioration

Magnifique, le travail sur l'arrangement vertical dans la version 2.13.47 :
la syntaxe est maintenant bien claire et bien cohérente.
Après avoir modifié le code des fichiers, quelques essais pour retomber sur
les précédents alignements, et hop, tout roule ...

Le temps de calcul semble inférieur à celui des versions précédentes, ce qui
est encore mieux.

Pourtant, il me semble qu'il reste encore une amélioration à apporter : dans
les partitions d'orchestre utilisant le \RemoveEmptyStaffContext, si une
portée (vide) est effacée, la 'strechability' s'évapore elle aussi.

Par exemple, si il y a deux portées pour les cors, la 'strechability' du
second cor est plus importante que pour le premier, ce qui détache bien les
cors des trompettes.

Mais si la portée du second cor est absente, l'intervalle avec la trompette
revient à la valeur standard (à celle du pemier cor).

On pourrait reprendre cet exemple avec le basson, qui sépare les bois des
cuivres. S'il est absent à un moment donné, les bois deviennent équidistants
avec les cuivres.

Je ne suis plus capable de me lancer dans la programmation, mais il me
semble que

#if portée non imprimée
   reporter les propriétés du VerticalAxisGroup de cette portée sur la
précédente
#endIf

devrait suffire - avec évidemment la prise en compte de la récursivité, si
la précédente est également effacée.

C'est loin d'être un simple "YAKA", mais ce serait une cerise sur ce
magnifique gâteau ...

Qu'en pensez-vous ?

Jean-François

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Arrangement-vertical-encore-une-petite-amelioration-tp5982503p5982503.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Chez LilyPond, ce sont les cerises qui comptent !

La première chose à faire serait d'écrire un petit exemple (environ 10 lignes) montrant le problème et de le soumettre à la page suivante : http://code.google.com/p/lilypond/issues/list . Il pourrait déjà y avoir des programmateurs qui travaillent là-dessus.

~Mike

···

On Feb 1, 2011, at 3:26 PM, Seventies wrote:

Magnifique, le travail sur l'arrangement vertical dans la version 2.13.47 :
la syntaxe est maintenant bien claire et bien cohérente.
Après avoir modifié le code des fichiers, quelques essais pour retomber sur
les précédents alignements, et hop, tout roule ...

Le temps de calcul semble inférieur à celui des versions précédentes, ce qui
est encore mieux.

Pourtant, il me semble qu'il reste encore une amélioration à apporter : dans
les partitions d'orchestre utilisant le \RemoveEmptyStaffContext, si une
portée (vide) est effacée, la 'strechability' s'évapore elle aussi.

Par exemple, si il y a deux portées pour les cors, la 'strechability' du
second cor est plus importante que pour le premier, ce qui détache bien les
cors des trompettes.

Mais si la portée du second cor est absente, l'intervalle avec la trompette
revient à la valeur standard (à celle du pemier cor).

On pourrait reprendre cet exemple avec le basson, qui sépare les bois des
cuivres. S'il est absent à un moment donné, les bois deviennent équidistants
avec les cuivres.

Je ne suis plus capable de me lancer dans la programmation, mais il me
semble que

#if portée non imprimée
reporter les propriétés du VerticalAxisGroup de cette portée sur la
précédente
#endIf

devrait suffire - avec évidemment la prise en compte de la récursivité, si
la précédente est également effacée.

C'est loin d'être un simple "YAKA", mais ce serait une cerise sur ce
magnifique gâteau ...

Qu'en pensez-vous ?

Magnifique, le travail sur l'arrangement vertical dans la version 2.13.47 :
la syntaxe est maintenant bien claire et bien cohérente.
Après avoir modifié le code des fichiers, quelques essais pour retomber sur
les précédents alignements, et hop, tout roule ...

Normalement les valeurs par défaut ont été soigneusement choisies
(testées) pour donner les *meilleurs* résultats dans la plupart des cas
(pas facile de déterminer des valeurs d'espacement qui conviennent aussi
bien à des types de partitions très différentes : de la simple chanson +
accompagnement au conducteur d'un orchestre symphonique).
Toutefois si vous avez des remarques/commentaires concernant certains
réglages par défaut qui ne vont vraiment pas, n'hésitez pas à les
communiquer au développeurs.

Le temps de calcul semble inférieur à celui des versions précédentes, ce qui
est encore mieux.

Pourtant, il me semble qu'il reste encore une amélioration à apporter : dans
les partitions d'orchestre utilisant le \RemoveEmptyStaffContext, si une
portée (vide) est effacée, la 'strechability' s'évapore elle aussi.

Par exemple, si il y a deux portées pour les cors, la 'strechability' du
second cor est plus importante que pour le premier, ce qui détache bien les
cors des trompettes.

Mais si la portée du second cor est absente, l'intervalle avec la trompette
revient à la valeur standard (à celle du pemier cor).

On pourrait reprendre cet exemple avec le basson, qui sépare les bois des
cuivres. S'il est absent à un moment donné, les bois deviennent équidistants
avec les cuivres.

Je ne suis plus capable de me lancer dans la programmation, mais il me
semble que

#if portée non imprimée
  reporter les propriétés du VerticalAxisGroup de cette portée sur la
précédente
#endIf

devrait suffire - avec évidemment la prise en compte de la récursivité, si
la précédente est également effacée.

C'est loin d'être un simple "YAKA", mais ce serait une cerise sur ce
magnifique gâteau ...

Qu'en pensez-vous ?

Je pense que tu n'as pas utilisé
  StaffGrouper #'staffgroup-staff-spacing
pour espacer tes différents groupes, si ?
Cf. doc NR 4.4.1 Espacement vertical au sein d’un système >
Espacement de portées regroupées

Le StaffGrouper a justement été créé pour régler ces cas de figure.
Il gère l'espacement au sein de différents "groupes" (sous-groupes) mais
aussi entre ce groupe (sous-groupe) et la portée qui suit.
C'est justement ce qui nous intéresse ici. Et *normalement* si la
dernière portée du groupe/sous-groupe est absente, l'espacement entre
ce qui reste du groupe et la portée du dessous est conservé.

Je suppose que tu as mis tes 2 portées de cors dans un GrandStaff .
Utilise alors

  \new GrandStaff \with {
    % XS: ci-dessous les valeurs par défaut
    \override StaffGrouper #'staffgroup-staff-spacing =
      #'((basic-distance . 10.5)
   (minimum-distance . 8)
   (padding . 1)
         (stretchability . 9))
  } <<
    \new Staff = "corUn" { c1 c }
    \new Staff = "CorDeux" { c1 c }
  >>

en changeant les valeurs à ta convenance.

Si le problème persiste (je n'ai pas de quoi tester en ce moment) alors
il s'agit d'un bug, à signaler à bug-lilypond@gnu.org avec un exemple
minimal comme expliqué par Mike.

Cordialement,
Xavier

···

2011/2/1 Seventies <****@****>:

--
Xavier Scheuer <****@****>

Xavier Scheuer,

== En réponse au message du 02-02-2011, 13:33:05 ==

···

2011/2/1 Seventies <****@****>:

Qu'en pensez-vous ?

Je pense que tu n'as pas utilisé
StaffGrouper #'staffgroup-staff-spacing
pour espacer tes différents groupes, si ?
Cf. doc NR 4.4.1 Espacement vertical au sein d’un système >
Espacement de portées regroupées
LilyPond Notation Reference: 4.4.1 Flexible vertical spacing within systems

Le StaffGrouper a justement été créé pour régler ces cas de figure.
Il gère l'espacement au sein de différents "groupes" (sous-groupes) mais
aussi entre ce groupe (sous-groupe) et la portée qui suit.
C'est justement ce qui nous intéresse ici. Et *normalement* si la
dernière portée du groupe/sous-groupe est absente, l'espacement entre
ce qui reste du groupe et la portée du dessous est conservé.

Je suppose que tu as mis tes 2 portées de cors dans un GrandStaff .
Utilise alors

\new GrandStaff \with {
   % XS: ci-dessous les valeurs par défaut
   \override StaffGrouper #'staffgroup-staff-spacing =
     #'((basic-distance . 10.5)
(minimum-distance . 8)
(padding . 1)
        (stretchability . 9))
} <<
   \new Staff = "corUn" { c1 c }
   \new Staff = "CorDeux" { c1 c }
>>

en changeant les valeurs à ta convenance.

Si le problème persiste (je n'ai pas de quoi tester en ce moment) alors
il s'agit d'un bug, à signaler à bug-lilypond@gnu.org avec un exemple
minimal comme expliqué par Mike.

Cordialement,
Xavier

--
Xavier Scheuer <****@****>

Bien vu, et 10 points en moins pour griffon d'or :-/

Ça ne pourra que simplifier encore la syntaxe, puisqu'au sein d'un groupe, les valeurs deviennent alors identiques.

Grand merci,

Jean-François

========================================

== En réponse au message du 02-02-2011, 17:46:54 ==

Xavier Scheuer,

Je pense que tu n'as pas utilisé
StaffGrouper #'staffgroup-staff-spacing
pour espacer tes différents groupes, si ?
Cf. doc NR 4.4.1 Espacement vertical au sein d’un système >
Espacement de portées regroupées
LilyPond Notation Reference: 4.4.1 Flexible vertical spacing within systems

Le StaffGrouper a justement été créé pour régler ces cas de figure.
Il gère l'espacement au sein de différents "groupes" (sous-groupes) mais
aussi entre ce groupe (sous-groupe) et la portée qui suit.
C'est justement ce qui nous intéresse ici. Et *normalement* si la
dernière portée du groupe/sous-groupe est absente, l'espacement entre
ce qui reste du groupe et la portée du dessous est conservé.

Je suppose que tu as mis tes 2 portées de cors dans un GrandStaff .
Utilise alors

\new GrandStaff \with {
   % XS: ci-dessous les valeurs par défaut
   \override StaffGrouper #'staffgroup-staff-spacing =
     #'((basic-distance . 10.5)
(minimum-distance . 8)
(padding . 1)
        (stretchability . 9))
} <<
   \new Staff = "corUn" { c1 c }
   \new Staff = "CorDeux" { c1 c }
>>

en changeant les valeurs à ta convenance.

Si le problème persiste (je n'ai pas de quoi tester en ce moment) alors
il s'agit d'un bug, à signaler à bug-lilypond@gnu.org avec un exemple
minimal comme expliqué par Mike.

Cordialement,
Xavier

--

Ok, mais dans la pratique, ça se corse ...
Voici comment la partition est organisée :
2 StaffGroup :
1 :
  Flûte
  Hautbois
  Clarinette
  Basson
  1 GranStaff avec
    Cors 1 et 2
    Cors 3 et 4
  Trompettes
  Timbales
2 :
  1 GranStaff avec
    Violons 1
    Violons 2
  Alti
  Violoncelles
  Contrebasses

Le code de base est le suivant :

\score { \keepWithTag #'globalScore
  <<
    \new StaffGroup
    <<
      \staffSaMaFlote
      \staffSaMaOboe
      \staffSaMaKlarinette
      \staffSaMaFagott
      \new GrandStaff
      <<
        \staffSaMaHornIAII
        \staffSaMaHornIIIAIV
      >>
      \staffSaMaTrompete
      \staffSaMaPauken
    >>
    \new StaffGroup
    <<
      \new GrandStaff
      <<
        \staffSaMaViolineI
        \staffSaMaViolineII
        >>
      \staffSaMaViola
      \staffSaMaVioloncello
      \staffSaMaKontrabass
    >>
  >>

Pas de problème pour metrre de la Strechability entre les deux StaffGroup, ni après les GranStaff.
Le code devient :
\score { \keepWithTag #'globalScore
  <<
    \new StaffGroup \with {
      \override VerticalAxisGroup #'staff-staff-spacing =
      #'(('basic-distance . 1) (minimum-distance . 1) (padding . 0.4) (stretchability . 8))
    }
    <<
      \staffSaMaFlote
      \staffSaMaOboe
      \staffSaMaKlarinette
      \staffSaMaFagott
      \new GrandStaff \with {
        \override VerticalAxisGroup #'staff-staff-spacing = #'(('basic-distance . 1) (minimum-distance . 1) (padding . 0.4) (stretchability . 8))
      }
      <<
        \staffSaMaHornIAII
        \staffSaMaHornIIIAIV
      >>
      \staffSaMaTrompete
      \staffSaMaPauken
    >>
    \new StaffGroup \with {
      \override VerticalAxisGroup #'staff-staff-spacing = #'(('basic-distance . 1) (minimum-distance . 1) (padding . 0.4) (stretchability . 8))
    }
    <<
      \new GrandStaff \with {
      \override VerticalAxisGroup #'staff-staff-spacing = #'(('basic-distance . 1) (minimum-distance . 1) (padding . 0.4) (stretchability . 8))
      }
      <<
        \staffSaMaViolineI
        \staffSaMaViolineII
        >>
      \staffSaMaViola
      \staffSaMaVioloncello
      \staffSaMaKontrabass
    >>
  >>

Mais je cherche à insérer un espace après le basson, c'est à dire au milieu du premier StaffGroup.
Il faudrait donc diviser ce premier StaffGroup en deux parties, sans influencer la représentation. Sinon, j'obtiens un niveau de crochets supplémentaires qu'il faudrait supprimer.

Oui, ça doit être possible, mais comment ...

En modifiant la propriété \set StaffGroup.systemStartDelimiter = ???

Merci de votre aide,

Jean-François

···

_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user-fr

========================================

Ok, mais dans la pratique, ça se corse ...
Voici comment la partition est organisée :

[...]

Le code de base est le suivant :

[...]

Pas de problème pour metrre de la Strechability entre les deux
StaffGroup, ni après les GranStaff.
Le code devient :
\score { \keepWithTag #'globalScore
       <<
               \new StaffGroup \with {
                       \override VerticalAxisGroup #'staff-staff-spacing =

StaffGrouper , pas VerticalAxisGroup ...

Et c'est #'staffgroup-staff-spacing pour l'espacement entre la fin du
StaffGroup (ou équivalent) et la portée suivantes, tandis que
#'staff-staff-spacing gère l'espacement entre les portées _au sein du
StaffGroup _ (ou équivalent).
Just to make sure... :wink:

[...]

Mais je cherche à insérer un espace après le basson, c'est à dire au
milieu du premier StaffGroup.
Il faudrait donc diviser ce premier StaffGroup en deux parties, sans
influencer la représentation. Sinon, j'obtiens un niveau de crochets
supplémentaires qu'il faudrait supprimer.

Oui, ça doit être possible, mais comment ...

En modifiant la propriété \set StaffGroup.systemStartDelimiter = ???

Oui, c'est ce que je ferais.
En mettant un StaffGroup "invisible" de Flûte à Basson à l'intérieur
de ton grand StaffGroup 1 .

  \new StaffGroup \with { % XS: de Flûte à Basson
    systemStartDelimiter = #'SystemStartBar
    \override StaffGrouper #'staffgroup-staff-spacing = ...

Cordialement,
Xavier

···

2011/2/2 j-f.lucarelli <****@****>:

--
Xavier Scheuer <****@****>

à mon avis il s'agit d'appliquer la structure démontrée dans l'exemple

Nr 4.4.1 Flexible vertical spacing within systems -> Spacing of grouped
staves :

staffFlote = {\new Staff {\repeat unfold 8 { \relative c' {c1 }}}}
staffOboe = {\new Staff {\repeat unfold 8 { \relative c' {c1 }}}}
staffKlarinette = {\new Staff {\repeat unfold 8 { \relative c' {c1 }}}}
staffFlote = {\new Staff {\repeat unfold 8 { \relative c' {c1 }}}}
staffFagott = {\new Staff {\repeat unfold 8 { \relative c' {c1 }}}}
staffHornIAII = {\new Staff {\repeat unfold 8 { \relative c' {c1 }}}}
staffHornIIIAIV = {\new Staff {\repeat unfold 8 { \relative c' {c1 }}}}
<<
  \new StaffGroup \with {
    \override StaffGrouper #'staffgroup-staff-spacing #'basic-distance = #20
  }
  <<
    \staffHornIAII
    \staffHornIIIAIV
  >>
  \new StaffGroup \with {
    \override StaffGrouper #'staffgroup-staff-spacing #'basic-distance = #20
  }
  <<
    \staffFlote
    \staffOboe
    \staffKlarinette
    \staffFagott
  >>
  \new GrandStaff <<
    \staffHornIAII
    \staffHornIIIAIV
  >>

aurais-je mal compris?

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Arrangement-vertical-encore-une-petite-amelioration-tp5982503p5999547.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Je viens d'envoyer deux messages à Joe et aux développeurs.

Le premier pour signaler que GrandStaff ne tient pas compte de
StaffGrouper . Apparemment c'est parce que GrandStaff ne contient
pas "Vertical_align_engraver" .
J'ai demandé si c'était volontaire et sinon suggéré de l'ajouter.

Le second concernant le problème des StaffGroup de "second niveau"
pour lesquels les propriétés de StaffGrouper ne s'appliquaient pas.

Merci d'avoir signalé ces deux problèmes Jean-François.

Cordialement,
Xavier

···

2011/2/7 j-f.lucarelli <****@****>:

C'est bien cela, mais si on encadre le tout dans un \new StaffGroup
(pour avoir un crochet général et des barres de mesures continues),
les paramètres du \new StaffGroup interne ne sont plus prises en compte.

--
Xavier Scheuer <****@****>

un exemple minimal - c'est bien cela?!

music = {\repeat unfold 8 { \relative c' {c1 }}}
<<
  \new StaffGroup \with {
    \override StaffGrouper #'staffgroup-staff-spacing #'basic-distance = #30
  }
  <<
    \new Staff {\music}
    \new Staff {\music}
  >>
  \new StaffGroup \with {
    \override StaffGrouper #'staffgroup-staff-spacing #'basic-distance = #10
  }
  <<
    \new Staff \with {\override VerticalAxisGroup #'staff-staff-spacing =
#'((basic-distance . 1))} {\music}
    \new Staff \with {\override VerticalAxisGroup #'staff-staff-spacing =
#'((basic-distance . 1))} {\music}
    \new Staff \with {\override VerticalAxisGroup #'staff-staff-spacing =
#'((basic-distance . 1))} {\music}
    \new Staff \with {\override VerticalAxisGroup #'staff-staff-spacing =
#'((basic-distance . 25))} {\music}
  >>
  \new StaffGroup \with {
    \override StaffGrouper #'staffgroup-staff-spacing #'basic-distance = #9
  }
  <<
    \new GrandStaff <<
      \new Staff {\music}
      \new Staff \with {\override VerticalAxisGroup #'staff-staff-spacing =
#'((basic-distance . 18))} {\music}
    >>
    \new ChoirStaff <<
      \new Staff {\music}
      \new Staff {\music}
    >>
  >>

http://lilypond-french-users.1298960.n2.nabble.com/file/n6000041/test1.png

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Arrangement-vertical-encore-une-petite-amelioration-tp5982503p6000041.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Il faut avouer que j'ai n'ai pas complètement suivi cette discussion (j'essaie de résoudre mes propres problèmes chez Lily), mais est-ce que quelqu'un a essayé:

\layout {
\context {
\StaffGroup
\consists "Vertical_align_engraver"
}
}

pour voir ce que ça donne?

~Mike

···

On Feb 7, 2011, at 6:49 AM, Xavier Scheuer wrote:

2011/2/7 j-f.lucarelli <****@****>:

C'est bien cela, mais si on encadre le tout dans un \new StaffGroup
(pour avoir un crochet général et des barres de mesures continues),
les paramètres du \new StaffGroup interne ne sont plus prises en compte.

Je viens d'envoyer deux messages à Joe et aux développeurs.

Le premier pour signaler que GrandStaff ne tient pas compte de
StaffGrouper . Apparemment c'est parce que GrandStaff ne contient
pas "Vertical_align_engraver" .
J'ai demandé si c'était volontaire et sinon suggéré de l'ajouter.

Le second concernant le problème des StaffGroup de "second niveau"
pour lesquels les propriétés de StaffGrouper ne s'appliquaient pas.

Merci d'avoir signalé ces deux problèmes Jean-François.

Cordialement,
Xavier

Un petit message juste pour signaler qu'apparemment ces deux problèmes
sont corrigés dans la version 2.13.52 qui va venir.
http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=commit;h=823fac5179ef97f4d0b1cc1af2f2aaeea308e77c
http://code.google.com/p/lilypond/issues/detail?id=1519
http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=commit;h=69aa7021254529b5f399861636b33674f57aa20d

Cordialement,
Xavier

···

2011/2/7 Xavier Scheuer <****@****>:

Je viens d'envoyer deux messages à Joe et aux développeurs.

Le premier pour signaler que GrandStaff ne tient pas compte de
StaffGrouper . Apparemment c'est parce que GrandStaff ne contient
pas "Vertical_align_engraver" .
J'ai demandé si c'était volontaire et sinon suggéré de l'ajouter.

Le second concernant le problème des StaffGroup de "second niveau"
pour lesquels les propriétés de StaffGrouper ne s'appliquaient pas.

Merci d'avoir signalé ces deux problèmes Jean-François.

--
Xavier Scheuer <****@****>

Ok, ça marche, enfin presque :-/

Il y a d'une part le GrandStaff imbriqué dans un StaffGroup qui n'accepte
toujours pas les commandes de staffgroup-staff-spacing, mais pas grave, il
suffit d'utiliser

\new StaffGroup \with {
  systemStartDelimiter = #'SystemStartBrace
  ...

Par contre, la strechability semble encore poser problème dans les
StaffGroup imbriqués.
Même en mettant des valeurs énormes, certains écarts entre portées sont
imperceptible.
Pourtant, ça marche dans les exemples minima, il faut probablement que je
trouve mon erreur ailleurs.

De toute manière, les résultats visuels sont époustouflants, et voilà qui
laissera, pour les partitions orchestrales, les autres logiciels très loin
derrière.

Félicitation à l'équipe de développement.

Jean-François

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Arrangement-vertical-encore-une-petite-amelioration-tp5982503p6086131.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Ok, ça marche, enfin presque :-/

Il y a d'une part le GrandStaff imbriqué dans un StaffGroup qui n'accepte
toujours pas les commandes de staffgroup-staff-spacing

Je viens de tester avec la 2.13.53 et cela fonctionne d'après ce que je
vois. Tu peux confirmer (avec la dernière version en date) ?

Par contre, la strechability semble encore poser problème dans les
StaffGroup imbriqués.
Même en mettant des valeurs énormes, certains écarts entre portées sont
imperceptible.
Pourtant, ça marche dans les exemples minima, il faut probablement que je
trouve mon erreur ailleurs.

C'est surtout sur "basic-distance" qu'il faut jouer pour mettre de
l'espace.

De toute manière, les résultats visuels sont époustouflants, et voilà qui
laissera,

:slight_smile:

Cordialement,
Xavier

···

2011/3/3 Seventies <****@****>:

--
Xavier Scheuer <****@****>