# Introduction à LilyPond/Mise en forme d'une partition

* Principe général
* Structure du fichier
* La hauteur des notes
* Le rythme
* Une ligne mélodique complète
* Partition de chant et grille d'accords
* Association de plusieurs voix
* Gestion de partitions volumineuses
* Notation spécifique à certains instruments
* Mise en forme d'une partition
* Génération d'un fichier de son
* Afficher du texte
* Programmation
* LilyPond et Python
* Voir aussi
* Index
* Principe général
* Structure du fichier
* La hauteur des notes
* Le rythme
* Une ligne mélodique complète
* Partition de chant et grille d'accords
* Association de plusieurs voix
* Gestion de partitions volumineuses
* Notation spécifique à certains instruments
* Mise en forme d'une partition
* Génération d'un fichier de son
* Afficher du texte
* Programmation
* LilyPond et Python
* Voir aussi
* Index
[ Modifier le sommaire ]
LilyPond se charge lui-même de la mise en page. Il est toutefois possible de lui donner des directives.

## Note

    On attribue des valeurs aux variables avec le signe égale : variable = valeur. Dans certains cas, le chiffre est précédé du croisillon # (parfois appelé, à tort, « dièse ») ; de manière générale :
   * le croisillon est un symbole de Scheme (le langage dans lequel est écrit LilyPond) ; le croisillon est en général optionnel puisque les valeurs sont par défaut interprétées en tant qu'expression de Scheme, mais il devient obligatoire lorsqu'il y a une ambiguïté (par exemple, « -1 » est normalement interprété comme un doigté, il faut écrire « #-1 » pour qu'il soit interprété comme « moins un ») ;
   * il ne doit pas y avoir de croisillon lorsque l'expression ne doit pas être interprétée par Scheme (comme par exemple celles contenant une unité, par exemple dans le cas de « 2\cm » pour « deux centimètres »).
    Si l'on ne connaît pas Scheme, le mieux est de reproduire la syntaxe des exemples de la documentation officielle, ou de procéder par essai-erreur.
    Certaines variables sont des booléens, c'est-à-dire ont pour valeur « vrai » ou « faux ». La valeur « vrai » est notée « #t » (true) et la valeur « faux » est notée « #f » (false). Si ces valeurs sont précédées du croisillon, on écrit variable = ##t ou variable = ##f.

## Retour de ligne et saut de page

On peut forcer un retour de ligne avec l'instruction \break. Cette commande ne peut se placer que là où se trouve une barre de mesure « valide » (par exemple, une note qui dépasse d'une mesure rend impossible le saut de ligne). Il est possible de forcer un retour au milieu d'une mesure en introduisant une barre de mesure « invisible », avec la commande \bar "".
On peut à l'inverse empêcher un retour de ligne avec la commande \noBreak. Cette commande doit aussi être placée à une barre de mesure valide.
Si l'on veut faire des retours de ligne régulier, on peut alors créer un voix qui ne contiendra que des retours de ligne, parallèle à la musique. Les retours de lignes sont alors séparés par des valeurs temporelles s (space).

### Exemple

    Pour forcer un retour de ligne toutes les quatre mesures pour une mesure à quatre temps, sur vingt-huit mesures (7×4) :
On peut forcer un saut de page avec la commande \pageBreak, et on peut interdire un saut de page avec \noPageBreak.

## « Écrire plus petit »

L'exemple suivant permet de mettre « plus de notes dans une page » que le comportement par défaut :
La valeur de set-global-staff-size est en points typographiques. Les valeurs habituelles sont entre 11 et 16 pour des livrets de poche, 18 pour un carnet de chant et 20 à 25 pour une partition. La valeur par défaut est 20.
La valeur indent est le décalage de la première ligne. La valeur par défaut est 15\mm (1.5\cm).
La valeur common-shortest-duration indique quelle est la figure de base. La valeur par défaut, 1/4, désigne une noire ; les notes plus courtes sont suivie d'une espace proportionnelle à la durée. Si nous prenons une valeur de référence plus longue, ici 1/2 pour une blanche, cela resserre les notes.
Si le fichier comporte plusieurs partitions (scores), on peut alors fixer une taille deportée par partition dans les environnements \score :

## Configurer le comportement

On peut modifier la manière dont LilyPond place les différents éléments.
Dans un fichier .LY, il y a deux endroits où l'on peut indiquer les paramètres. Ces « blocs de définition » sont :
* le bloc de définition du papier, \paper {…}, qui se place en début de document, avant la partition ;
* le bloc de définition de la mise en forme, \layout {…}, qui se place au sein de la partition.
La structure globale du fichier est donc :

### Blocs de définition du papier

Le bloc \paper {…} peut contenir plusieurs paramètres.

#### Choix du format du papier

On peut définir le format du papier avec la commande #(set-paper-size "format"), où format est :
* a6 (10,5×14,8 cm), a5 (14,8×21 cm), a4 (21×29,6 cm), ou a3 (29,7×42 cm) : formats standards ISO ;
* legal (21,6×35,6 cm), letter (21,6×27,9 cm) et 11x17 (27,9×43,2 cm) : formats étatsuniens.
Le format par défaut est a4.
L'orientation par défaut est « portrait » (la grande dimension est verticale). Pour que le papier soit orienté en « paysage » (la grande dimension à l'horizontale), il faut alors utiliser la commande
placée au début du fichier (pas dans le bloc \paper).
Si l'on veut générer une image de petit format, par exemple juste quelques lignes de musique à intégrer dans autre document, on peut utiliser les variables paper-width (largeur de page), line-width (largeur de ligne) et paper-height, par exemple
L'attribution de la valeur « faux » à la variable make-footer enlève le pied de page.
Par défaut lilypond ajoute un pied de page "Music engraving by LilyPond (N° de version) — www.lilypond.org". On peut le modifier dans le bloc \paper.
Exemple :
compose une ligne rappelant le titre de la partition sur sa partie gauche et indiquant son N° de version sur la droite.
On peut également ajuster la largeur des portées (line-width), les marges (top-margin, right-margin, bottom-margin, left-margin), la distance entre l'en-tête et la première portée (head-separation) ou entre le pied de page et la dernière portée (foot-separation), l'espacement entre les systèmes de portées (between-system-space), …

#### Marges et espacement entre blocs

On peut définir la taille des marges sous la forme variable = valeur. La valeur peut être indiquée en millimètres, en ajoutant \mm derrière la valeur, en en centimètres, en ajoutant \cm, en pouces, en ajoutant \in, et en point typographique en ajoutant \pt. Les variables pour les marges sont les suivantes
* top-margin : distance entre le haut de la feuille et le haut des caractères de la première ligne (5 mm par défaut)
* bottom-margin : distance entre le bas de la feuille et le bas des caractères de la dernière ligne (6 mm par défaut)
* left-margin distance entre la gauche de la feuille et la gauche du premiers caractère de chaque ligne (pas de défaut).
Les marges de gauche et de droite sont en fait définis par la largeur de la ligne, déterminée par la variable line-width (20 mm par défaut). Si left-margin n'est pas défini, la ligne est centrée. La marge de droite dépend de la marge de gauche et de la largeur de la ligne.
Par ailleurs, on peut aussi définir l'espacement entre les différents blocs de la page :
* head-separation : distance entre l'en-tête (titre, auteur…) et la première portée (4 mm par défaut) ;
* foot-separation : distance entre la dernière portée et le pied de page (4 mm par défaut) ;
* horizontal-shift : décalage vers la droite de certains éléments, laissant plus de place pour les noms d'instrument (0 par défaut) ;

#### Sauts de page

LilyPond peut utiliser trois algorithmes différents pour déterminer les sauts de page :
* optimal-breaking (par défaut) : cherche à éviter que les notes soient trop resserrées ou espacées ;
* page-turn-breaking : cherche à placer les sauts de page aux endroits où il y a des silences, afin de diminuer la difficulté liée au fait de tourner les pages ; on peut aussi indiquer qu'un saut de page est possible avec l'instruction \allowPageTurn ;
* optimal-page-breaks (l'ancien algorithme).
Pour changer l'algorithme utilisé, il faut mettre dans le bloc de définition /paper la commande #(define page-breaking ly:algorithme).

##### Exemple
#### Numérotation des pages

On peut définir les variables suivantes :
* first-page-number : numéro de la première page (1 par défaut) ;
* print-first-page-number : vrai (##t) pour que la première page soit numérotée, faux (##f, valeur par défaut) pour qu'elle ne le soit pas ;
* print-page-number : vrai (##t, valeur par défaut) pour que les numéros de page soient imprimés, faux (##f) pour qu'ils ne le soient pas.

#### Extension sur la page

Par défaut, les notes sur une portée sont placées de manière à occuper toute la largeur de la ligne. Si l'on veut avoir une écriture plus compacte, alors il faut mettre la variable ragged-right sur vrai (##t). Ceci est utile lorsque l'on n'a qu'une seule ligne (par exemple, pour les courtes citations, les présentations d'un thème…).
On peut demander à LilyPond de n'avoir une écriture compacte que sur la dernière ligne de la partition. Ceci se fait en mettant la variable ragged-last sur vrai (##t).
La première ligne est en général en retrait (indentation). On peut modifier ce retrait en modifiant la valeur de la variable indent.
Par défaut, LilyPond ne cherche pas à remplir toute la page. On peut forcer Lilypond à augmenter l'espace entre les portées afin d'occuper tout l'espace vertical. Pour cela, il faut mettre la variable ragged-bottom sur vrai (##t).
Ceci ne s'applique pas à la dernière page. Pour que les portées s'espacent sur la dernière page, il faut mettre la variable ragged-last-bottom sur faux (##f).

### Autres paramètres globaux

Les paramètres globaux ne concernant pas le papier en lui-même sont fixés hors de tout bloc ou contexte.

#### Taille des portées

Il existe huit tailles de portée, exprimées en point typographique : 11 (pour les livrets de poche), 13, 14, 16, 18 (pour les livres de chant), 20 (pour les partitions classiques), 23 et 26.
Pour définir la taille de portée par défaut, on utilise la commande
    #(set-global-staff-size taille)
par exemple
    #(set-global-staff-size 14)

### Bloc de définition de la mise en page d'une partition

Le bloc \layout {…} peut contenir plusieurs paramètres, qui s'appliquent à une partition donnée (mais pas à tout un livre). On peut ainsi faire varier la mise en forme d'une pièce à l'autre d'une même œuvre, ou entre les morceaux d'un recueil.
On peut par exemple mettre les variables ragged-right, ragged-last ou indent dans le bloc \layout {…} plutôt que \paper {…}. Dans le cas où il n'y a qu'une seule partition dans le fichier, cela n'a aucune importance.

### Dans une expression musicale

Certaines modifications ne concernent qu'une expression musicale, ou qu'une partie de cette expression.

#### Taille des notes

La taille des notes est calculée en fonction de la taille de la portée (pour une portée de 20 points, les notes ont une taille de 10 points) ; la police utilisée pour les figures de notes est Feta.
On peut changer provisoirement la taille des notes avec la commande \set fontSize = #modificateur, où modificateur est un nombre entier, positif ou négatif :
* -6 : moitié de la taille normale ;
* 0 : taille normale ;
* 6 : double de la taille normale.
Un pas représente une variation d'environ 12 % de la taille précédente. Par exemple pour une portée de 20 points, \set fontSize = #-1 donnera des notes de taille 9 tandis que \set fontSize = #1 donnera des notes de taille 11.

## Quelques astuces
#### Positionnement vertical des silences

Les silences sont placés automatiquement sur la portée par Lilypond, la plupart du temps d'heureuse façon. Quelquefois cependant, il peut paraître nécessaire d'ajuster la position du silence sur la portée.
On utilise habituellement une commande du type fa4\rest par exemple pour placer un soupir à la hauteur de la note fa sur la portée.
On peut aussi utiliser une commande du type \once\override Rest #'extra-offset = #'(0.0 . 5.0) r4. Il faut placer cette commande juste avant le silence à modifier. Elle présente l'avantage de pouvoir aussi ajuster la position horizontale du silence. Cela peut servir dans des cas particuliers. Bien sûr les paramètres de la commande (ici ajustement horizontal 0.0 et ajustement vertical 5.0) sont à régler finement au cas par cas, le plus souvent par tatonnement. Ces paramètres peuvent être négatifs. Toutefois, cette commande ne fonctionne pas correctement pour les pauses et les demi-pauses à placer en dehors des portées.
Enfin la commande suivante peut aussi modifier la position verticale de pauses par exemple, tout au long de plusieurs mesures : \override MultiMeasureRest #'staff-position = #4.

#### Positionnement de textes

On peut modifier la position horizontale et verticale de textes au-dessus de la portée avec la commande \once\override Voice.TextScript #'extra-offset = #'(-1.5 . -1.0) par exemple.
Un texte peut comporter aussi une marque musicale, un trille, un point d'orgue par exemple. Voici un exemple complet : \once\override Voice.TextScript #'extra-offset = #'(-1.5 . -1.0) la4^\markup{"(" \hspace #0.5 \musicglyph #"scripts.ufermata" \hspace #-1 ")"} Il s'agit d'un point d'orgue placé entre parenthèses. La position du point d'orgue a été ici ajustée avec les paramètres -1.5 horizontalement et -1.0 verticalement.

## Voir aussi
### Dans Wikipédia

* Booléen
* Format de papier
* Point typographique
* Pouce (unité)
Notation spécifique à certains instruments < ↑ > Génération d'un fichier de son