Les mathématiques sont le terrain naturel de LaTeX, mais qu’en est-il des partitions ? Trois voies existent vraiment : MusiXTeX grave les partitions dans TeX lui-même ; LilyPond, graveur séparé de grande qualité, s’intègre avec lilypond-book ; et la notation compacte ABC peut être insérée avec le paquet abc. Cette page explique leur fonctionnement et les critères de choix.
MusiXTeX - graver dans TeX
MusiXTeX est un système de composition musicale construit uniquement avec des macros TeX. Successeur de l’ancien MusicTeX, il dessine portées, têtes de notes, ligatures et liaisons entièrement dans le cadre de TeX. Comme il ne dépend pas d’un programme graphique externe, il convient quand on veut garder toute la chaîne d’outils dans TeX.
Son modèle de traitement est particulier. Pour optimiser l’espacement entre les notes, MusiXTeX fonctionne en trois passes. TeX, en pratique e-TeX, traite d’abord le fichier et écrit .mx1 ; le script Lua fourni musixflx le lit, calcule l’espacement de chaque temps et produit .mx2 ; puis TeX s’exécute une dernière fois pour produire la sortie. Un script enveloppe nommé musixtex orchestre ces trois passages et appelle au besoin les préprocesseurs, comme les frontaux pmx et M-Tx ci-dessous.
musixtex score.tex # runs e-TeX → musixflx → e-TeX, then makes the PDFLes macros MusiXTeX brutes sont réputées difficiles à écrire à la main ; presque personne ne les rédige directement. On passe donc par un frontal de plus haut niveau. pmx est un préprocesseur qui traduit un langage d’entrée bien plus simple en macros MusiXTeX. Pour la musique vocale avec paroles, M-Tx intervient encore avant pmx, donnant la chaîne M-Tx -> pmx -> MusiXTeX. Voici un squelette MusiXTeX minimal ; en pratique, on écrira plutôt une entrée pmx.
\input musixtex
\begin{music}
\instrumentnumber{1}
\setclef{1}{\treble}
\startextract
\Notes \qa{cdef} \en
\Notes \ha{g} \en
\endextract
\end{music}
\endLilyPond et lilypond-book - intégrer un moteur séparé
LilyPond est un graveur de partitions spécialisé, avec son propre langage d’entrée. C’est un programme distinct de TeX, très reconnu pour la qualité de sa gravure. Son entrée ne ressemble pas à celle de MusiXTeX, mais une notation claire donne des résultats au moins aussi soignés. La méthode classique pour l’associer à un document LaTeX est lilypond-book.
Le principe est le suivant : dans un fichier d’extension .lytex, on mélange le texte LaTeX avec des fragments LilyPond. Les courts fragments vont dans \lilypond{...}, les plus longs dans un environnement lilypond, et les fichiers externes via \lilypondfile{...}. En lançant lilypond-book, chaque fragment est rendu par LilyPond en image ou en PDF, puis un fichier .tex ordinaire est écrit, avec des commandes d’inclusion graphique à la place des fragments. On compile ensuite ce fichier normalement, et la partition s’intègre au document.
% --- score.lytex ---
\documentclass{article}
\begin{document}
Here is a short phrase:
\begin{lilypond}[quote,fragment,staffsize=26]
c'4 d' e' f' g'2 g'
\end{lilypond}
\end{document}La construction se fait en deux étapes. On lance d’abord lilypond-book sur le fichier .lytex (avec --pdf pour inclure les fragments en PDF), puis on compile le .tex généré avec pdflatex ou un outil similaire. La largeur de ligne de la musique est ajustée automatiquement à partir de la largeur du texte lue dans le préambule.
lilypond-book --pdf score.lytex # renders snippets, writes score.tex
pdflatex score.tex # compile the generated documentUne option plus moderne est le paquet lyluatex. Conçu pour LuaLaTeX, il évite l’étape de prétraitement de lilypond-book et appelle LilyPond directement pendant la compilation pour générer et inclure les partitions. On écrit la musique dans un environnement lily ou avec \lilypond, puis on lance simplement lualatex avec --shell-escape. Il est présenté comme un sur-ensemble compatible de lilypond-book.
Le paquet abc - notation ABC simple
Le paquet abc insère dans LaTeX la notation ABC, un format musical textuel très compact. ABC privilégie avant tout la lecture et l’écriture par des humains, et sert largement à noter des airs traditionnels et des lead sheets à mélodie seule d’origine ouest-européenne, par exemple irlandaise, anglaise ou écossaise.
Comme lilypond-book, il s’appuie sur un convertisseur externe. La musique écrite dans un environnement abc est transmise par le paquet, via \write18 (exécution du shell), à abcm2ps, qui la rend sous forme d’image de partition ensuite incluse dans le document. Comme cela utilise l’exécution du shell, il faut compiler avec -shell-escape. Il existe aussi l’outil classique abc2mtex, qui convertit de l’ABC ASCII en entrée MusicTeX/MusiXTeX et peut servir de préprocesseur.
\documentclass{article}
\usepackage{abc}
\begin{document}
\begin{abc}
X:1
T:Simple Tune
M:4/4
L:1/8
K:C
CDEF|GABc|
\end{abc}
\end{document}pdflatex -shell-escape tune.tex # abc calls abcm2ps via \write18Que choisir
Comme règle générale : si l’on veut garder la chaîne d’outils dans TeX et produire une gravure élaborée sans en sortir, on choisira MusiXTeX, en pratique via pmx / M-Tx. Si la qualité prime pour des partitions sérieuses, on intègre LilyPond avec lilypond-book, ou lyluatex sous LuaLaTeX. Pour ajouter rapidement des airs traditionnels ou de courtes mélodies monodiques, le paquet abc suffit.
| Approche | Fonctionnement | Idéal pour |
|---|---|---|
MusiXTeX | Gravure par macros TeX (3 passes + pmx / M-Tx) | Rester dans TeX ; gravure élaborée |
LilyPond (lilypond-book) | Rendu par moteur externe -> image/PDF incluse | Partitions sérieuses de très haute qualité |
lyluatex | LuaLaTeX appelle LilyPond pendant la compilation | LilyPond facilement sous LuaLaTeX |
abc | Notation ABC convertie par abcm2ps puis incluse | Airs traditionnels et lead sheets monodiques |
Tous ces outils se trouvent sur CTAN et sont livrés avec les grandes distributions comme TeX Live. LilyPond lui-même, et donc lilypond-book, peut devoir être installé séparément. Notez que abc et lyluatex, qui appellent des programmes externes, exigent -shell-escape pour autoriser l’exécution du shell.