Logiciels libres et enseignement

Favoriser l’usage de logiciels libres et de formats ouverts

Auteurs : L’équipe de développement

Présentation

Lilypond est un logiciel d’écriture musicale différent des logiciels commerciaux classiques par le fait que l’on n’utilise pas la souris pour placer les notes. On écrit celles-ci ainsi que tous les composants de la partition avec un codage, l’ensemble ressemblant à la manipulation du Html ou du Latex. Une compilation est effectuée à partir du code et l’on peut visualiser le résultat.

Les outils de travail : un éditeur, un xterm et un visualiseur de fichiers dvi ou ps sont installés par défaut. Il est donc très facile d’essayer.

Lilypond produit un résultat de très haute qualité à l’impression. Si son fonctionnement semble trop austère à cause de la necessité de saisir du code, une interface graphique permettant un maniement plus aisé est disponible et fonctionnnelle, elle s’appelle denemo, une capture d’écran figure en bas de cette page.

Préparation du travail

Une fois lilypond installé, il faut :

  • vérifier que la librairie Python est bien là elle aussi car la commande de compilation en a besoin.
  • Se procurer le Tutorial du débutant et aussi le manuel de l’utilisateur lilypond.ps.gz. Il en existe une version avec les fichiers de doc de lilypond dans /usr/share/doc/lilypond mais il est préférable de les télécharger sur le site officiel car on dispose alors d’une version plus complète.

Premier essai

Après un peu de lecture du tutorial, on peut créer un fichier essai1.ly dans l’éditeur, et y taper le code ci-dessous :

\header {

 title = Badinerie ;  

 composer = Bach;

}

\include "paper20.ly"

\score {

\notes \relative c'' {

\time 2/4;

\clef violin ;

\key b \minor;

b'8-.\f

d16 b16 |

fis8-. b16 fis16

d8-. fis16 d16 b4\mf fis16 b16 d16 b16

\<cis16( )b16 cis16( )b16 ais16 cis16 e16 \!cis16

}

\paper {

linewidth = 16.0 \cm;

}

}

Les blocs \header ; \include ; \paper sont récurrents dans tous les fichiers, ils permettent la mise en page. La structure musicale est crée par la commande \score qui permet le montage des différents constituants de la partition. L’écriture elle-même est gérée par \notes où l’on trouve les lettres et signes dont l’utilisation est bien décrite dans le tutorial. Une fois le fichier enregistré, on passe dans la fenêtre xterm et l’on se place dans le répertoire contenant ce fichier. La compilation est lancée par la commande :

{{ly2dvi essai1.ly}}

Lilypond se met au travail et détaille les différentes opérations en affichant également les erreurs. On obtient alors un fichier essai1.dvi visualisable. Mais il est plus agréable d’en faire un fichier ps avec la commande :

   {{dvips essai1.dvi -o}}

ce qui crée un fichier essai.ps que l’on visualise :

Remarques :

  • La complétion facilite la répétition de ces commandes lorsque le résultat voulu n’est pas satisfaisant, ou lorsqu’il y a des erreurs.
  • Attention au moindre signe du code, notamment les ; et \ qui sont sources de messages d’erreur.

Deuxième essai

Une chanson avec accompagnement à la guitare par exemple. Voici le code :

\header {

title = "The homes of Donegal";

composer = MacBride;

}

\include "paper20.ly"


melody = \notes \relative c' \sequential{

\time 3/4;

\clef violin;

\key f \major;

c'4 |

a2 a4 g2 f4 g2 a4 f2 d4

}

text = \lyrics {

 I've just stepped in to see  you all,   I'll..

 }


accompaniment = \chords {

 r4 f2 r4 g2-min r4 c2 r4 d2-min  

 }


\score {

\simultaneous {

\context ChordNames \accompaniment

\addlyrics{

\property Staff.automaticMelismata="1"

\melody

}

\context Lyrics \text

}

\paper { linewidth = 16.0 \cm;}

}

La structure s’est enrichie. On construit chaque partie séparément, ici il y a melody ; text ; accompaniment. Chaque partie est gérée par une commande propre, respectivement \notes ; \lyrics ; \chords. La commande \score regroupe le tout avec des commandes de disposition \context ; \addlyrics appelant les noms des différentes parties avec le préfixe }}.

Une fois compilé comme précédemment, on obtient :

Remarques :

  • Attention, les noms des parties peuvent être choisis comme l’on veut mais lilypond n’aime pas les chiffres. text1 aurait renvoyé un message d’erreur.
  • Tous les codes présents sur cette page sont de conception personnelle et par conséquent, pas forcément optimisés, le but recherché étant d’y voir clair !

Troisième essai

Pourquoi pas un accompagnement au piano pour la chanson précédente ? C’est parti !

\header {

title = "The homes of Donegal";

composer = MacBride;

}

\include "paper20.ly"

pianoun =  \notes \relative c'{

\time 3/4;

\clef violin;

\key f \major;

<e4-\mf c'4>|

a2 a4 g2 f4 g2 a4 f2 d4

}


pianodeux= \notes {

\time 3/4;

\clef bass;

\key f \major;

c4 |

f,8()c8 < f4 a4> r4

\stemdown\slurup bes,8(

)f8 <f4 bes4 d'4> r4

c8()g8 <e4 g4 c'4> r4

d4  <f4 a4 d'4> r4

}

\score{

\context PianoStaff \notes <

\context Staff = top <

\context Voice = pianoun \pianoun

>

\context Staff = bottom <

\context Voice = pianodeux \pianodeux

>

>

\paper {linewidth = 16.0 \cm;}

}

Comme précédemment, les deux parties pianoun ; pianodeux que j’aurais pu appeler main gauche et main droite d’ailleurs, sont structurées dans \score avec un environnement spécial Piano Staff. On obtient :

Remarque :

  • Lorsque le code se complique il peut être intéressant d’utiliser le signe de commentaire % pour désactiver certaines parties momentanément.

Quatrième essai

Cette fois, on regroupe le tout :

\header {

title = "The homes of Donegal";

composer = MacBride;

}

\include "paper20.ly"

melody = \notes \relative c' \sequential{

\time 3/4;

\clef violin;

\key f \major;

c'4 |

a2 a4 g2 f4 g2 a4 f2 d4

}


text = \lyrics {

 I've just stepped in to see  you all,   I'll..

 }

accompaniment = \chords {

 r4 f2 r4 g2-min r4 c2 r4 d2-min  

 }

pianoun =  \notes \relative c'{

\time 3/4;

\clef violin;

\key f \major;

<e4-\mf c'4>|

a2 a4 g2 f4 g2 a4 f2 d4

}


pianodeux= \notes {

\time 3/4;

\clef bass;

\key f \major;

c4 |

f,8()c8 < f4 a4> r4

\stemdown\slurup bes,8(

)f8 <f4 bes4 d'4> r4

c8()g8 <e4 g4 c'4> r4

d4  <f4 a4 d'4> r4

}

\score{

 \simultaneous {

\context ChordNames \accompaniment

\addlyrics{

\property Staff.automaticMelismata="1"

\melody

}

\context Lyrics \text

\context PianoStaff \notes <

\context Staff = top <

\context Voice = pianoun \pianoun

>

\context Staff = bottom <

\context Voice = pianodeux \pianodeux

>

>

}

\paper {linewidth = 16.0 \cm;}

}

Pour finir cela donne :

Cinquième essai

Quelque chose de plus exotique, tiré d’une partition pour harpe.

\header {

title = "Essai d'écriture";

composer = Moi;

}

\include "paper16.ly"

ligneun = \notes \relative c' \context Voice = ligneun {

s4 s4

s4 s4

}


motifun = \notes \transpose c''{

\slurdown

d'64  (e' f') s \translator Staff = top \stemdown

\slurup

a'64 (e'' a'') d'' \translator Staff = bottom \stemup

}

motifdeux = \notes \transpose c''{

\slurdown

c'64 (d' e') s \translator Staff = top \stemdown

\slurup

a'64 (e'' a'') d'' \translator Staff = bottom \stemup

}


motifmotif = { [\motifun \motifdeux] }

lignedeux = \notes \relative c' \context Voice = lignedeux {

s4

\stemup \motifmotif

\stemup \motifmotif

\stemup \motifmotif

}

chant = \notes \relative c' \context Voice = chant {

s4

\stemdown [d'8 c8]  [d8 c8] [d8 c8]

}

\score {

\context PianoStaff \notes <

\context Staff = top < \time 4/4;

\context Voice = ligneun \ligneun

>

\context Staff = bottom < \time 4/4; \clef violin;

\context Voice = lignedeux \lignedeux

\context Voice = chant \chant

>

>

\paper {linewidth = 18.0 \cm;}

}

Et l’on obtient :

Prolongement

Lilypond peut faire des choses encore plus compliquées mais alors, il faut être bon en solfège ! On utilisera avec profit l’index du fichier lilypond.ps et aussi tous les fichiers *.ly résidents dans la doc ou sur le site. L’interface graphique denemo pourra aussi être utilisée avec profit, elle permettra d’écouter le résultat sur une sortie MIDI. Ceci est également possible avec le code, en insérant une instruction \midi {} avant l’instruction \paper par exemple.

Bon courage.

Recherche avancée