# LaTeX/Écrire de la musique

LATEX
* Généralités
* Premiers pas
** Installer LaTeX
** Premier exemple
** Lettre
** Éléments de base
** Les classes
** Structuration du texte
** Mise en forme du texte
** Faire des tableaux
** Inclure des images
** Options de mise en forme avancées
** Écrire des mathématiques
** Écrire de la physique
** Écrire des formules chimiques
** Créer une feuille de style
** À l'aide !
* Structure du document
* Gestion de la bibliographie
* Tableaux
* Images
* Éléments flottants
* Mise en forme du texte
* Choix de la police
* Mise en page
* Mathématiques
* Gestion des gros documents
* Faire des présentations
* LaTeX pour enseignants
* Arts et loisirs
** Écrire de la musique
** Dessiner des échiquiers
* Dessiner avec LaTeX
** Dessiner en LaTeX pur
** Dessiner avec PSTricks
** Dessiner avec PGF et TikZ
** Dessiner des molécules
** Réalisation de graphiques mathématiques
* Créer une extension ou une classe
* Programmer avec LaTeX
Annexes
* Vadémécum
* Conversion vers d'autres formats
* Glossaire de typographie
* Index
* Commandes
* Liens externes
Il existe un langage libre et gratuit pour écrire de la musique : LilyPond. Il est assez semblable à LaTeX dans sa forme, et très performant. Avec, vous pouvez créer une partition, avec titre, texte de paroles, commentaires, … et générer :
* un fichier PS et PDF de la partition ;
* un fichier son Midi du morceau ;
* un fichier image, qui peut par la suite être intégré dans un fichier LaTeX.
Nous vous invitons vivement à utiliser LilyPond, d'autant plus que le code LilyPond peut être intégré directement dans le code LaTeX.
Toutefois, avant le développement de LilyPond, une extension fut développée pour permettre d'écrire de la musique avec LaTeX : MusicTeX, remplacée depuis par MusiXTeX. Il peut être plus pratique, pour de courts extraits, d'utiliser MusiXTeX plutôt que d'intégrer une image. Nous allons donc voir quelques fonctionnalités.
Notons toutefois que LilyPond est « orienté musique » : l'auteur a juste à penser au morceau, et écrit les voix séparément (on a une « écriture horizontale »), le programme se charge d'aligner les mesures, et les notes dans les mesures. On a une bonne séparation du fond et de la forme. À l'inverse, MusiXTeX est « orienté typographie » : l'auteur doit penser à la mise en forme, il doit prévoir l'alignement en regroupant ensemble les éléments des différentes voix (on a une « écriture verticale »). Mais comme le font remarquer les auteurs de MusiXTeX, « si cela vous paraît compliqué, rappelez vous que TeX a été conçu pour écrire des textes et non de la musique… » (If this sounds complicated, remember that TeX was designed to typeset text and not music…). Toutefois, le résultat obtenu avec MusiXTeX est irréprochable.

## Mode mathématiques et fonte Text Companion

Le mode mathématiques (introduit, en ligne, par $ … $), permet d'afficher quelques symboles musicaux :
* \flat : bémol $\flat$ ;
* \natural : bécarre $\natural$ ;
* \sharp : dièse $\sharp$.
On remarque au passage que le dièse « ♯ » est différent du croisillon « # », appelé hash sign en anglais (et abréviation de « numéro » dans cette langue).
La fonte Text Companion est incluse dans le codage TS1. On en dispose donc en mettant dans le préambule
On peut alors écrire une croche avec l'instruction \textmusicalnote. On peut obtenir le C barré avec \textcolonmonetary (bien qu'il s'agisse ici d'un symbole monétaire).

## LilyPond

Il existe un wikilivre sur LilyPond. Nous allons ici rappeler quelques généralités.
LilyPond est un projet totalement indépendant de LaTeX. Il doit être téléchargé à part, et les fichiers Lilypond possèdent leur propre compilateur.
Les fichiers LilyPond sont des fichiers texte portant l'extension .ly. Ils sont compilés par le programme lilypond. Le programme est livré avec un éditeur de texte, lilypad.

### Éléments de base

L'élément de base de Lilypond est la phrase musicale, sous la forme :
Les notes sont de la forme hauteur durée, où
* la hauteur est indiquée
** avec la notation anglo-saxonne (c d e f g a b pour do à si),
** la note est diésée en ajoutant is et bémolisée en ajoutant es (cis pour un do dièse),
** on monte d'une octave avec une apostrophe ', et on descend avec une virgule , (par exemple « c' » pour avoir le do une octave au dessus, c, pour une octave en dessous),
** un silence est indiqué par un « r » (rest) ;
* la durée est indiquée
** par un nombre selon la notation habituelle : 1 pour une ronde, 2 pour une blanche, 4 pour une noire, …
** on met un point . derrière pour pointer la durée,
** si l'on n'indique pas la durée, on utilise la même durée que la note précédente.
Par exemple
pour un do noire pointée suivi d'un soupir pointé,
pour le début de J'ai du bon tabac.
Un fichier peut contenir uniquement une ou plusieurs phrases musicales. Toutefois, un fichier contient en général d'autres informations, notamment concernant la mise en forme.

#### Accords et polyphonie

Les notes d'un accord se notent entre deux crochets pointus <…>. La durée se met après. Par exemple :
Lilypond reconnaît également la notation anglo-saxonne des accords, comme par exemple c:m pour do mineur. La durée se met avant le deux-points : c4:m.
Si l'on veut faire figurer deux voix sur la même portée, on met les deux voix entre des doubles crochets <<…>>, et on les sépare par deux contre-obliques :
Si l'on veut avoir plusieurs portées, on utilise :

### Format général

Un fichier .ly est un fichier texte de la forme :
où
* version est le numéro de version de lilypond (permet de faciliter les mises à jour) ;
* titre de l’œuvre et nom du compositeur seront affiché en haut de la page ;
* partition est la description de la musique elle-même.
Si vous voulez juste un petit bout de partition, le plus simple est peut-être de retoucher l'image avec un logiciel, comme par exemple The Gimp, pour extraire la partie qui vous intéresse.
La partition est de la forme :
où
* \new Staff indique une nouvelle portée ;
* \relative indique que l'octave est déterminée par la hauteur de la note précédente ; le c' indique que l'octave de référence est fixée par le do medium ;
* \key c \major indique que l'on est en do majeur ;
* \clef G indique que l'on place une clef de sol ;
* \time 4/4 indique une mesure à ${\begin{matrix}4\\4\end{matrix}}$ (ou C) ;
* \tempo 4 = 60 indique que le tempo est de 60 à la noire (4).
Notons que la déclaration de la tonalité (avec \key) place l'armure d'altérations. Si vous êtes en sol majeur (\key g \major) et que vous mettez fis, l'altération ne s'affichera pas puisqu'elle est à la clef. Si par contre vous mettez f, cela affichera un fa bécarre.

### Compilation

L'éditeur lilypad permet de lancer la compilation :
* avec le menu Compile | Typeset file, — ou bien —
* avec la combinaison de touches Ctrl+R sous Windows, +R sous MacOS X.
On peut également, à partir du gestionnaire de fichiers (Explorateur Windows, Finder de MacOS X, X-Window d'Unix), faire un glisser-lâcher de l'icône du fichier .ly sur l'icône du programme lilypond. On peut enfin utiliser la ligne de commande
Par défaut, Lilypond génère un fichier PostScript (.ps). Les PDF peuvent être intégrés directement dans fichier LaTeX.
Pour que Lilypond génère un fichier d'un format différent, compilez avec les options :
* lilypond --pdf nom_de_fichier pour avoir un PDF ;
* lilypond -f=ps nom_de_fichier pour avoir un PostScriptS ;
* lilypond -f=png nom_de_fichier pour avoir un PNG.
On peut aussi utiliser --format= au lieu de -f=.

### Intégration du code LilyPond dans le code LaTeX

On peut intégrer directement du code LilyPond dans le source LaTeX ; le fichier devra être compilé avec lilypond-book avant d'être compilé par latex.
Le code LilyPond est écrit :
* soit dans un environnement lilypond ;
* soit dans le bloc d'une commande \lilypond{…} ;
* soit dans un fichier extérieur appelé dans le document LaTeX par \lilypondfile{nom_de_fichier}.
Sous MacOS X, le programme lilypond-book est dans le répertoire …/LilyPond.app/Contents/Resources/bin, voir Introduction à LilyPond, Principe général > Programme en ligne de commande.
Voir
* Lilypond-book: Integrating text and music ;
* pour l'utilisation de lilypond-book sous Microsoft Windows 95, 98 et ME : LilyPond sous Cygwin
Une autre possibilité est d'utiliser, avec LuaLaTeX, l'extension LyLuaTeX.

## MusiXTeX

Pour utiliser MusiXTeX, il faut mettre en préambule
Un morceau de musique a la forme générale :
où
* \startextract et \endextract indiquent le début et la fin de la portée ; pour les longs morceaux, on utilise \startpiece et \endpiece ;
* \notes et \enotes indiquent le début et la fin d'une phrase musicale.
Une partition peut contenir plusieurs phrases musicales ; elle sera donc une succession de \notes … \enotes. On peut utiliser \en à la place de \enotes.
Les notes sont indiquées sous la forme \durée hauteur, ou, si plusieurs notes ont la même durée, sous la forme \durée{ hauteur_1 hauteur_2 … hauteur_n }.
Par exemple,
    ou
    désignent un do (c) noire (\qa).
Lors de la compilation, latex crée un fichier .mx1.

### Taille et espacement

La dimension de la musique (taille des notes et des portées) est indiquée par une instruction, placée hors du contexte musical (par exemple en début de document). Par ordre croissant, on a :
* \smallmusicsize ;
* \normalmusicsize ;
* \largemusicsize ;
* \Largemusicsize.
Nous avons ci-dessus parlé de l'instruction \notes, mais il existe plusieurs instructions d'introduction permettant de faire varier l'espacement, par ordre croissant d'espacement :
* \znotes (zero) : pas d'espacement ;
* \notes : recommandé pour l'écriture des double-croches ;
* \notesp (pointed) : recommandé pour l'écriture des double-croches pointées ;
* \Notes : ~ croches ;
* \notesp ;
* \NOtes : ~ noires ;
* \NOtesp ;
* \NOTes : ~ blanches ;
* \NOTesp ;
* \NOTEs : ~ rondes.
On peut rajouter une espace après une note avec \sk.

### Durées

Les durées sont :
* \wh : ronde (whole note) ;
* \ha : blanche, le placement de la queue (haut ou bas) étant laissé à l'appréciation de MusiXTeX (half note automatic) ;
* \qa : noire (quarter note automatic) ;
* \ca : croche (croche automatic) ;
* \cca : double croche ;
* \ccca : triple croche.
On peut forcer l'orientation de la queue en remplaçant le a par
* u pour une hampe vers le haut (up) ;
* l pour une hampe vers le bas (low) ;
par exemple \qu, \cl.
Pour pointer une note, on ajoute p, et pp pour une double pointée. Par exemple, \qap indique une noire pointée.
Les silences sont :
* \pause : pause ;
* \hpause : demi-pause ;
* \soupir ou \qp : soupir ;
* \ds : demi-soupir ;
* \qs : quart de soupir ;
* \hs : huitième de soupir ;
* \qqs : seizième de soupir.
Les silences peuvent aussi être pointés, par exemple \soupirp pour un soupir pointé.

### Hauteur

La notation est basée sur la notation anglo-saxonne pour les notes lagrave à medium, qui sont notées abcdefg. Puis, les notes suivent l'ordre alphabétique : h pour la, i pour si, j pour le do aigu, …
Les notes des octaves inférieures sont notées en capitales : CDEFG pour les notes do à sol les plus graves : le do C est situé à deux lignes supplémentaires sous la portée en clef de fa 4e ligne. On a donc la succession des octaves
On a aussi la possibilité de monter d'une octave avec une apostrophe ', ou de descendre une octave avec un accent grave `. Cette montée ou cette descente sont définitifs. Par exemple, les deux déclarations suivantes sont identiques :
    et
    en effet, le `` initial fait descendre de deux octaves, puis on monte d'une octave à chaque fois.
Pour les altérations il suffit de faire précéder la note par :
* ^ pour un dièse $\sharp$
* = pour un bécarre $\natural$
* _ pour un bémol $\flat$
* > pour un double-dièse
* < pour un double bémol
par exemple :

### Liens entre les notes

Utilisées telles quelles, les « notes à crochet » (croches, double-croches, triples-croches, quadruple-croches) sont écrites séparément. Quand elles se succèdent, on les lie en général par une « barre » située au-dessus ou en-dessous.
Si l'on veut introduire un lien placé au-dessus entre les notes de type croches, on utilise
* \iburef note pente (ibu pour initiate beam up), où
** ref est la référence du lien : c'est un numéro arbitraire qui permet de démêler les différents liens qui s'étalent sur plusieurs \notes … \enotes,
** note est la hauteur de la première note du lien, le lien est placé trois lignes au dessus de cette note,
** pente est la pente du lien, entre -9 (lien descendant) et 9 (lien montant), 0 indiquant un lien horizontal ;
* les notes ont pour durée \qb ref (quarter beam ?), qui place la tête noire et la queue sans placer de crochet ;
* \tburef (terminate beam), qui termine le lien, et se place avant la dernière note.
Pour les notes pointées, on utilise \qbp, et \qbpp pour les doubles-pointées. Pour les notes sans espace (par exemple pour les accords), on utilise le durée \zqb.
Par exemple
Les autres liens sont introduits par :
* ibl (initiate beam low) : croches, lien en dessous ;
* ibbu et ibbl : double-croches ;
* ibbbu et ibbbl : triple-croches ;
* ibbbbu et ibbbbl : quadruple-croches.
On peut faire varier la multiplicité du lien en cours de lien, par exemple pour faire « croche — deux double-croches » :
Les instructions sont :
* pour augmenter la multiplicité du lien :
** \nbburef et \nbblref : lien double (double-croches),
** \nbbburef et \nbbblref : lien triple (triple-croches),
** \nbbbburef et \nbbbblref : lien quadruple (quadruple-croches) ;
* pour diminuer la multiplicité :
** \tbbbburef et \tbbbblref : termine un lien quadruple, qui devient triple ;
** \tbbburef et \tbbblref : termine un lien triple, qui devient double ;
** \tbburef et \tbblref : termine un lien double, qui devient simple.
Si l'on fait varier la multiplicité et que l'on termine le lien en même temps, cela crée un lien multiple partiel. Par exemple, pour faire « croche pointée — double-croche » :
pour faire « double-croche — croche pointée » :
Le \roff sert à décaler la fonction vers la droite (right offset), ce qui permet de donner une longueur non nulle au double-lien initial.

### Triolets, sextuolets et n-uolets

Il faut écrire toutes notes du n-uolet dans la même phrase (\notes…\en), et cette phrase ne doit contenir que ces notes-là.
Pour un triolet, on introduit la phrase par \triolet (avant la première note) ; on indique en argument la hauteur de note à laquelle placer le nombre. Par exemple
indique que le « 3 » sera placé à la note n, soit au niveau du sol aigu.
Pour un sextuolet, on utilise \xtuplet6 suivi de la hauteur de note. On peut en fait mettre n'importe quel nombre après \xtuplet, pour avoir les différents n-uolets.

### Accords

Un accord, c'est en fait déclarer des notes non suivies d'un espace. On utilise donc les durées :
* \zw pour une ronde (zero-spacing whole note) ;
* \zhu ou \zhl pour une blanche ;
* \zqu ou \zql pour une noire ;
* \zcu ou \zcl pour une croche ;
* \zccu, \zcccu ou \zccl, \zcccl pour une double ou triple croche.
Par exemple, pour l'accord parfait de do majeur en noires :
ou
ou
La dernière note doit être une note avec espace, sans quoi la note suivante ferait aussi partie de l'accord, ou alors il faut faire suivre l'accord d'un espace. D'autre part, il ne faut pas d'espace avant la déclaration de durée de la dernière note de l'accord : cet espace provoquerait un décalage de la dernière note vers la droite.
Si l'accord contient des secondes, il est nécessaire de placer une notes de l'autre côté de la hampe. On utilise pour cela :
* \rw (right whole note) : ronde poussée vers la droite ;
* \lw (left whole note) : ronde poussée vers la gauche ;
* \rh et \lh : blanche ;
* \rq et \lq : noire ;

### Phrasé et liaisons

Le principe du phrasé (legato) et de la liaison, parenthèse horizontale, est similaire à celui des liens. On débute un phrasé ou une liaison par
* \islurd ref note (initiate slur down) pour une liaison située en dessous ;
* \isluru ref note (initiate slur up) pour une liaison située au-dessus ;
où
* ref est un nombre permettant de suivre la parenthèse si l'on change de groupe \notes … \enotes ;
* note est la hauteur à laquelle commence le phrasé (en général la première note).
Le phrasé se termine par
    \tslur ref note
où note est la hauteur de fin du phrasé. Par exemple

### Mesures

Le chiffrage de la mesure s'indique avec la fonction
où chiffrage est :
* \meterfrac{a}{b} pour indiquer la mesure a/b ; par exemple \generalmeter{\meterfrac{3}{4}}
* \meterC pour un C (4/4) ;
* \allabreve pour un C barré.
Les barres de mesure sont introduites par la fonction \bar. On peut placer des barres de répétition avec \leftrepeat (début du passage à répéter), \rightrepeat (fin du passage) et \leftrightrepeat (fin d'un passage et début du suivant).
Si l'on veut mettre des notes avant l'indication du chiffrage, on utilise \meterskip ; il prend fin à la première indication \bar.

### Armure

Par défaut, la portée comporte une clef de sol. On peut indiquer une autre clef avec la commande
le « 1 » indique qu'il s'agit de la première (et pour l'instant seule) voix. Le code est un chiffre :
* 0 pour une clef de sol ;
* 1 à 4 pour une clef d'ut 1 à 4 ;
* 5 pour une clef de fa 3 ;
* 6 pour une clef de fa 4.
Les altérations à l'armure s'indiquent par
où n est un entier :
* positif : c'est le nombre de dièses ;
* négatif : c'est le nombre de bémols.
Par exemple, \generalsignature{1} pour un morceau en sol majeur ou mi mineur (un dièse à la clef), \generalsignature{-1} pour un morceau en fa majeur ou ré mineur (un bémol à la clef).

### Indications d'interprétation

Les indications d'interprétation, comme les accents, les ornements et les nuances, sont en général traités comme des durées non suivies d'espace. Par exemple, pour placer un sforzando au dessus de l'emplacement d'un do aigu, on écrit \usf j, suivi de la note sur lequel il est placé.
Les commandes sont :
* accents : les commandes commencent par u (up) si on les met au-dessus de la tête de note et l (low) si on les met en-dessous ; elles commencent par bu (beam up) si on les met au-dessus du lien entre les notes, et par bl (beam low) si on les met en-dessous :
** \upz, \lpz, \bupz et \blpz : pizzicato (·) ;
** \usf, \lsf, \busf et \blsf : sforzando (>) ;
** \ust, \lst, \bust et \blst : staccato (—) ;
** \usfz et \busfz : accent (∧) ;
** \lsfz et \blsfz : accent (∨) ;
* ornements
** \mordent, \Mordent, \shake, \Shake : mordant ;
** \turn, \backturn : gruppetto ;
** \fermataup, \fermatadown, \Fermataup, \Fermatadown : point d'orgue.
Pour indiquer une trille, on place
où h est la hauteur de note où placer l'indication, et l est la longueur en nombre de notes. On peut aussi commencer la trille par \ITrille nh, où n est le numéro de la trille entre 0 et 6 (on peut placer plusieurs trilles si l'on a plusieurs voix), et h est la hauteur de note où placer l'indication ; on termine alors la trille par \TTrille.
Pour mettre des appogiatures, on utilise de petites notes, introduites par \smallnotesize ou \tinynotesize, et conclues par l'indication normalnotesize. Dans le cas d'une note unique sous la forme d'une croche barrée, on utilise \grcu et \grcl.
Les nuances sont \ppp (il piu pianissomo possibile), \pp (pianissimo), \p (piano), \mp (mezzo piano), \mf (mezzo forte), \f (forte), \ff (fortissimo) et \fff (il piu fortissimo possibile). Pour un crescendo ou un decrescendo, on utilise \crescendo{l} et \decrescendo{l}, ou l est la longueur (par exemple n\noteskip pour n notes). Ces signes sont placés par la commande \zcharnote h{texte} où h est la hauteur de note et texte est l'indication.

### Polyphonie

La numérotation des portées et des instruments se fait de bas en haut. La portée n° 1 est celle du bas.
Pour placer plusieurs portées, on débute l'environnement par l'instruction
où n est le nombre d'instruments. Si un instrument utilise plusieurs portées (par exemple le piano), on précise
où i est le numéro de l'instrument, et m est le nombre de portées. Puis, on indique les noms des instruments, avec l'instruction
où i est le numéro de l'instrument. Si les noms sont longs, ils peuvent empiéter sur le début de la portée ou l'accolade qui réunit plusieurs portées. Pour éviter ceci, on peut augmenter l'alinéa avec
par exemple \parindent 10mm.
Puis, on découpe le morceau phrase par phrase — une phrase étant en général une portion de mesure choisi en fonction de l'alignement —, en séparant les instruments par un code>& :
s'il y a un instrument avec deux portées, on les sépare par un tube |, par exemple :

#### Exemple

donne :
Par comparaison, voici le code Lilypond et le résultat :

### Paroles

MusiXTeX ne gère pas très bien l'alignement des paroles avec les notes. Il est recommandé de faire appel pour cela à l'extension musiclyr. Toutefois, MusiXTeX dispose tout de même des fonctions héritées de MusicTeX, avec lequel l'alignement était correct. Le problème est que les caractères — leur chasse et leur approche — ne sont pas étirables ou contractables alors que la largeur et l'espacement des notes peut varier.
La première chose consiste à réserver de la place verticale. Pour cela, on utilise
qui crée un « interinstrument » au dessus de l'instrument n. La longueur peut être indiquée par i\Interligne pour avoir i fois l'interligne. Par exemple,
pour avoir les paroles entre le 2e et le 3e instrument.
Pour placer les paroles syllabe par syllabe, on utilise \zsong{syllabe } juste avant la note. Pour bien gérer l'empilement vertical, on mettra une seule syllabe par \notes … \enotes, par exemple
La commande \zsong place les paroles à la droite de la notre. On peut aussi utiliser \csong pour centrer, et \lsong pour les placer à gauche.
On peut ajuster la hauteur à laquelle est écrit le texte avec \setsongraise n{longueur} où n est le numéro de l'instrument concerné.
Pour régler les problèmes d'espacement, on peut utiliser les différents espacements (\notes, \Notes, \NOtes, …) ou bien faire calculer la taille du texte et réserver cette place pour la note avec :
où
* \hardlyrics{texte} calcule la largeur du texte et met celui-ci dans la variable \thelyrics ;
* il faut impérativement utiliser \notes et pas une autre commande ;
* \hsong{…} met le texte dans un boîte \hbox.

### Placer du texte au-dessus des portées

Pour placer du texte au-dessus des portées, on utilise \uptext. Cela peut être un commentaire, mais aussi une indication comme \textit{tr} pour la trille.
Rappelons la commande \znotes … \enotes permet de ne pas provoquer d'espacement et donc de ne pas poser de problème d'alignement ; on peut alors faire
Certains symboles sont placés en indiquant la note après ; par exemple, en clef de sol, pour placer le symbole au dessus de la portée, on peut utiliser la note m (fa) :
* \segno m pour le signe de répétition ;
* \coda m pour le ballon de coda.

## Notation ABC

La notation ABC permet de réaliser des partitions de musique sans logiciels dédiés, à l'aide d'un simple traitement de texte.
On peut intégrer facilement cette notation dans un document LaTeX à l'aide du package abc appelé dans le préambule :

#### Exemple minimal

La compilation se fait avec l'option latex -shell-escape, par exemple avec TeXmaker ou alors en enchaînant les commandes suivantes :

## Autres extensions

L'extension gchords permet de dessiner des diagrammes d'accord pour guitare.
Il est également possible d'utiliser gregorio qui est l'équivalent de lilypond pour le chant grégorien.

## Voir aussi

* http://icking-music-archive.org/software/musixtex/musixdoc.pdf

## Références

* ↑ le terme anglais est eighth note, mais MusiXTeX utilise l'acronyme français