lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Nombres de systèmes par page (2.10 -> 2.11)


From: Xavier Scheuer
Subject: Re: Nombres de systèmes par page (2.10 -> 2.11)
Date: Sun, 20 Jan 2008 23:53:00 +0100

It's not a bug, it's a feature!

Non, plus sérieusement, un tout grand merci pour cette réponse.
Non seulement c'est complet et bien expliqué, mais en plus on sait le pourquoi des choses.
Ça fait vraiment plaisir d'avoir des personnes qui connaissent bien le sujet et qui partagent leur savoir en aidant les autres via cette liste de diffusion (et en plus on reçoit la réponse dans sa langue maternelle)!

Il faudra m'expliquer l'utilité de ly:minimal-breaking s'il utilise la même estimation pour le calcul de la hauteur des systèmes (et donc du nombre de systèmes par page) que ly:optimal-page-breaking...

Même en mettant between-system-padding et between-system-space à 0 lilypond (2.11) s'obstine à ne mettre que 2 systèmes sur la pages (collés l'un à l'autre avec plus d'un tiers de page vide).
À croire qu'il a déjà déterminé le nombre de pages avant!

Un grand merci pour l'explication, c'est vraiment intéressant.
Bon alors je n'y connais pas grand chose en programmation et je suis loin d'avoir une longue expérience de lilypond mais je trouve la première démarche plus "logique".
Je ne suis pas pour des systèmes "étirés", je préfère des systèmes bien dessinés, quitte à devoir les espacer par après pour remplir la page (espacer les systèmes plutôt que de les étirer).
Surtout que dans certains cas (mon exemple en est la preuve), le fait de vouloir étirer les systèmes plutôt que de les espacer conduit à des espaces entre systèmes plus grands (un comble)!

Quant à l'avantage du système de référence des numéros de page et des tables de matières en une seule compilation je suis assez mitigé.
Il est, à mon humble avis, préférable d'avoir un nombre de système par page cohérent (et non résultant d'une vague estimation) plutôt que de "gagner" une compilation.
Cela en "vaut-il vraiment le coup"?
2 arguments (personnels à nouveau) dans ce sens : Bref, le rôle principal de lilypond est de faire de belles partitions et pour ce faire je pense qu'il est préférable de bien calculer le nombre de systèmes par page plutôt que de se doter d'un système de référence type LaTeX au prix d'une approximation dans le rendu final des partitions.
N'est-ce pas la philosophie de Gnome (et GNU en général) : "un logiciel pour chaque chose mais il le fait bien"?

Seul optimal-page-breaks (et non optimal-page-breaking) m'a donné 3 systèmes par page.

Je vais adopter cette solution cette fois-ci et garder tout ceci à l'esprit pour mes prochaines partitions.
Encore merci pour cette réponse.


Xavier


Le dimanche 20 janvier 2008 à 19:03 +0100, Nicolas Sceaux a écrit :
Le 20 janv. 08 à 15:44, Xavier Scheuer a écrit :
> [...]
> J'ai essayé de modifier divers paramètres pour obliger lilypond à  
> mettre 3 systèmes par pages (surtout que visiblement il y a la place  
> nécessaire) sans résultats.
> J'ai suivi les conseils de la documentation mais aucune des  
> commandes suivantes n'arrive au résultat escompté.
> 	• #(define page-breaking ly:minimal-breaking)

ly:minimal-breaking ne va être d'aucune aide ici, dans la mesure où cet
algo utilise la même estimation de la hauteur des différent systèmes que
les autres algo de calcul des sauts de page. Je pense qu'ici c'est
l'estimation de la hauteur qui pause problème et qui laisse penser à
l'algo de calcul des sauts de page que seulement 2 systèmes tiennent sur
la page.

> 	• page-limit-inter-system-space = ##t
> page-limit-inter-system-space-factor = 0.5

Cela sert à limiter l'espace entre deux systèmes, ça n'influe pas sur le
calcul des sauts de page mais sur la répartition des systèmes sur une  
page,
une fois les sauts de pages calculés.

> 	• between-system-padding = #0.1
> between-system-space = #0.1

Ces deux là en revanche peuvent influer sur les sauts de pages. Tu  
peux les
mettre à 0 même pour voir.

> 	• ragged-bottom = ##f

Ca n'influe pas sur le calcul des sauts de pages, mais seulement sur la
façon de répartir les systèmes sur une page.

> Et même system-count = #3 ne fonctionne pas (Calcul des sauts de  
> ligne...  Avertissement : impossible de trouver un saut de ligne qui  
> satisfasse aux contraintes et ça plante dès la 2e page).
> Pour arriver à 3 systèmes par pages avec la version 2.11 je suis  
> obligé de définir #(set-global-staff-size 12.60) (#(set-global-staff- 
> size 13) n'en mettant également que 2), mais ça commence vraiment à  
> faire petit.
> Ce que je ne comprends pas surtout c'est cette différence de  
> comportement entre la 2.10 et la 2.11 et surtout le fait que le  
> résultat est meilleur avec la version la plus ancienne.
> Si bien que j'en arrive à me demander s'il ne s'agirait pas d'une  
> "régression"...

Je vais tenter une explication, qui ne sera peut-être pas exacte dans
la mesure où je ne me souviens plus exactement à quel moment certaines
évolutions ont eu lieu.

Dans la version 2.10 (?), les systèmes étaient entièrement dessinés
préalablement au calcul des sauts de pages. Résultat, les algos de  
calcul
des sauts de pages savaient exactement la hauteur des systèmes, et donc
pouvaient les placer au plus près.

Dans la version 2.11, les systèmes ne sont pas dessinés avant le calcul
des sauts de page, les algo utilisent une estimation de la hauteur des
système. Cette estimation est majorée de 10% il me semble pour éviter de
se retrouver avec des pages contenant plus de systèmes qu'elles ne
pouvaient en contenir. Un désavantage que présente cette technique est
celui que tu rencontres ici : on aurait pu mettre plus de systèmes sur
la page. Mais il y a aussi des avantages qui valent le coup :
  - en ne dessinant les systèmes qu'après avoir calculé les sauts de  
pages,
on sait au moment de les dessiner combien il y a de rab sur la page, que
l'on peut réinjecter dans les systèmes pour les aggrandir.
  - cela permet aussi le système de référence des numéros de page et des
tables de matières.
Auparavant, pour accomplir cela, il fallait effectuer 2 invocations de
LilyPond, la première servant à déterminer les sauts de pages, la  
seconde
utilisant ces données pour aggrandir les systèmes, ou construire une  
table
des matières.

Ce n'est pas une regression, puisque l'ancien comportement est toujours
disponible (voir plus bas).

> Est-ce que l'un d'entre vous aurait une idée pour "résoudre" ce  
> problème (sans changer global-staff-size 14)?

Plusieurs facteurs vont influer sur le calcul des saut de pages :
  - l'espace minimal entre les systèmes : between-system-padding
  - la hauteur estimée des systèmes, que tu peux essayer de réduire
en modifiant la hauteur minimale entre deux portées d'un système, par
exemple :
   \context {
     \Staff
     \override VerticalAxisGroup #'minimum-Y-extent = #'(-2 . 2)
   }

Tu peux aussi utiliser l'algo "classique" de 2.10: optimal-page-breaking
(sans "ly:").

Nicolas


reply via email to

[Prev in Thread] Current Thread [Next in Thread]