Introduction à LilyPond/Structure du fichier

Un livre de Wikilivres.
2. Structure du fichier

Un fichier LilyPond est donc un fichier texte. Prenons un exemple minimal et complet.

Exemple minimal complet[modifier | modifier le wikicode]

Voici un petit programme LilyPond :

\version "2.18.2" % necessary for upgrading to future LilyPond versions.

\paper{ make-footer=##f }

\header {
  title = "Petit exemple"
  composer = "moi-même"
}

\score {
  <<
    \new Staff \with {instrumentName = "Soprano" midiInstrument = "voice oohs"} \relative c''{
      \clef "G"
      \key c \major
      \tempo "Adagio" 4 = 60
      \time 2/4

      c4</span> r
      d ( b )
      c2 \bar"|."
    }
    \new Staff \with {instrumentName = "Alto" midiInstrument = "choir aahs"} \relative c' {
      \clef "G"
      \key c \major

      r4 c (
      g' d )
      c2
    }
  >>

  \layout {}
  \midi {}
}

Le résultat est le suivant :

Petit exemple.

Explications[modifier | modifier le wikicode]

Le fichier contient deux parties : l'en-tête et la partition. La partition contient des portées.

En-tête[modifier | modifier le wikicode]

L'en-tête est le début du fichier. Il contient les éléments suivants :

  1. \version "2.18.2" : indique la version de LilyPond pour laquelle le fichier a été écrit. Cela permet de voir s'il faut modifier le fichier lorsque l'on utilise une autre version de LilyPond. Le texte situé après le signe pourcent % est un commentaire : ce texte n'est pas interprété par LilyPond.
  2. \paper {} : donne des informations sur la page que l'on va utiliser ; ici, l'instruction make-footer=##f indique qu'il ne faut pas créer de pied de page (footer).
  3. \header {} : décrit l'en-tête de la partition, c'est-à-dire ce qui est écrit en haut de page. La variable title permet de définir le titre de la partition et la variable composer définit le nom du compositeur ou de la compositrice.

Partition[modifier | modifier le wikicode]

La partition est contenue dans le contexte (l'environnement) \score{}.

Puis vient la construction <<…>> : il indique que l'on va superposer deux objets, ici deux portées qui vont former un système.

Chaque portée est contenue dans un contexte \new Staff {}.

La partition se conclut par les instructions :

  • \layout {} : indique qu'il faut créer un fichier PDF de la partition (pour la lecture sur écran et l'impression) ;
  • \midi {} : indique qu'il faut créer un fichier midi (pour écouter le résultat).

La structure globale d'une partition avec des systèmes de deux portées est donc :

\score{
  <<
    \new Staff {}
    \new Staff {}
  >>
  \layout {}
  \midi {}
}

Portée[modifier | modifier le wikicode]

Chaque portée est donc créée par une commande \new Staff. Cette commande est suivie d'un contexte \with{} qui permet d'indiquer des caractéristiques de la portée. Ici, nous définissons les variables :

  • instrumentName : définit le nom de l'instrument qui est écrit devant la portée ;
  • midiInstrument : définit l'instrument qui est utilisé dans le fichier midi, le timbre avec lequel la portée sera jouée.

Le contenu de la portée lui-même est contenu dans un contexte \relative {} qui indique la manière dont la hauteur des notes est gérée. Cet contexte indique que LilyPond va chercher la note la plus proche. Il faut donc indiquer la note de référence pour le début de la portée, sous la forme c' (do grave en clef de sol) ou bien c'' (do aigu en clef de sol).

La portée elle-même comporte un en-tête :

  • \clef indique la clef utilisée, ici la clef de sol (la lettre « G » désigne le sol en notation anglo-saxonne) ;
  • \key indique l'armure, ici do majeur (c \major) ;
  • \tempo indique, ici 60 à la noire (le chiffre 4 désigne la noire, il y a quatre noires dans une ronde) ;
  • \time indique le chiffrage de la mesure.

Le tempo et le chiffrage de la mesure ne sont pas repris pour la deuxième portée puisqu'ils sont identiques.

Vient ensuite la liste des notes de la portée :

  • c4 indique un do noire : la lettre « C » désigne le do en notation anglo-saxonne et le chiffre 4 indique une noire ; les notes suivantes étant aussi des noires, on n'indique pas la durée ;
  • c2 indique un do blanche (il y a deux blanches dans une ronde) ;
  • r4 indique un soupir : un silence (rest) de la durée d'une noire (4) ;
  • les parenthèses indiquent le phrasé ; la parenthèse ouvrante ( se met après la première note du phrasé et la parenthèse fermante ) se met après la dernière note du phrasé ;
  • la commande \bar indique que l'on place une barre de mesure particulière, ici une barre de fin de morceau ("|.") ;
  • les autres barres de mesure sont placées automatiquement par LilyPond.

La structure d'une portée est donc :

\new Staff \with{ [informations sur la portée] } \relative [note de référence] {
  \clef [clef]
  \key [tonalité]
  \tempo [durée] = [pulsation]
  \time [chiffrage de la mesure]

[notes et indications]
}

Autre types d'éléments d'une partition[modifier | modifier le wikicode]

Une partition (score) peut contenir d'autres éléments que des portées (staff). Par exemple, pour une partition de chant accompagnée à la guitare, on peut avoir :

  • un contexte \chords pour les accords en notation « musique populaire » (par exemple « C » pour l'accord de do majeur) ;
  • un contexte Staff pour la mélodie ;
  • un contexte \addlyrics pour les paroles ;
  • un autre contexte TabStaff pour les tablatures de guitare.

La partition aurait donc la structure :

\score{
  <<
    \chords {}
    \new Staff {}
    \addlyrics {}
    \new TabStaff {}
  >>
  \layout {}
  \midi {}
}

Par exemple :

\score{
  <<
    \chords { \set chordChanges = ##t % les accords identiques qui se suivent ne sont pas répétés
      c4 g c2
    }
    
    \new Staff \with{ instrumentName = "Chant" } \relative c'' {
      \clef "G"
      \tempo 4 = 100
      \key c \major

      c4 d e c
    }
    
    \addlyrics {
      Frè -- re Jac -- ques
    }
    
    \new TabStaff {
      <e, c e g c' e'>4 <g, b, d g b g'> <e, c e g c' e'>2
    }
  >>
  \layout {}
  \midi {}
}

Voix au sein d'une portée[modifier | modifier le wikicode]

Une portée peut avoir plusieurs voix : les mélodies jouées par deux instruments sont représentées sur la même portée, ou bien les mélodies jouées par deux mains (piano, harpe…). Une voix est un contexte Voice. Une portée peut alors avoir la structure suivante :

\new Staff \with { [informations sur la portée] } \relative [note de référence] {
  \clef [clef]
  \key [tonalité]
  \tempo [durée] = [pulsation]
  \time [chiffrage de la mesure]
  <<
    \new Voice {
      [notes et indications]
      \bar "|."
    }
    \new Voice {
      [notes et indications]
    }
  >>
}

Par exemple :

\new Staff \with { instrumentName = "Chant" } \relative c'' {
  \clef "G"
  \key c \major
  \tempo 4 = 60
  \time 4/4
  <<
    \new Voice {
      c2 d
      e c
      \bar "|."
    }
    \new Voice {
      c,2 g'
      c1,
    }
  >>
}

Création automatique[modifier | modifier le wikicode]

Pour les partitions simples, LilyPond crée automatiquement les contextes. Par exemple, si on se contente d'écrire des notes, LilyPond crée automatiquement un contexte Score contenant un contexte Staff contenant un contexte Voice contenant les notes.

De fait, dans la suite du wikilivre, les éléments de structure de fichier, les contextes, seront d'abord « oubliés » puis introduits au fur et à mersure, selon les besoins.


Principe général < > La hauteur des notes