[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

4.3 Sauts

@translationof Breaks


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

4.3.1 Sauts de ligne

@translationof Line breaking

Les sauts de ligne sont normalement gérés de façon automatique. Ils interviennent de telle sorte qu’une ligne ne soit ni trop resserrée, ni trop aérée, et que des lignes consécutives aient à peu près la même densité.

Vous pouvez cependant insérer l’instruction \break à l’endroit où vous le jugez utile pour « forcer » le passage à la ligne suivante :

 
\relative c'' {
  c4 c c c | \break
  c4 c c c |
}

[image of music]

Par défaut, un saut de ligne ne saurait intervenir au beau milieu d’une mesure ; LilyPond vous le signalera par un message lors de la compilation du fichier. Si d’aventure vous voulez forcer un saut de ligne en l’absence de barre de mesure, vous devrez auparavant insérer une barre invisible – à l’aide de \bar "".

 
\relative c'' {
  c4 c c
  \bar ""
  \break
  c |
  c4 c c c |
}

[image of music]

LilyPond ignorera un \break placé sur une barre à la fin d’une mesure dès lors que la précédente avait une note en suspend – c’est typiquement le cas lorsqu’un n-olet est à cheval sur deux mesures. L’instruction \break sera toutefois opérationnelle si vous avez auparavant désactivé le Forbid_line_break_engraver du contexte Voice concerné. Notez bien qu’en pareil cas, les sauts de ligne forcés doivent être saisis au sein d’une expression polyphonique :

 
\new Voice \with {
  \remove "Forbid_line_break_engraver"
} \relative {
  <<
    { c''2. \tuplet 3/2 { c4 c c } c2. | }
    { s1 | \break s1 | }
  >>
}

[image of music]

Selon le même principe, un saut de ligne ne peut intervenir alors qu’une ligature s’étend sur deux mesures consécutives. Il faut en ce cas là introduire la dérogation \override Beam.breakable = ##t.

 
\relative c'' {
  \override Beam.breakable = ##t
  c2. c8[ c | \break
  c8 c] c2. |
}

[image of music]

L’instruction opposée, \noBreak, interdira toute tentative de saut de ligne à la fin de la mesure où elle est explicitée.

Au sein même d’une pièce, les sauts de lignes automatiques sont inhibés dans la musique encadrée par les commandes \autoLineBreaksOff et \autoLineBreaksOn. Dans le cas où les sauts de page automatiques devraient eux aussi être inhibés, ce sont les commandes \autoBreaksOff et \autoBreaksOn qu’il faudrait utiliser. Les sauts de ligne ou de page manuels ne sont pas affectés par ces commandes. Notez bien que la désactivation du positionnement automatique des sauts des ligne peut avoir pour effet un débordement de la musique dans la marge de droite si tout ne peut être contenu sur une ligne.

Des sauts de ligne automatiques peuvent cependant être autorisés en un point particulier à l’aide d’un \once \autoLineBreaksOn sur une barre de mesure. Ceci ne concerne pas les sauts de page. Ceci indique qu’un saut de ligne peut intervenir à cet endroit précis, mais ne le force en aucun cas.

LilyPond dispose de deux variables de base pour influencer l’espacement au niveau des lignes. Toutes deux se définissent dans un bloc \layout, indent réglant l’indentation de la première ligne, et line-width la longueur des lignes.

L’activation du commutateur ragged-right au sein du bloc \layout aura pour effet de terminer les systèmes là où ils prendraient fin normalement plutôt que de les étirer sur toute la longueur de la ligne. Ceci est particulièrement utile pour de petits fragments ou pour vérifier la densité induite par l’espacement naturel.

Le commutateur ragged-last est équivalent à ragged-right, à ceci près qu’il n’affecte que la dernière ligne de la pièce.

 
\layout {
  indent = 0\mm
  line-width = 150\mm
  ragged-last = ##t
}

L’utilisation conjointe de \break et de blancs dans une section \repeat vous permettra de positionner des sauts de ligne à intervalle régulier. Par exemple, les 28 mesures de ce qui suit, si l’on est à 4/4, seront coupées toutes les quatre mesures, pas ailleurs :

 
<<
  \repeat unfold 7 {
    s1 \noBreak s1 \noBreak
    s1 \noBreak s1 \break
  }
  { et ici la musique… }
>>

Commandes prédéfinies

\break, \noBreak, \autoBreaksOff, \autoBreaksOn, \autoLineBreaksOff, \autoLineBreaksOn.

Morceaux choisis

Recours à une voix supplémentaire pour gérer les sauts

Il est souvent plus pratique de séparer ce qui est purement musical et les informations concernant les sauts de ligne ou de page en créant une voix supplémentaire dédiée. Cette voix spécifique ne contiendra que des blancs – des silences invisibles \skip –, des \break, des \pageBreak et autres informations concernant les ruptures.

Cette manière de procéder est tout à fait indiquée lorsque vous ajustez les line-break-system-details et autres propriétés fort intéressantes de NonMusicalPaperColumnGrob.

 
music = \relative c'' { c4 c c c }

\score {
  \new Staff <<
    \new Voice {
      s1 * 2 \break
      s1 * 3 \break
      s1 * 6 \break
      s1 * 5 \break
    }
    \new Voice {
      \repeat unfold 2 { \music }
      \repeat unfold 3 { \music }
      \repeat unfold 6 { \music }
      \repeat unfold 5 { \music }
    }
  >>
}

[image of music]

Voir aussi

Manuel de notation : Le bloc \layout, Variables de gestion des sauts de ligne.

Référence des propriétés internes : (internals)LineBreakEvent section ‘LineBreakEvent’ dans Référence des propriétés internes.

Morceaux choisis : (snippets)Spacing section ‘Espacements’ dans Morceaux choisis.

Problèmes connus et avertissements

Les commandes \autoLineBreaksOff et \autoBreaksOff doivent impérativement se placer après le début de la musique pour éviter tout message d’erreur.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

4.3.2 Sauts de page

@translationof Page breaking

Cette section présente les différentes méthodes de gestion des sauts de page, ainsi que les moyens de les modifier.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Saut de page manuel

@translationof Manual page breaking

La gestion automatique des sauts de page se contrôle à l’aide des commandes \pageBreak et \noPageBreak. Ces commandes fonctionnent de manière analogue à \break et \noBreak pour les sauts de ligne et se placent donc au moment d’une barre de mesure. Elles permettent de forcer, ou d’interdire, un saut de page à la prochaine barre de mesure. Comme on peut s’y attendre, \pageBreak force aussi le saut de ligne.

Les commandes \pageBreak et \noPageBreak peuvent se trouver à des niveaux supérieurs, entre deux partitions ou markups de premier rang.

Au sein même d’une pièce, les sauts de page automatiques sont inhibés dans la musique encadrée par les commandes \autoPageBreaksOff et \autoPageeBreaksOn. Les sauts de page manuels ne sont pas affectés par ces commandes.

Tout comme ragged-right et ragged-last qui permettent de gérer la répartition horizontale, LilyPond dispose de commutateurs équivalents au niveau de la verticalité. ragged-bottom, une fois activé, empèchera les systmèes de se répartir sur la page. Quant à ragged-last-bottom (valorisé à #t par défaut), il laissera un espace vide en dernière page, y compris pour chaque \bookpart. Pour de plus amples détails, reportez-vous à Variables d’espacement vertical fixe.

Les sauts de page sont générés par la fonction page-breaking. LilyPond dispose de plusieurs algorithmes en la matière : ly:optimal-breaking, ly:page-turn-breaking et ly:minimal-breaking. C’est ly:optimal-breaking qui est activé par défaut, mais rien ne vous empêche d’en changer, par l’intermédiaire du bloc \paper :

 
\paper {
  page-breaking = #ly:page-turn-breaking
}

Lorsqu’un ouvrage contient plusieurs partitions et un certain nombre de pages, la gestion des sauts de page finit par devenir très gourmande, tant au niveau du processeur que de la mémoire. Vous pouvez cependant alléger la charge en recourant à des blocs \bookpart afin de sectionner l’ouvrage que vous traitez ; les sauts de page seront alors gérés individuellement au niveau de chacune des parties. Par ailleurs, cela vous autorisera une gestion différente selon les sections.

 
\bookpart {
  \header {
    subtitle = "Préface"
  }
  \paper {
     %% Pour une partie constituée principalement de texte
     %% ly:minimal-breaking est plus judicieux.
     page-breaking = #ly:minimal-breaking
  }
  \markup { … }
  …
}
\bookpart {
  %% Cette partie étant purement musicale,
  %% retour au style par défaut (optimal-breaking).
  \header {
    subtitle = "Premier mouvement"
  }
  \score { … }
  …
}

Commandes prédéfinies

\pageBreak, \noPageBreak, \autoPageBreaksOn, \autoPageBreaksOff.

Voir aussi

Manuel de notation : Variables de gestion des sauts de page.

Morceaux choisis : (snippets)Spacing section ‘Espacements’ dans Morceaux choisis.

Problèmes connus et avertissements

Le préfixe \once est ineffectif en ce qui concerne les commandes \autoPageBreaksOn et \autoPageBreaksOff. Si le positionnement automatique des sauts de page est désactivé et qu’il est réactivé pour permettre un saut de page, il doit le rester pendant quelques mesures (le nombre précis de mesures dépendant de la pièce) avant d’être à nouveau désactivé, autrement l’opportunité de passer à la page suivante ne sera pas saisie.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Optimisation des sauts de page

@translationof Optimal page breaking

LilyPond, pour déterminer où placer un saut de page, utilise par défaut la fonction ly:optimal-breaking. Celle-ci tend à trouver une rupture qui évite d’obtenir à la fois une page trop dense ou exagérément aérée. Contrairement à la fonction ly:page-turn-breaking, elle n’a aucune notion de ce qu’est une « tourne ».

Voir aussi

Morceaux choisis : (snippets)Spacing section ‘Espacements’ dans Morceaux choisis.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Minimisation des sauts de page

@translationof Minimal page breaking

La fonction ly:minimal-breaking est celle qui réalise le moins de calculs pour positionner les sauts de page. Elle mettra le plus de systèmes possible sur une page avant de passer à la suivante. On peut donc la préférer lorsque la partition s’étend sur beaucoup de pages ou lorsque les autres fonctions de gestion des sauts de page ralentissent nettement le traitement, sont trop gourmandes en mémoire ou qu’il y a beaucoup de texte. Il suffit de la mentionner au sein du bloc \paper :

 
\paper {
  page-breaking = #ly:minimal-breaking
}

Voir aussi

Morceaux choisis : (snippets)Spacing section ‘Espacements’ dans Morceaux choisis.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Présentation en page continue

@translationof One-page page breaking

La fonction ly:one-page-breaking constitue un algorithme de calcul des sauts de page particulier en ceci que la hauteur de page sera automatiquement ajustée à la longueur de la partition, de telle sorte que toute la musique tienne sur une seule page. La variable paper-height du bloc \paper est ignorée, mais les autres réglages restent disponibles. En particulier, l’espacement entre le dernier système (ou un markup de premier niveau) et le pied de page est réglable à l’aide de la variable last-bottom-spacing du bloc \paper. La largeur de page n’est, par défaut, pas modifiée ; ceci peut s’ajuster à l’aide de la variable paper-width du bloc \paper.

Problèmes connus et avertissements

ly:one-page-breaking est à ce jour incompatible avec l’utilisation de \bookpart.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Présentation en ligne continue

@translationof One-line page breaking

La fonction ly:one-line-breaking constitue un algorithme de calcul des sauts de page particulier en ceci que chaque partition fait l’objet d’une page unique, d’une seule ligne. Cette fonctionnalité s’affranchit de l’impression des titres et marges ; seule la partition est affichée.

La largeur de page est ajustée de telle sorte que la pièce la plus longue tienne sur une seule ligne. En particulier, les variables paper-width, line-width et indent du bloc \paper seront ignorées ; les left-margin et right-margin seront honorées. La hauteur de page ne sera pas modifiée.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Présentation en rouleau

@translationof One-line-auto-height page breaking

La fonction ly:one-line-auto-height-breaking opère comme ly:one-line-breaking, à ceci près que la hauteur de page s’adapte automatiquement à la hauteur de la musique. Dans les faits, la variable paper-height du bloc \paper s’ajuste de façon à englober la hauteur de la partition la plus étendue, plus les top-margin et bottom-margin.

L’affectation d’une valeur à top-system-spacing influencera le positionnement vertical de la musique. Sa désactivation – valorisation à ##f au sein du bloc \paper – aura pour effet de simplement placer la musique entre les marges supérieure et inférieure.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Optimisation des tournes

@translationof Optimal page turning

Aboutir à une configuration des sauts de page de telle sorte que les pages de droite se terminent toujours par un silence devient souvent une nécessité. En effet, l’exécutant pourra alors tourner la page sans risquer de manquer des notes. La fonction ly:page-turn-breaking tend à trouver une rupture qui évite d’obtenir à la fois une page trop dense ou exagérément aérée, tout en tenant compte du fait qu’une tourne ne saurait intervenir qu’à certains endroits.

L’utilisation de cette fonction se fait en deux étapes. Il vous faut tout d’abord l’activer au sein du bloc \paper comme indiqué à la rubrique Sauts de page. Vous devrez, dans un deuxième temps, informer la fonction des endroits où les sauts de page sont permis.

Cette deuxième étape se réalise de deux manières différentes. Vous pouvez spécifier manuellement chaque tourne potentielle en insérant un \allowPageTurn à l’endroit approprié de votre fichier source.

Toutefois, cette option peut vite se révéler fastidieuse selon l’ampleur de l’œuvre. Vous pouvez alors recourir au Page_turn_engraver que vous mentionnerez dans un contexte de voix ou de portée. Ce graveur de tournes recherchera dans le contexte en question les passages sans note. Notez bien qu’il ne recherche pas des silences, mais l’absence de notes ; autrement dit, il ne restera pas inactif dans le cadre d’une portée polyphonique dont l’une des parties contiendrait des silences. Lorsqu’il rencontre un fragment suffisamment long ne contenant aucune note, il insère un \allowPageTurn à la barre terminant ce fragment, à moins qu’il ne rencontre en chemin une « barre spéciale » – telle une double barre – auquel cas il y déposera le \allowPageTurn.

Le Page_turn_engraver examine la propriété de contexte minimumPageTurnLength pour déterminer quelle doit être la longueur d’un fragment sans note avant une tourne. La valeur par défaut de minimumPageTurnLength est (ly:make-moment 1 1), soit une ronde, et s’ajuste de la manière suivante :

 
\new Staff \with { \consists "Page_turn_engraver" }
{
  a4 b c d |
  R1 | % une tourne peut se placer ici
  a4 b c d |
  \set Staff.minimumPageTurnLength = #(ly:make-moment 5/2)
  R1 | % il ne peut pas y avoir de tourne ici
  a4 b r2 |
  R1*2 | % une tourne peut se placer ici
  a1
}

Le Page_turn_engraver tient compte des reprises. C’est pourquoi il ne permettra une tourne que dans le cas où il y aura suffisamment de temps au début et à la fin de la reprise pour que l’exécutant puisse aisément revenir à la page précédente. Le Page_turn_engraver est même capable d’interdire un tourne dans le cas d’une reprise de courte durée, ajustable au travers de la propriété de contexte minimumRepeatLengthForPageTurn.

Les commandes de tourne – \pageTurn, \noPageTurn et \allowPageTurn – peuvent s’utiliser à des niveaux supérieurs, entre des blocs \score ou des markups de haut niveau.

Commandes prédéfinies

\pageTurn, \noPageTurn, \allowPageTurn.

Voir aussi

Manuel de notation : Variables de gestion des sauts de ligne.

Morceaux choisis : (snippets)Spacing section ‘Espacements’ dans Morceaux choisis.

Problèmes connus et avertissements

Une partition ne devrait contenir qu’une seule instance du Page_turn_engraver, au risque de les voir se contredire.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]

Ce document a été généré le le 13 juillet 2020 par gub en utilisant texi2html 1.82.

Autres langues : English, català, deutsch, español, italiano, 日本語.
À propos de la sélection automatique de la langue.